第二十一天 慵懒的投射在JDBC上的暖阳 —Hibernate的使用(三)

           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版本中过期,用上面的方法替代了。

   

   


你可能感兴趣的:(eclipse,xml,Hibernate,数据库,jdbc)