一、hibernate的入口Configuration

在Hibernate中,Configuration是hibernate的入口。在实例化一个Configuration的时候,Hibernate会自动在环境变量(classpath)里面查找Hibernate配置文件hibernate.properties。如果该文件存在,则将该文件的内容加载到一个Properties的实例GLOBAL_PROPERTIES里面,如果不存在,将打印信息hibernate.properties not found;

接下来Hibernate将所有系统环境变量(System.getProperties())也添加到GLOBAL_PROPERTIES里面。如果配置文件hibernate.properties存在,系统还会进一步验证这个文件配置的有效性,对于一些已经不支持的配置参数,系统将打印出警告信息。

默认状态下configure()方法会自动在环境变量(classpath)下面寻找Hibernate配置文件hibernate.cfg.xml,如果该文件不存在,系统会打印如下信息并抛出HibernateException异常: hibernate.cfg.xml not found;如果该文件存在,configure()方法会首先访问<session-factory>,并获取该元素name的属性,如果name的属性非空,将用这个配置的值来覆盖hibernate.properties的hibernate.session_factory_name的配置的值,从这里我们可以看出,hibernate.cfg.xml里面的配置信息可以覆盖hibernate.properties的配置信息。

二、Configuration常用操作函数

(1)使用Hibernate配置文件

1、  Configuration 指定映射文件

Configuration cfg=new Configuration().configure("/hibernate.cfg.xml");
         或者Configuration cfg=new Configuration().configure("/hibernate.properties");

2、Configuration指定映射文件
         cfg.addResource("test/User.hbm.xml");

3、Configuration指定POJO类,User.hbm.xml根User.java一个目录
         cfg.addClass(test.Order.class);

(2) Configuration指定Hibernate配置属性(无配置文件,加载了配置文件就不能使用这个方法)

Configuration cfg = new Configuration()
           .addClass(test.User.class)
           .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
           .setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/test")
           .setProperty("hibernate.order_updates", "true");

(3) SessionFactory

1、单个 SessionFactory实例

SessionFactory sessions = cfg.buildSessionFactory();

当所有映射定义被 Configuration 解析后,应用程序必须获得一个用于构造org.hibernate.Session 实例的工厂SessionFactory。这个工厂将被应用程序的所有线程共享,线程安全的全局对象,只需要被实例化一次。单例模式。

2、Hibernate 允许应用程序创建多个SessionFactory 实例

用xml配置来配置多个数据库的话,那就写多个配置文件。

对应两个数据库(一个是MySQL,一个是SQLServer),可以把其xml文件定义为“mysql.cfg.xml” 和 “sqlserver.cfg.xml”。

Configuration类获取SessionFactory的代码如下:

SessionFactory mysqlFactory = new Configuration().configure("/mysql.cfg.xml").buildSessionFactory(); 
       SessionFactory sqlserverFactory = new Configuration().configure("/sqlserver.cfg.xml ").buildSessionFactory();

三、Hibernate配置参数详解

1、Hibernate JDBC 属性

属性名

用途

hibernate.connection.driver_class

JDBC driver class

hibernate.connection.url

JDBC URL

hibernate.connection.username

database user

hibernate.connection.password

数据库用户密码

hibernate.connection.pool_size

maximum number of pooled connections

2、Hibernate 数据源属性

属性名

用途

hibernate.connection.datasource

数据源 JNDI 名字

hibernate.jndi.url JNDI

提供者的 URL(可选)

hibernate.jndi.class JNDI

InitialContextFactory 类(可选)

hibernate.connection.username

数据库用户(可选)

hibernate.connection.password

数据库密码(可选)

3、可选的配置属性

有大量属性能用来控制 Hibernate 在运行期的行为。它们都是可选的,并拥有适当的默认值。

属性名

用途

可选值

()内为默认

hibernate.dialect

允许 Hibernate 针对特定的关系数据库生成优化的SQL 的 org.hibernate.dialect.Dialect 的类名。

例如:org.hibernate.dialect.MySQLDialect

hibernate.show_sql

输出所有 SQL 语句到控制台。

true|false

(false)

hibernate.format_sql

在 log 和 console 中打印出更漂亮的 SQL。

true|false

(false)

hibernate.default_catalog

在生成的 SQL 中,将给定的 catalog 附加于非全限定名的表名上

hibernate.session_factory_name

org.hibernate.SessionFactory 创建后,将自动使用这个名字绑定到 JNDI 中。

hibernate.max_fetch_depth

为单向关联(一对一,多对一)的外连接抓取(outer join fetch)树设置最大深度。

0到3

hibernate.default_batch_fetch_size

为 Hibernate 关联的批量抓取设置默认数量。

4、8、16

hibernate.default_entity_mode

为由这个 SessionFactory 打开的所有 Session指定默认的实体表现模式。

dynamic-map,dom4j,pojo

hibernate.order_updates

强制 Hibernate 按照被更新数据的主键,为SQL 更新排序。这么做将减少在高并发系统中事务的死锁。

true|false

hibernate.generate_statistics

如果开启,Hibernate 将收集有助于性能调节的统计数据。

true|false

hibernate.use_identifier_rollback

如果开启,在对象被删除时生成的标识属性将被重设为默认值。

true|false

hibernate.use_sql_comments

如果开启,Hibernate 将在 SQL 中生成有助于调试的注释信息,默认值为 false。

true|false

(false)

hibernate的Configuration和配置文件相关推荐

  1. hibernate之Configuration对象

    任务:读取主配置信息 1.  Configuration config = new Configuration();      使用hibernate,但并没有读取 2.  config.config ...

  2. hibernate的Configuration类和SessionFactory接口

    1,Configuration类的主要作用是解析Hibernate的配置文件和映射文件中的信息,即负责管理Hibernate的配置信息.Hibernate在运行时需要获取一些底层实现的基本信息,如数据 ...

  3. Eclipse安装Hibernate插件快速生成配置文件

    Eclipse安装Hibernate插件快速生成配置文件 插件链接: http://pan.baidu.com/s/1mi3KVtI 密码: kmjg 1.安装插件: 1.在eclipse顶部窗口he ...

  4. How to use Hibernate - XML Configuration

    使用Hibernate进行开发时,有两种方式,一种是使用XML配置,这是比较传统的方式.另一种是使用注解,这是JPA标准所支持的.今天介绍得是使用XML配置的方式使用Hibernate.具体使用方式如 ...

  5. Hibernate -- hibernate.cfg.xml 核心配置文件

    2019独角兽企业重金招聘Python工程师标准>>> <?xml version="1.0" encoding="UTF-8"?> ...

  6. hibernate中*.hbm.xml配置文件的各种映射关系配置方法(多对一,多对多)

    多对一: 多个用户对应一个部门,是多对一的关系,要在多方配,即在用户的hbm.xml文件中配 <many-to-one name="department" class=&qu ...

  7. Hibernate学习笔记--映射配置文件详解

    参考资料: http://blog.163.com/hzd_love/blog/static/13199988120108265317988/ http://www.cnblogs.com/often ...

  8. hibernate 链接mysql数据库配置文件,hibernate数据库连接文件(MySql)

    hibernate数据库(MySql)连接文件,测试时用的是MySql数据库 文件名为:hibernate.cfg.xml -------------------------------------- ...

  9. Hibernate中hibernate.cfg.xml核心配置文件配置

    <property>行为标签,name需要操作的对象 //dialect表示数据库的方言,例org.hibernate.dialect.MySQLDialect <property ...

最新文章

  1. mysql plsql 循环_PL/SQL for...loop循环语句
  2. 为什么让A.I.“顶天立地”需要6个多月?
  3. Python创建删除文件(或文件夹)
  4. 华为上机考试题系列(二):HJ107求解立方根
  5. CodeForces - 1109A Sasha and a Bit of Relax(思维+异或和,好题)
  6. 前端学习(2877):原生js模块化+绘制弹幕与动画video联动
  7. 手机海报模板,收藏就对了!
  8. Sublime Text SFTP 注册码
  9. 用Lucene[1].net对数据库建立索引及搜索+
  10. hbase java客户端_【HBase教程】(八)HBase JAVA 客户端API使用
  11. Opencl入门Demo
  12. 重拾Java基础知识:网络编程
  13. 再传捷报!人大金仓获2022年中国信创产业拳头奖“最佳数据库品牌”大奖
  14. MyBatis源码简单分析
  15. WebP支持:超乎你想象
  16. 北京工作居住证续签收紧_收紧网站的安全带:HTTP安全标题
  17. IT知识图谱(只是从CSDN中把图片,一个个下载了)
  18. matlab 平面相交,使用matlab画相交的平面
  19. 基于SpringBoot大学生心理健康咨询管理系统的分析与设计
  20. pandas读取前几行数据_使用实现pandas读取csv文件指定的前几行

热门文章

  1. [C++11]通过using定义基础类型和函数指针别名
  2. safari浏览器的使用tips
  3. java继承层次结构,在状态模式中实现继承层次结构 - java
  4. 线性代数---向量问题的求解方法
  5. java gt_JAVA泛型知识--gt; lt;? extends Tgt;和lt;? super Tgt;
  6. 模型压缩案例-SSDYou only look once
  7. Spring boot——起步依赖
  8. 牛客练习赛50 F tokitsukaze and Another Protoss and Zerg
  9. 反向图——dj算法(判断从起点 开始有没有第二条路径能到达)Gym 102501K
  10. Loj#6039-「雅礼集训 2017 Day5」珠宝【四边形不等式,dp】