⑴ 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==");
}
}