Hibernate核心原理解析

本文详细解析了Hibernate的核心加载配置文件过程,包括创建SessionFactory、配置属性加载和不同加载方式。同时,深入探讨了Hibernate如何初始化连接池,涉及到ConnectionProvider的选择和配置,以及Session获取数据库连接的两种方式。
摘要由CSDN通过智能技术生成

1.核心类加载配置文件

1.创建SessionFactory

 Configuration接口的作用是对Hibernate进行配置 以及对他进行启动 在Hibernate的启动过程中 Configuration类的实例首先定位映射文档的位置 读取这些配置 然后创建一个SessionFactory对象
    一个org.hibernate.cfg.Configuration实例代表了一个应用程序中Java类型到SQL数据库映射的完整集合。Configuration被用来构建一个不可变的SessionFactory,映射定义则由不同的XML映射定义文件编译而来。
   Configuration有以下几个方面的操作函数
 
1  为Configuration指定映射文件
你可以直接实例化Configuration来获取一个实例 并为他指定XML映射定义文件 如果映射定义文件在类路径中 请使用addResource()
  1. Configuration cfg = new Configuration().addResource("com/demo/hibernate/beans/User.hbm.xml");

 

2  为Configuration指定持久化类

一个替代的方法是指定被映射的类 让Hibernate帮你寻找映射定义文件

 

  1. Configuration cfg = new Configuration().addClass(com.demo.hibernate.beans.User.class);

Hibernate将会在类路径中需找名字为 /com/demo/hibernate/beans/User.hbm.xml 映射定义文件 消除了任何对文件名的硬编译

3  为Configuration指定配置属性

Configuration也允许指定配置属性

  1. Configuration cfg =new Configuration().addClass(com.demo.hibernate.beans.User.class)
  2. .setProperty("hibernate.dialect","org.hibernate.dialect.MySQLInnoDBDialect")
  3. .setProperty("hibernate.connection.datasource","java:comp/env/jdbc/test")
  4. .setProperty("hibernate.order_update","true");

 

4  Configuration的三种加载方式

在Hibernate的启动与开发流程中 要使用一个Configuration 需要为他设置三个方面的内容

数据库连接属性

hbm.xml文件

POJO类

其中 第二个和第三个只需要设置一个 就会自动需找另一个 因为这两者只需一个

第一种方式是使用hibernate.cfg.xml 该文件设置了数据库连接的属性和hbm.xml映射文件配置 hibernate会自动加载该配置属性 并自动找到POJO 因此要取得Configuration对象 只需要简单的创建改对象即可

  1. Configuration cfg = new Configuration()
  2. cfg.configuration("hibernate.cfg.xml");

第二种方式是通过hibernate.properties  省略 

第三种方式是完全在构造时进行硬编码设置 设置过程如下所示

  1. Configuration cfg =new Configuration()
  2. .addClass(com.demo.hibernate.beans.User.class)
  3. .setProperty("hibernate.dialect","org.hibernate.dialect.MySQLInnoDBDialect")
  4. .setProperty("hibernate.connection.datasource","java:comp/env/jdbc/test")
  5. .setProperty("hibernate.order_update","true");

 

第一种方式是我们最常用的方式


2.Hibernate加载基本的配置信息源码浅析

我们在获取SessionFactory的时候,第一个语句就是:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. Configuration configuration = new Configuration();  
查看源码可知,Configuration类的公共构造方法只有一个,并且是无参数的:
[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public Configuration() {  
  2.     thisnew SettingsFactory() );  
  3. }  
这个构造方法调用了一个受保护的构造方法:
[html]  view plain copy print
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值