本文目錄一覽:
- 1、用java 實現 h2數據庫和mysql數據庫實時數據同步
- 2、如何將H2數據庫數據轉存到MYSQL數據庫中?
- 3、h2 內存數據庫-如果將這個mysql的語句轉換成h2的
- 4、h2console怎麼加載數據庫
- 5、什麼是H2數據庫
- 6、hibernate連接h2數據庫配置怎麼寫
用java 實現 h2數據庫和mysql數據庫實時數據同步
1、h2數據庫你寫一個dao類(例如:insert方法),mysql也寫一個mydao類(例如:insertmysql()),
當往h2數據庫執行插入的時候 new dao().inser(sql);
new mydao().insertmysql(sql);
2、也可以直接到數據庫操作寫存儲過程和游標自動同步。
3、使用第三方插件。有很多這樣子的平台做企業數據一體化的
如何將H2數據庫數據轉存到MYSQL數據庫中?
這裡面有一些具體的問題,比如說是否只同步新增的數據,要同步的表是否只有少數幾個,要同步的表中是否有類似於自增字段這種東西等等。
最簡單的情況下,只同步新增數據,只同步少數幾個表,並且表中都有自增ID,那你只需要php定時執行,參照網頁鏈接
然後每次定時執行時,讀mysql表中的最後一個id(這個id要跟你的h2的自增id一樣),然後根據這個到h2表中去讀出大於這個id的一個固定記錄數的記錄,比如一次讀5000或1萬條,然後批量插入mysql就行了
h2 內存數據庫-如果將這個mysql的語句轉換成h2的
上一句和下一句sql語句。沒有分號。 CREATE TABLE `20110131_admin` ( `loginName` varchar(60) default NULL, `password` varchar(60) default NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into `20110131_admin`(`loginName`,`password`) values (‘admin’,’admin’); 這樣就可以了。
h2console怎麼加載數據庫
1.1、搭建JavaWeb測試項目
創建一個【H2DBTest】JavaWeb項目,找到H2數據庫的jar文件,如下圖所示:
H2數據庫就一個jar文件,這個Jar文件裡面包含了使用JDBC方式連接H2數據庫時使用的驅動類,將”h2-1.4.183.jar”加入到【H2DBTest】項目中,如下圖所示:
二、啟動H2數據庫
既然是要將H2數據庫作為我們Web應用的一部分嵌入進來,那麼我們就要在Web應用中啟動H2數據庫的服務,這樣我們才能夠連接到H2數據庫,因此我們可以編寫一個專門用於啟動H2數據庫服務的監聽器(Listener)
什麼是H2數據庫
H2是Thomas Mueller提供的一個開源的、純java實現的關係數據庫。
H2是一個開源的嵌入式數據庫引擎,採用java語言編寫,不受平台的限制,同時H2提供了一個十分方便的web控制台用於操作和管理數據庫內容。H2還提供兼容模式,可以兼容一些主流的數據庫,因此採用H2作為開發期的數據庫非常方便。
H2最大的用途在於可以同應用程序打包在一起發布,這樣可以非常方便地存儲少量結構化數據。
它的另一個用途是用於單元測試。啟動速度快,而且可以關閉持久化功能,每一個用例執行完隨即還原到初始狀態。
H2的第三個用處是作為緩存,作為NoSQL的一個補充。當某些場景下數據模型必須為關係型,可以拿它當Memcached使,作為後端MySQL/Oracle的一個緩衝層,緩存一些不經常變化但需要頻繁訪問的數據,比如字典表、權限表。不過這樣系統架構就會比較複雜了。
擴展資料:
H2數據庫運行方式:
1、內存模式
數據庫只在內存中運行,關閉連接後數據庫將被清空,適合測試環境,連接字符串:jdbc:h2:mem:DBName;DB_CLOSE_DELAY=-1,如果不指定DBName,則以私有方式啟動,只允許一個連接。
2、嵌入式
數據庫持久化存儲為單個文件。連接字符串:jdbc:h2:file:~/.h2/DBName;AUTO_SERVER=TRUE。~/.h2/DBName表示數據庫文件的存儲位置,如果第一次連接則會自動創建數據庫。
3、服務模式
H2支持三種服務模式:web server:此種運行方式支持使用瀏覽器訪問H2 Console。
CP server:支持客戶端/服務器端的連接方式。
PG server:支持PostgreSQL客戶端。
參考資料:百度百科-H2
hibernate連接h2數據庫配置怎麼寫
大家可以參考下這個網站
1.先啟動項目上的h2/bin下的h2.bat或h2w.bat文件,把h2數據庫啟動起來
2.SSH2框架和h2數據庫整合方法
2.1先在數據庫下創建 schema目錄(相當於一個數據庫實例)
create schema fdrkftcode
目的是解決這種異常 org.h2.jdbc.JdbcSQLException: Schema “fdrkftcode” not found; …
2.2在schema目錄下創建表,如創建系統用戶表admin
create table fdrkftcode.admin(
id int primary key,
adminname varchar(50),
username varchar(50),
userpwd varchar(50),
adminrights varchar(50),
createdate datetime,
usedtimes int,
lastlogin datetime,
curstatus int,
remark varchar(200)
)
3.為了使用hibernate操作h2,需要作如下設置,在sql編輯窗口輸入下面這些腳本
對於實體pojo對象的映射,我是用的annotation,關鍵是id主鍵的映射,如下:
@Column(name = “ID”, nullable = false)
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = “ABC_ID_SEQ”)
@SequenceGenerator(name = “ABC_ID_SEQ”, sequenceName = “ABC_ID_SEQ”)
protected Long id;
注意這裡的GeneratedValue和SequenceGenerator的使用,這屬於JPA規範,全部來自javax.persisten
4.配置applicationContext.xml文件,主要有三個地方要注意:
4.1修改連接數據庫的JDBC驅動 driverClass的值為org.h2.Driver
4.2修改連接數據庫所用的URL字符串 jdbcUrl的值為jdbc:h2:tcp://localhost/~/FDRKFTCODE;MODE=MySQL;AUTO_SERVER=TRUE
4.3修改Hibernate的數據庫方言hibernate.dialect為org.hibernate.dialect.H2Dialect
5.h2數據庫一些常用操作
5.1幫助命令help
5.2表中某字段重命名 ALTER TABLE fdrkftcode.admin ALTER COLUMN usepwd rename to userpwd
5.3表中新增字段 ALTER TABLE fdrkftcode.admin ADD IF NOT EXISTS abc varchar(50)
5.4表中刪除字段 ALTER TABLE fdrkftcode.admin DROP COLUMN IF EXISTS abc
5.5查找表中記錄 SELECT * from fdrkftcode.admin
5.6往表中插入記錄 INSERT INTO fdrkftcode.admin VALUES (1,’管理員’,’admin’,’admin’,’10000000000000000000′,’2013-05-1 00:12:34′,3,’2013-05-1 15:32:57′,1,’超過級管理員’)
5.7修改表中某記錄 UPDATE fdrkftcode.admin SET fdrkftcode.admin.adminname=’超級管理員’ where fdrkftcode.admin.id=1
5.8刪除表中某記錄 DELETE FROM fdrkftcode.admin WHERE fdrkftcode.admin.id=1
6.下面是我項目的applicationContext.xml配置方法,大家可以參考下
?xml version=”1.0″ encoding=”UTF-8″?
beans
xmlns=””
xmlns:xsi=””
xmlns:p=””
xsi:schemaLocation=” ”
!– 定義使用C3P0連接池的數據源 —
bean id=”dataSource” class=”com.mchange.v2.c3p0.ComboPooledDataSource”
!– 指定連接數據庫的JDBC驅動 —
property name=”driverClass”
valueorg.h2.Driver/value
/property
!– 連接數據庫所用的URL —
property name=”jdbcUrl”
valuejdbc:h2:tcp://localhost/~/FDRKFTCODE;MODE=MySQL;AUTO_SERVER=TRUE/value
/property
!– 連接數據庫的用戶名 —
property name=”user”
valuesa/value
/property
!– 連接數據庫的密碼 —
property name=”password”
value/value
/property
!– 設置數據庫連接池的最大連接數 —
property name=”maxPoolSize”
value50/value
/property
!– 設置數據庫連接池的最小連接數 —
property name=”minPoolSize”
value5/value
/property
!– 設置數據庫連接池的初始化連接數 —
property name=”initialPoolSize”
value5/value
/property
!– 設置數據庫連接池的連接的最大空閑時間,單位為秒 —
property name=”maxIdleTime”
value20/value
/property
/bean
!– 定義Hibernate的SessionFactory —
bean id=”sessionFactory” class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”
!– 依賴注入上面定義的數據源dataSource —
property name=”dataSource” ref=”dataSource”/
!– 註冊Hibernate的ORM映射文件 —
property name=”mappingResources”
list
valuecom/sungoal/ORM/Admin.hbm.xml/value
/list
/property
!– 設置Hibernate的相關屬性 —
property name=”hibernateProperties”
props
!– 設置Hibernate的數據庫方言 —
prop key=”hibernate.dialect”org.hibernate.dialect.H2Dialect/prop
!– 設置Hibernate是否在控制台輸出SQL語句,開發調試階段通常設為true —
prop key=”show_sql”true/prop
!– 設置Hibernate一個提交批次中的最大SQL語句數 —
prop key=”hibernate.jdbc.batch_size”50/prop
/props
/property
/bean
!–定義Hibernate的事務管理器HibernateTransactionManager —
bean id=”transactionManager” class=”org.springframework.orm.hibernate3.HibernateTransactionManager”
!– 依賴注入上面定義的sessionFactory —
property name=”sessionFactory” ref=”sessionFactory”/
/bean
!– 裝配通用數據庫訪問類BaseDAOImpl —
bean id=”dao” class=”com.sungoal.DAO.BaseDAOImpl”
!– 依賴注入上面定義的sessionFactory —
property name=”sessionFactory” ref=”sessionFactory”/
/bean
!– 部署系統用戶管理業務控制器AdminAction —
bean id=”adminAction” class=”com.sungoal.struts.action.AdminAction” scope=”prototype”
property name=”dao” ref=”dao”/
/bean
/beans
原創文章,作者:GP7WV,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/127521.html