使用软件:
JDK1.6.0_12, Eclipse 3.4.0, Mysql 5.1.7, Hibernate 3.3.1
在Eclipse中新建项目TestHibernate,除了默认添加的JRE系统库外,添加相关类库,包括:
1、Mysql的类库
mysql-connector-java-5.1.7-bin.jar
2、Hibernate的类库
hibernate3.jar
3、Hibernate的必须类库
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
javassist-3.4.GA.jar
jta-1.1.jar
slf4j-api-1.5.6.jar(Hibernate 3.3.1自带的为slf4j-api-1.5.2.jar,我换成了最新的slf4j-api-1.5.6.jar)
4、slf4j所需的log类库
slf4j-simple-1.5.6.jar(需要和上面slf4j-api-1.5.6.jar版本相同,也可以替换成同版本号的其它log类库)
网上有人说要把Hibernate中log4j.properties解压缩出来,复制到项目src目录下,具体原文件位置参考下面结构
hibernate-distribution-3.3.1.GA-dist.zip/hibernate-distribution-3.3.1.GA/project/etc
但经过测验,在我使用的环境下不需要,复制了也没看出影响。
数据库添加test表,三个字段
id,integer,primary key,自增量
name,varchar(20)
age,interger
Hibernate synchronizer 插件已经装好了
项目右键-新建-其它-Hibernate-Hibernate Configuration File
1、container 指定到项目的src目录
2、Database Type:选择MySql
3、Driver Class 设置为com.mysql.jdbc.Driver
4、Database URL 设置为jdbc:mysql://localhost/test (要具体到表名,奇怪)
5、其余默认
点击完成生成hibernate.cfg.xml
不知道为啥,hibernate.cfg.xml生成就缺一部分,在开头复制粘贴上
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
保存并关闭
项目右键-新建-其它-Hibernate-Hibernate Mapping File
1、container 指定到项目的src目录
2、输入密码,点击Refresh,Tables框里出现test表,选中前面的勾
3、package 指定test表生成的对应数据类将要放置的包位置,和该配置文件本身位置无关
4、选项切换到Properties,ID Generator默认是Sequesce,这是不行的,改成org.hibernate.id.IdentityGenerator
5、其余默认
点击完成生成Test.hbm.xml
选中Test.hbm.xml,右键-Hibernate synchronizer-Synchronize Files(以后就是Synchronize And Overwrite),系统自动生成了src/org/testhibernate/Test.java和src/org/testhibernate/base/BaseTest.java。
项目右键-新建-类,创建一个类src/org/testhibernate/TestHibernate.java
代码如下:
package org.testhibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class TestHibernate {
Configuration configuration;
SessionFactory sessionFactory;
Session session;
public void saveTest(Test test) {
// 实例化Configuration
configuration = new Configuration().configure();
// 实例化SessionFactory
sessionFactory = configuration.buildSessionFactory();
// 实例化Session
session = sessionFactory.openSession();
// 开始事务
Transaction tx = session.beginTransaction();
// 增加新闻
session.save(test);
// 提交事务
tx.commit();
// 关闭Session
session.close();
}
/**
* @param args
*/
public static void main(String[] args) {
Test n = new Test();
n.setName("aaa");
n.setAge(29);
TestHibernate th = new TestHibernate();
th.saveTest(n);
}
}
保存并运行TestHibernate.java,正常结束,检查Mysql数据库,test表增加了一条记录