不同版本Hibernate.获取SessionFactory的方式


 

不同版本Hibernate.获取SessionFactory的方式

Hibernate 版本说明:

  我当前使用的是 Hibernate 5.x ,(hibernate-release-5.3.6.Final.zip),从官网下载的。解压zip压缩包,包中有一个文件夹是:required ,将其下的所有jar包全部导入到工程中。并添加mysql-connector-xxx.jar包。

   hibernate-release-5.3.6.Final/lib/required/中的jar包

  

 

 

  项目工程中的lib

  

 

  HibernateUtil.java 

 1 package com.charles.hibernate.util;
 2 
 3 import org.hibernate.SessionFactory;
 4 import org.hibernate.boot.MetadataSources;
 5 import org.hibernate.boot.registry.StandardServiceRegistry;
 6 import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
 7 import org.hibernate.cfg.Configuration;
 8 
 9 /**
10  * <p>Type: HibernateUtil</p>
11  * <p>Description: Hibernate工具类.</p>
12  * @author baitang.<gy03554>
13  * @date 2018年10月16日 上午12:37:58
14  * @version v1.0.0
15  */
16 public class HibernateUtil {
17 
18     // 配置文件的位置
19     private static final String CONFIGURE_XML = "hibernate.cfg.xml";
20 
21     /**
22      * Hibernate 3.x 获取SessionFactory方式.
23      * @return SessionFactory
24      */
25     private static SessionFactory buildHibernate3SessionFactory() {
26 
27         // 1). 创建 Configuration 对象: 对应 hibernate 的基本配置信息和 对象关系映射信息
28         Configuration configuration = new Configuration().configure(CONFIGURE_XML);
29 
30         return configuration.buildSessionFactory();
31     }
32 
33     /**
34      * Hibernate 4.x 获取SessionFactory方式
35      * @return SessionFactory
36      */
37     private static SessionFactory buildHibernate4SessionFactory() {
38 
39         // 1). 创建 Configuration 对象: 对应 hibernate 的基本配置信息和 对象关系映射信息
40         Configuration configuration = new Configuration().configure(CONFIGURE_XML);
41 
42         // 2). 创建一个 ServiceRegistry 对象: hibernate 4.x 新添加的对象
43         // hibernate 的任何配置和服务都需要在该对象中注册后才能有效.
44 //        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties())
45 //                .buildServiceRegistry();
46 //        return configuration.buildSessionFactory(serviceRegistry);
47 
48         return configuration.buildSessionFactory();
49         
50     }
51     
52     /**
53      * Hibernate 5.x 获取SessionFactory方式
54      * @return SessionFactory
55      */
56     private static SessionFactory buildHibernate5SessionFactory() {
57         
58         // A SessionFactory is set up once for an application!
59         final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
60                 .configure(CONFIGURE_XML) // configures settings from hibernate.cfg.xml
61                 .build();
62         try {
63             return new MetadataSources( registry ).buildMetadata().buildSessionFactory();
64         }
65         catch (Exception e) {
66             // The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory
67             // so destroy it manually.
68             StandardServiceRegistryBuilder.destroy( registry );
69         }
70         return null;
71     }
72 
73     /**
74      * 获取SessionFactory方法
75      * @param sessionVersion Hibernate的版本号(取值为:3,4,5)
76      * @return SessionFactory
77      */
78     public synchronized static SessionFactory getSessionFactory(int sessionVersion) {
79 
80         if (3 == sessionVersion) {
81             
82             return buildHibernate3SessionFactory();
83         } else if (4 == sessionVersion) {
84             
85             return buildHibernate4SessionFactory();
86         } else if (5 == sessionVersion) {
87             
88             return buildHibernate5SessionFactory();
89         }
90         return null;
91     }
92 
93 }

 

 如有问题,欢迎纠正!!!

 如有转载,请标明源处:https://www.cnblogs.com/Charles-Yuan/p/9795688.html

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM