hibernate的版本更新很快,獲取sessionFactory的方式也在變化
1.通用的方式:
public SessionFactory test1(){ Configuration cfg = new Configuration().configure("hibernate.cfg.xml"); SessionFactory sessionFactory = cfg.buildSessionFactory(); return sessionFactory; }
這種方式是最早的方式,在以前不支持注解.直到 3.6.0.Final 這個版本才開始支持注解的方式.到 4.0.0.Final 過時
2.annotation
public SessionFactory test2(){ Configuration cfg = new org.hibernate.cfg.AnnotationConfiguration().configure("hibernate.cfg.xml"); SessionFactory sessionFactory = cfg.buildSessionFactory(); return sessionFactory; }
自有annotation出現以來,hibernate先使用這種方式支持注解.到 3.6.0.Final 過時了.也就是方式一開始支持注解.到 4.3.0.Final 這個版本的時候,
org.hibernate.cfg.AnnotationConfiguration 整個類都不存在了.也就是徹底取消了這種方式.3.service的方式
public SessionFactory test3(){ Configuration cfg = new Configuration().configure("hibernate.cfg.xml"); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getPRoperties()).buildServiceRegistry(); SessionFactory sessionFactory = cfg.buildSessionFactory(serviceRegistry); return sessionFactory; }
這種使用方法經歷3個大版本 4.0.x.Final 4.1.x.Final 4.2.x.Final 如果想在4.3.0.Final 繼續使用過時的方法,ServiceRegistryBuilder 下已經沒有buildServiceRegistry()這個方法了,使用 build() 代替
4.service2
Configuration cfg = new Configuration().configure("hibernate.cfg.xml"); ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build(); SessionFactory sessionFactory = cfg.buildSessionFactory(serviceRegistry); return sessionFactory;
在最新的4.3.x.Final中使用,5的版本還沒出ga,目前測試版也是使用的這種方式.
注:
hibernate3.4之前的版本都是使用cglib(cglib 2.1.3, asm 1.5.3 ,asm-attr 1.5.3)的方式進行代理從3.4(包含3.4)開始使用javassist進行代理
新聞熱點
疑難解答