hibernate的Configuration和配置文件
来源:互联网 发布:web starter kit 源码 编辑:程序博客网 时间:2024/05/18 07:52
一、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和配置文件
- 浅谈Hibernate的Configuration和SessionFactiory
- HiberNate 中 conFiguration 和 sessionFactory 的作用
- hibernate的Configuration类和SessionFactory接口
- hibernate 的Configuration类
- hibernate的Configuration类
- 配置文件对象 configuration 的使用
- 9.26 Hibernate 中 AnnotationConfiguration 和 Configuration 之间的关系
- Hibernate常用的接口和类Configuration&SessionFactory(三)
- Hibernate joined-subclass和subclass的配置文件
- Hibernate配置文件的详解和优化
- Hibernate的配置文件和映射文件详解
- Hibernate中Configuration的作用
- 注解@Configuration和配置文件中<util:properties>
- Configuration是怎么加载配置文件的
- 读取NET2.0的配置文件例子-configuration
- 关于keil MDK 的配置文件Configuration Wizard
- 接口 Closeable
- 接口 DataInput
- 接口 DataOutput
- Servlet之javaweb应用(二)
- Servlet之Tomcat配置与启动(一)
- hibernate的Configuration和配置文件
- Hibernate之映射
- Java的系统Property
- List转数组toArray方法
- Util包中Arrays
- java生成UUID通用唯一识别码
- java中Date
- java中Date与DateFormat的格式输出
- FileDescriptor的作用