关于Hibernate创建SessionFactory对象的说明

2024-04-11 22:48

本文主要是介绍关于Hibernate创建SessionFactory对象的说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、加载hibernate的相关jar包(通过maven)

  1、通过maven来管理jar包,可以通过下列网址来搜索你想要的获取maven的坐标。

        http://mvnrepository.com/

       如加载hiberante的坐标为

      

	<dependencies><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.2.3.Final</version></dependency></dependencies>

 二、获取SessionFactory对象

    1、在4.0版本之前获取该对象的方法为:

        默认情况下Hibernate会去classPath下加载hibernate.cfg.xml文件,如果你没有采用默认的配置文件名,那么你就需要在configurate()方法里面带上你      的配置文件名,如temp.xml。注意路径正确

                Configuration configuration = new Configuration().configure();SessionFactory sessionFactory = configuration.buildSessionFactory();

 

    2、Hibernate4.0之后引入的新特性,Service Register机制。其配置情况如下:

   StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder();  ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();  SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

 

         但是在4.1之后的版本中,StandardServiceRegistryBuilder又被取消了,取而带之的做法是

        Configuration configiguration = new Configuration().configure();  ServiceRegistryBuilder builder = new ServiceRegistryBuilder().applySettings(configiguration.getProperties());  ServiceRegistry registry = builder.buildServiceRegistry();   factory = configiguration.buildSessionFactory(registry);

 

  三、Service Register 机制

   1、ServiceRegistry 是 Service 的注册表, 它为Service提供了一个统一的加载 / 初始化 / 存放 / 获取机制. 

       首先看整个类图:

   整个 ServiceRegistry 结构和我们大家了解的 Classloader 的代理结构类似, 只不过和 Classloader 的首先代理给父节点,父节点找不到再从本级的 Classloader 中查找的策     略不同,ServiceRegistry 是先从本级节点查找,找不到再去父亲中查找。

可以看到hibernate里面的 ServiceRegistry实际上是由三层(范围)组成的:
----------------------BootstrapServiceRegistry:【主要包括全局都要使用的基础服务】
主要提供 Classloading 和 Service loading 服务, 供全局使用.
----------------------ServiceRegistry:【主要包括在 BootstrapServiceRegistry 之上的, 和Hibernate 相关的服务, 例如配置文件解析, JDBC, JNDI 等】
标准的ServiceRegistry, 同样服务于全局, 在初始化这个Registry中的服务的时候,可能需要使用到BootstrapServiceRegistry中的服务.
----------------------SessionFactoryServiceRegistry:【是和sessionfactory相关的了, 包括2LC的region factory, event listener等.】
于SessionFactory相关联(一对一的关系), 这里面的Services在初始化的时候需要访问SessionFactory.

这里面的层级关系, 对于 service registry的client来说是完全透明的, 你可以直接调用getService 去获取你需要的service, 而不用去关心你在哪个层级上, 如同 classloader.

 

 四、Hibernate中获取的Service包括什么?

Service 就是一个功能,它由一个接口(Service Role)和一个实现类组成.
Service 而这次在新版本中,是通过把这些服务的提供者(类),给抽取成一个个的Service,从而可以用统一的方式进行访问/加载/初始化等.
下图列出了所有的Hibernate中内置的Services, 详细介绍请参考:

转自:https://blog.csdn.net/u010150082/article/details/9527355

这篇关于关于Hibernate创建SessionFactory对象的说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/895381

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Python创建Excel的4种方式小结

《Python创建Excel的4种方式小结》这篇文章主要为大家详细介绍了Python中创建Excel的4种常见方式,文中的示例代码简洁易懂,具有一定的参考价值,感兴趣的小伙伴可以学习一下... 目录库的安装代码1——pandas代码2——openpyxl代码3——xlsxwriterwww.cppcns.c

Spring Boot Actuator使用说明

《SpringBootActuator使用说明》SpringBootActuator是一个用于监控和管理SpringBoot应用程序的强大工具,通过引入依赖并配置,可以启用默认的监控接口,... 目录项目里引入下面这个依赖使用场景总结说明:本文介绍Spring Boot Actuator的使用,关于Spri

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

MySQL分表自动化创建的实现方案

《MySQL分表自动化创建的实现方案》在数据库应用场景中,随着数据量的不断增长,单表存储数据可能会面临性能瓶颈,例如查询、插入、更新等操作的效率会逐渐降低,分表是一种有效的优化策略,它将数据分散存储在... 目录一、项目目的二、实现过程(一)mysql 事件调度器结合存储过程方式1. 开启事件调度器2. 创

mysql外键创建不成功/失效如何处理

《mysql外键创建不成功/失效如何处理》文章介绍了在MySQL5.5.40版本中,创建带有外键约束的`stu`和`grade`表时遇到的问题,发现`grade`表的`id`字段没有随着`studen... 当前mysql版本:SELECT VERSION();结果为:5.5.40。在复习mysql外键约

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser