hibernate的Configuration和配置文件
一、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和配置文件相关推荐
- hibernate之Configuration对象
任务:读取主配置信息 1. Configuration config = new Configuration(); 使用hibernate,但并没有读取 2. config.config ...
- hibernate的Configuration类和SessionFactory接口
1,Configuration类的主要作用是解析Hibernate的配置文件和映射文件中的信息,即负责管理Hibernate的配置信息.Hibernate在运行时需要获取一些底层实现的基本信息,如数据 ...
- Eclipse安装Hibernate插件快速生成配置文件
Eclipse安装Hibernate插件快速生成配置文件 插件链接: http://pan.baidu.com/s/1mi3KVtI 密码: kmjg 1.安装插件: 1.在eclipse顶部窗口he ...
- How to use Hibernate - XML Configuration
使用Hibernate进行开发时,有两种方式,一种是使用XML配置,这是比较传统的方式.另一种是使用注解,这是JPA标准所支持的.今天介绍得是使用XML配置的方式使用Hibernate.具体使用方式如 ...
- Hibernate -- hibernate.cfg.xml 核心配置文件
2019独角兽企业重金招聘Python工程师标准>>> <?xml version="1.0" encoding="UTF-8"?> ...
- hibernate中*.hbm.xml配置文件的各种映射关系配置方法(多对一,多对多)
多对一: 多个用户对应一个部门,是多对一的关系,要在多方配,即在用户的hbm.xml文件中配 <many-to-one name="department" class=&qu ...
- Hibernate学习笔记--映射配置文件详解
参考资料: http://blog.163.com/hzd_love/blog/static/13199988120108265317988/ http://www.cnblogs.com/often ...
- hibernate 链接mysql数据库配置文件,hibernate数据库连接文件(MySql)
hibernate数据库(MySql)连接文件,测试时用的是MySql数据库 文件名为:hibernate.cfg.xml -------------------------------------- ...
- Hibernate中hibernate.cfg.xml核心配置文件配置
<property>行为标签,name需要操作的对象 //dialect表示数据库的方言,例org.hibernate.dialect.MySQLDialect <property ...
最新文章
- mysql plsql 循环_PL/SQL for...loop循环语句
- 为什么让A.I.“顶天立地”需要6个多月?
- Python创建删除文件(或文件夹)
- 华为上机考试题系列(二):HJ107求解立方根
- CodeForces - 1109A Sasha and a Bit of Relax(思维+异或和,好题)
- 前端学习(2877):原生js模块化+绘制弹幕与动画video联动
- 手机海报模板,收藏就对了!
- Sublime Text SFTP 注册码
- 用Lucene[1].net对数据库建立索引及搜索+
- hbase java客户端_【HBase教程】(八)HBase JAVA 客户端API使用
- Opencl入门Demo
- 重拾Java基础知识:网络编程
- 再传捷报!人大金仓获2022年中国信创产业拳头奖“最佳数据库品牌”大奖
- MyBatis源码简单分析
- WebP支持:超乎你想象
- 北京工作居住证续签收紧_收紧网站的安全带:HTTP安全标题
- IT知识图谱(只是从CSDN中把图片,一个个下载了)
- matlab 平面相交,使用matlab画相交的平面
- 基于SpringBoot大学生心理健康咨询管理系统的分析与设计
- pandas读取前几行数据_使用实现pandas读取csv文件指定的前几行
热门文章
- [C++11]通过using定义基础类型和函数指针别名
- safari浏览器的使用tips
- java继承层次结构,在状态模式中实现继承层次结构 - java
- 线性代数---向量问题的求解方法
- java gt_JAVA泛型知识--gt; lt;? extends Tgt;和lt;? super Tgt;
- 模型压缩案例-SSDYou only look once
- Spring boot——起步依赖
- 牛客练习赛50 F tokitsukaze and Another Protoss and Zerg
- 反向图——dj算法(判断从起点 开始有没有第二条路径能到达)Gym 102501K
- Loj#6039-「雅礼集训 2017 Day5」珠宝【四边形不等式,dp】