hibernate4 mysql配置文件_Hibernate配置文件详解

Hibernate配置方式

Hibernate给人的感受是灵活的,要达到同一个目的,我们可以使用几种不同的办法。就拿Hibernate配置来说,常用的有如下三种方式,任选其一。在 hibernate.cfg.xml 中加入元素 、,放置在类路径(classpath)的根目录下。

将 hibernate.properties 放置放在类路径的根目录下。

可编程的配置方式,即在程序中配置Hibernate的启动参数、加载映射文件,需要用Configuration接口来实现这一方式。

使用hibernate.cfg.xml是我比较喜欢的方式,一方面xml天生的优势——良好的可读性,让配置的意图一目了然。另一方面这是官方推荐使用的,如果同时在hibernate.cfg.xml和hibernate.properties对Hibernate进行了配置,那么前者将覆盖后者。

hibernate.properties可以非常的简洁明了,并且有一种linux配置文件的风格。以#开始一行的注释,用键值对的方式存储配置参数。

对于这两种方式,结果都是一样的。只是看个人喜好。关于配置参数我们稍后讨论。

Configuration类

org.hibernate.cfg.Configuration实例的作用是对Hibernate进行配置,以及对它进行启动。在Hibernate的启动过程中,Configuration类的实例首先读取Hibernate配置文件,加载配置信息,然后加载映射文件,创建一个SessionFactory对象。

实例被设计成启动期间(startup-time)对象,一旦SessionFactory 创建完成它就被丢弃了。

要使用一个Configuration对象,要为它设置两个方面的内容:数据库连接属性

hbm.xml或pojo类

Configuration常用操作函数

1.加载Hibernate配置文件Configuration cfg=new Configuration().configure("/etc/hibernate.cfg.xml");

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

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

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

4.为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");

5.获得SessionFactorySessionFactory sessions = cfg.buildSessionFactory();

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

Hibernate 允许你的应用程序创建多个SessionFactory 实例。这对 使用多个数据库的应用来说很有用。

hibernate.cfg.xml

hibernate.cfg.xml在文档开头的DTD(文档类型定义)是很复杂的。我们并不需要去理会和记忆他。你可以直接copy它。

hibernate.cfg.xml文档以为根元素,你可以在其子元素中加入元素来配置各种参数。

加入加载映射文件,resource代表映射文件的路径。

一个hibernate.cfg.xml例子:

/p>

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

jdbc:mysql://localhost:3306/test

root

klguang@mysql

com.mysql.jdbc.Driver

org.hibernate.dialect.MySQLDialect

10

thread

org.hibernate.cache.NoCacheProvider

true

update

none

hibernate.properties

对于hibernate.properties作为配置文件的方式,我是不推荐新手使用的。因为,其可读性差,另外众多的配置参数会让初学者不知道如何下手。

在Hibernate发布包的project/etc/,提供了一个hibernate.properties文件,该文件列出了Hibernate 的所有配置参数,但都是用#注释掉了。每一行是一个配置参数,以键值对的方式存在,空格前是key,空格后是value,我们应该将空格改为等号。

对每一个配置参数,文件里都有详细的解释。我们只需要将见面#去掉,并修改其value就可以了。

一个hibernate.properties例子:#数据库使用的驱动类

hibernate.connection.driver_class=com.mysql.jdbc.Driver

#数据库连接串

hibernate.connection.url=jdbc:mysql://localhost:3306/db

#数据库连接的用户名

hibernate.connection.username=user

#数据库连接的密码

hibernate.connection.password=password

#数据库使用的方言

hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect

#是否打印SQL语句

hibernate.show_sql=true

javax.persistence.validation.mode=none

hibernate.properties没有提供加载映射文件的方式。因此需要通过Configuration的.addResource()方法来加载映射文件或POJO类,Hibernate会自动找到另一方,前提映射文件和POJO类在同一包(目录)中。Configuration cfg = new Configuration();

cfg.configure("/etc/hibernate.properties");

cfg.addResource("test/User.hbm.xml");

cfg.addClass(test.Order.class);

Hibernate配置参数详解

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

Hibernate 数据源属性

属性名

用途

hibernate.connection.datasource

数据源JNDI 名字

hibernate.jndi.url JNDI

提供者的URL(可选)

hibernate.jndi.class JNDI

InitialContextFactory 类(可选)

hibernate.connection.username

数据库用户(可选)

hibernate.connection.password

数据库密码(可选)

可选的配置属性

有大量属性能用来控制 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 JDBC 和连接(connection)属性、Hibernate 缓存属性、Hibernate 事务属性等主要用于提升性能,并且Hibernate有适当的默认值。入门者可以忽略这些设置,等学到一定阶段,你可以参考官方文档进行适当配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值