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(); } } }