5月31日,多云。节分端午自谁言,万古传闻为屈原。堪笑楚江空渺渺,不能洗得直臣冤。
看过Hibernate的3.6.10的的示例,本节使用hibernate 4.3.5这个版本,比较4.X和3.X版本的差异。
同样,把上上一篇需要改写的步骤罗列,其余配置不变。
2、建立Java Project( 使用hibernate4.3.5)
使用Eclipse新建一个名为HibernateApp03的工程,把下载的hibernate-release-4.3.5.Final.zip解压。Add to Build Path—将如下依赖的jar包加入工程依赖中,包括:
\hibernate-release-4.3.5.Final\lib\required下的所有jar包
mysql-connector-java-5.0.8\mysql-connector-java-5.0.8-bin.jar
8、运行结果
查看数据库userinfo表中已经增加一条记录。
可以看出,使用hibernate4.3.5完全可以运行Hibernate3.6.10的程序。但是,会发现在测试类HibTest.java里面的Configuration中的buildSessionFactory()方法加上了过时的划线!
hibernate3.x的做法是:
首先,创建Configuration对象,主要方式是:new Configuration().configure()。默认情况下Hibernate会去classPath下加载hibernate.cfg.xml文件,如果你没有采用默认的配置文件名,那么你就需要在configurate()方法里面带上你的配置文件名,如abc.xml。注意路径正确。
接着,就是创建SessionFacotry. 那么在以前的版本中,通常我们创建的方式是:configure.buildSessionFactory(); 但是在hibernate 4.x之后的版本中,这种方式已经不被推荐了,那么官方推荐的做法是什么呢?
StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder();
ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();
SessionFactory sf = configuration.buildSessionFactory(serviceRegistry);
7、修改测试类HibTest.java
package edu.eurasia.hib;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
public class HibTest {
public static void main(String[] args) {
/*SessionFactory sessions = new Configuration().configure()
.buildSessionFactory();*/
Configuration cfg = new Configuration();
cfg.configure();//读取配置文件
StandardServiceRegistryBuilder srb = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties());
StandardServiceRegistry sr = srb.build();
SessionFactory factory = cfg.buildSessionFactory(sr);
Session session = factory.openSession();
Transaction tx = null;
try {
// 开始事务
tx = session.beginTransaction();
// 给对象设定值
UserInfo u = new UserInfo();
u.setUsername("张三丰");
u.setPassword("123456");
System.out.println("开始插入数据到数据库……");
// 保存数据到数据库
session.save(u);
// 结束事务
tx.commit();
tx = null;
System.out.println("恭喜你,第一个hibernate程序运行成功!");
} catch (HibernateException e) {
e.printStackTrace();
if (tx != null) {
tx.rollback();
}
} finally {
session.close();
}
}
}
同理,hibernate4.3.5使用注释配置更为简单,上一篇的内容不变,只把测试类HibTest.java改为上面的即可。 因为AnnotationConfiguration在hibernate 4.x版本中过期,用上面的方法替代了。