⑴ hibernate連接h2資料庫配置怎麼寫
大家可以參考下這個網站http://eoffice.im.fju.e.tw/phpbb/viewtopic.php?p=28685
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="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- 定義使用C3P0連接池的數據源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 指定連接資料庫的JDBC驅動 -->
<property name="driverClass">
<value>org.h2.Driver</value>
</property>
<!-- 連接資料庫所用的URL -->
<property name="jdbcUrl">
<value>jdbc:h2:tcp://localhost/~/FDRKFTCODE;MODE=MySQL;AUTO_SERVER=TRUE</value>
</property>
<!-- 連接資料庫的用戶名 -->
<property name="user">
<value>sa</value>
</property>
<!-- 連接資料庫的密碼 -->
<property name="password">
<value></value>
</property>
<!-- 設置資料庫連接池的最大連接數 -->
<property name="maxPoolSize">
<value>50</value>
</property>
<!-- 設置資料庫連接池的最小連接數 -->
<property name="minPoolSize">
<value>5</value>
</property>
<!-- 設置資料庫連接池的初始化連接數 -->
<property name="initialPoolSize">
<value>5</value>
</property>
<!-- 設置資料庫連接池的連接的最大空閑時間,單位為秒 -->
<property name="maxIdleTime">
<value>20</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>
<value>com/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="" 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="" ref=""/>
</bean>
</beans>
⑵ h2資料庫中如何導出數據啊請知道朋友的不吝指教。
數據的導出:
² 導出到Access:
在導出數據之前,如果要導出的是剛才導入的表,請確認由excel導入的數據表中多餘的列要刪除!!!
(1)打開SQL Server管理平台,右擊伺服器圖標,從彈出的快捷菜單中選擇「所有任務→導出數據」選項,則會出現數據轉換服務導入和導出向導對話框,它顯示了導出向導所能完成的操作。
(2)單擊「下一步」按鈕,就會出現選擇導出數據的數據源對話框。這里在數據源欄中選擇「Microsoft OLE DB Provider for SQL Server」選項,然後選擇身份驗證模式以及資料庫的名稱。
(3)單擊「下一步」按鈕,則會出現選擇目的對話框。
(4)選定目標資料庫後,單擊「下一步」按鈕,則出現指定表復制或查詢對話框。
(5)單擊「下一步」按鈕,則出現選擇源表和視圖對話框。其中可以選定將源資料庫中的哪些表格或視圖復制到目標資料庫中,只需單擊表格名稱左邊的復選框,即可選定或者取消刪除復制該表格或視圖。單擊「編輯…」按鈕,就會出現列映射對話框。
(6)選定某個表格後,單擊「預覽」按鈕,就會出現查看數據對話框,在該對話框中可以預覽表格內的數據。單擊「下一步」按鈕,則會出現「保存並執行包」對話框。在該對話框中,可以設定立即執行還是保存包以備以後執行。
(7)單擊「下一步」按鈕,就會出現導出向導結束對話框。
⑶ h2創建資料庫語句
h2創建資料庫語句如下:
CREATE TABLE TEST AS SELECT * FROM CSVREAD('test.csv');//csv文件數據創建test表 CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255)) AS SELECT * FROM CSVREAD('test.csv');/創建test表,csv文件相應的列插入到test表相應的欄位
H2資料庫介紹
常用的開源資料庫:H2,Derby,HSQLDB,MySQL,PostgreSQL。其中H2,HSQLDB類似,十分適合作為嵌入式資料庫使用,其它的資料庫大部分都需要安裝獨立的客戶端和伺服器端。
H2的優勢:
1、h2採用純Java編寫,因此不受平台的限制。
2、h2隻有一個jar文件,十分適合作為嵌入式資料庫試用。
3、性能和功能的優勢
H2比HSQLDB的最大的優勢就是h2提供了一個十分方便的web控制台用於操作和管理資料庫內容,這點比起HSQLDB的swing和awt控制台實在好用多了。
⑷ 如何訪問gerrit的h2資料庫
訪問gerrit的h2資料庫步驟:
1、從 https://code.google.com/p/gerrit/downloads/list 頁面下載gerrit的war包到某個目錄
2、資料庫准備,懶得設置用了默認的H2 DB
3、創建gerrit2用戶,初始化
sudo adser gerrit2
sudo su gerrit2
java -jar gerrit.war init -d /home/gerrit2/site
一些互動式提問,默認或自定義,同樣懶得設置apache,認證用了 development_become_any_account 選項,反向代理沒有;
設置完成就自動啟動了~; 如果沒有啟動手動 ./site/bin/gerrit.sh start
4、創建標准 後台服務連接
sudo ln -snf `pwd`/site/bin/gerrit.sh /etc/init.d/gerrit.sh
sudo ln -snf ../init.d/gerrit.sh /etc/rc3.d/S110gerrit
sudo ln -snf ../init.d/gerrit.sh /etc/rc5.d/S110gerrit
5、登陸http://10.20.20.XX:9080,頁面右上角點擊become :
注冊用戶 fullname emailaddress name ssh公鑰(.ssh/id_rsa.pub)設置保存,
設置保存後,在客戶端驗證一下,命令及輸出如下:
[$name@$hostname ~]$ ssh -p 29418 [email protected]
**** Welcome to Gerrit Code Review ****
Hi $fullname, you have successfully connected over SSH.
Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:
git clone ssh://$name@$hostName.$domainname:29418/REPOSITORY_NAME.git
Connection to 10.20.20.XX closed.
6、從gerrit伺服器,clone代碼工
git clone ssh://[email protected]:29418/$repoName.git
7、進入項目目錄cd $repoName 安裝hook; 鉤子的目的是在提交信息中自動創建 'Change-Id:' 標簽
scp -p -P 29418 [email protected]:hooks/commit-msg .git/hooks/
8、修改提交
9、push 到gerrit伺服器
git push origin HEAD:refs/for/$branchName
#直接git push會失敗,原因還不知道~~ ~~
10、push成功後web頁面All->open和My->changes標簽下面,就可以看到提交的修改了
11、web的review沒有approve選項,需要在project的accecss中增加相應許可權; 還有後面的verify許可權也是類似操作;
⑸ 怎麼遠程訪問H2資料庫的內存模式
簡單來說就是用jdbc:h2:mem:h2db來建立內存模式,並建表,
然後jdbc:h2:tcp://192.168.20.141:8082/mem:h2db來訪問上面的內存資料庫
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.h2.tools.Server;
public class H2Demo {
private Server server;
private String port = "8082";
private static String sourceURL1 = "jdbc:h2:mem:h2db";
private static String sourceURL2 = "jdbc:h2:tcp://192.168.20.141:8082/mem:h2db";
private String user = "shorturl";
private String password = "123456";
public void startServer() {
try {
System.out.println("正在啟動h2...");
server = Server.createTcpServer(
new String[] { "-tcpPort", port }).start();
} catch (SQLException e) {
System.out.println("啟動h2出錯:" + e.toString());
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
}
public void stopServer() {
if (server != null) {
System.out.println("正在關閉h2...");
server.stop();
System.out.println("關閉成功.");
}
}
public void useH2() {
try {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection(sourceURL1,user, password);
Statement stat = conn.createStatement();
// insert data
stat.execute("CREATE MEMORY Table TEST(NAME VARCHAR)");
stat.execute("INSERT INTO TEST VALUES('Hello World')");
//stat.execute("delete mappedURL");
// use data
ResultSet result = stat.executeQuery("select name from test ");
int i = 1;
while (result.next()) {
System.out.println(i++ + ":" + result.getString("name"));
}
result.close();
stat.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void useH2i() {
try {
Class.forName("org.h2.Driver");
//Connection conn = DriverManager.getConnection("jdbc:h2:" + dbDir+";AUTO_SERVER=TRUE;MVCC=TRUE",user, password);
Connection conn = DriverManager.getConnection(sourceURL2,user, password);
Statement stat = conn.createStatement();
// use data
ResultSet result = stat.executeQuery("select name from test");
⑹ h2資料庫在linux伺服器怎麼使用
簡單來說就是用jdbc:h2:mem:h2db來建立內存模式,並建表, 然後jdbc:h2:tcp://192.168.20.141:8082/mem:h2db來訪問上面的內存資料庫 package test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; imp...
⑺ 用java 實現 h2資料庫和mysql資料庫實時數據同步
1、h2資料庫你寫一個類(例如:insert方法),mysql也寫一個my類(例如:insertmysql()),
當往h2資料庫執行插入的時候 new ().inser(sql);
new my().insertmysql(sql);
2、也可以直接到資料庫操作寫存儲過程和游標自動同步。
3、使用第三方插件。有很多這樣子的平台做企業數據一體化的
⑻ 什麼是H2資料庫
H2是Thomas Mueller提供的一個開源的、純java實現的關系資料庫。
H2是一個開源的嵌入式資料庫引擎,採用java語言編寫,不受平台的限制,同時H2提供了一個十分方便的web控制台用於操作和管理資料庫內容。H2還提供兼容模式,可以兼容一些主流的資料庫,因此採用H2作為開發期的資料庫非常方便。
H2最大的用途在於可以同應用程序打包在一起發布,這樣可以非常方便地存儲少量結構化數據。
它的另一個用途是用於單元測試。啟動速度快,而且可以關閉持久化功能,每一個用例執行完隨即還原到初始狀態。
H2的第三個用處是作為緩存,作為NoSQL的一個補充。當某些場景下數據模型必須為關系型,可以拿它當Memcached使,作為後端MySQL/Oracle的一個緩沖層,緩存一些不經常變化但需要頻繁訪問的數據,比如字典表、許可權表。不過這樣系統架構就會比較復雜了。
(8)h2資料庫命令擴展閱讀:
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客戶端。
⑼ 如何用Java程序啟動H2資料庫(完整代碼)
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.h2.tools.Server;
public class H2Demo {
private Server server;
private String port = "9094";
private String dbDir = "./h2db/sample";
private String user = "zhoujiang";
private String password = "123456";
public void startServer() {
try {
System.out.println("正在啟動h2...");
server = Server.createTcpServer(
new String[] { "-tcpPort", port }).start();
} catch (SQLException e) {
System.out.println("啟動h2出錯:" + e.toString());
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
}
public void stopServer() {
if (server != null) {
System.out.println("正在關閉h2...");
server.stop();
System.out.println("關閉成功.");
}
}
public void useH2() {
try {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:" + dbDir,
user, password);
Statement stat = conn.createStatement();
// insert data
stat.execute("CREATE TABLE TEST(NAME VARCHAR)");
stat.execute("INSERT INTO TEST VALUES('Hello World')");
// use data
ResultSet result = stat.executeQuery("select name from test ");
int i = 1;
while (result.next()) {
System.out.println(i++ + ":" + result.getString("name"));
}
result.close();
stat.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
H2Demo h2 = new H2Demo();
h2.startServer();
h2.useH2();
h2.stopServer();
System.out.println("==END==");
}
}