Hibernate-----4、Hibernate配置文件

一、创建Configuration对象

Configuration实例的唯一作用是创建SessionFactory实例;若映射定义文件在类加载路径中,则可用addResource()方法来添加映射定义文件

3种配置Hibernate方式:

使用hibernate.properties作为配置文件(\project\etc\hibernate.properties)

Configuration cfg = new Configuration();
// 多次调用addResource方法,添加映射文件
cfg.addResource(“Item.hbm.xml”);
cfg.addResource(“Bid.hbm.xml”);

因为映射文件和持久化类往往是一一对应的,可通过向Configuration对象添加持久化类让Hibernate自己搜索映射文件(在这种方式下,所有的映射文件应放在持久化类文件相同的包路径下)

Configuration cfg = new Configuration();
// 多次调用addClass方法,直接添加持久化类
cog.addClass(“lee.Item.class”);
cog.addClass(“lee.Bid.class”);

使用hibernate.cfg.xml作为配置文件(\project\etc\hibernate.cfg.xml)

Configuration cfg = new Configuration();
// 加载hibernate.cfg.xml
cfg.configure();

不使用配置文件直接创建Configuration实例

Configuration对象提供了如下三个方法:

Configuration addResource(String resourceName):为Configuration对象添加一个映射文件

Configuration setProperties(Properties properties):为Configuration对象设置一系列属性,这系列属性通过Propertiest实例传入

Configuration setProperty(String propertyName,String value):为Configuration对象设置一个单独的属性

public class NewsManager{
     public static void main(String[] args) throws Exception{
     Configuration conf = new Configuration()
     .addClass(org.app.News.class)
     .setProperty(“hibernate.connection.url”,”jdbc:mysql://localhost/hibernate”)
     .setProperty(“hibernate.connection.username”,”root”)
     .setProperty(“hibernate.connection.password”,”123”)
     .setProperty(“hibernate.connection.c3p0.max_size”,”20”)
     .setProperty(“hibernate.connection.c3p0.min_size”,”1”)
     .setProperty(“hibernate.connection.c3p0.timeout”,”5000”)
     .setProperty(“hibernate.connection.c3p0.max_statements”,”100”)
     .setProperty(“hibernate.connection.c3p0.idle_test_period”,”3000”)
     .setProperty(“hibernate.connection.c3p0.acquire_increment”,”2”)
     .setProperty(“hibernate.connection.c3p0.validate”,”true”)
     .setProperty(“hibernate.connection.dialect”,”org.hibernate.dialect.MySQLInnoDBDialect”)
     .setProperty(“hibernate.hbm2ddl.auto”,”create”);

             SessionFactory sf = conf.buildSessionFactory();
             Session sess = sf.openSession();
             Transaction tx = sess.beginTransaction();
             News n = new News();
             n.setTitle(“title”);
             n.setContent(“content”);
             sess.save(n);
             ct.commit();
             sess.close();
     }
}

二、JDBC连接属性

所有Hibernate属性的名字和语义都在org.hibernate.cfg.Environment中定义

<!—连接数据库-->
<!—设置连接数据库的驱动 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<!—设置所需连接数据库服务的URL -->
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<!—连接数据库的用户名 -->
<property name="connection.username">system</property>
<!—连接数据库的密码 -->
<property name="connection.password">123</property>

<!— 使用C3PO连接池 -->
<!—连接池的最大连接数 -->
 <property name="hibernate.c3po.max_size">20</property>
<!—连接池的最小连接数 -->
<property name="hibernate.c3po.min_size">1</property>
<!—连接池中连接的超时时长 -->
<property name=" hibernate.c3po.timeout ">5000</property>

<!--连接池最大缓存多少个Statement对象-->
<property name=" hibernate.c3po.max_statements ">100</property>
<property name=" hibernate.c3po.idle_test_period ">3000</property>
<property name=" hibernate.c3po.acquire_increment ">2</property>
<property name=" hibernate.c3po.validate ">true</property>

三、数据库方言

告诉Hibernate应用程序的底层即将使用哪种数据库

<propertyname="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

DB2                                            org.hibernate.dialect.DB2Dialect

DB2 AS/400                              org.hibernate.dialect.DB2400Dialect

DB2 OS3090                             org.hibernate.dialect.DB2390Dialect

PostgreSQL                               org.hibernate.dialect.PostgreSQLDialect

MySQL                                        org.hibernate.dialect.MySQLDialect

MySQL with InnoDB                 org.hibernate.dialect.MySQLInnoDBDialect

MySQL with MyISAM                org.hibernate.dialect.MySQLMyISAMDialect

Oracle(any version)                  org.hibernate.dialect.OracleDialect

Oracle 9i                                      org.hibernate.dialect.Oracle9iDialect

Oracle 10g                                   org.hibernate.dialect.Oracle10gDialect

Sybase                                         org.hibernate.dialect.SybaseDialect

Sybase Anywhere                      org.hibernate.dialect.SybaseAnywhereDialect

Mircriosoft SQL Server               org.hibernate.dialect.SQLServerDialect

SAP DB                                         org.hibernate.dialect.SAPDBDialect

Informix                                          org.hibernate.dialect.InformixDialect

HypersonicSQL                            org.hibernate.dialect.HSQLDialect

Ingres                                             org.hibernate.dialect.IngresDialect

Progress                                   org.hibernate.dialect.PregressDialect

Mckoi SQL                                org.hibernate.dialect.MckoiDialect

Interbase                                   org.hibernate.dialect.InterbaseDialect

Pointbase                                    org.hibernate.dialect.PointbaseDialect

FrontBase                                 org.hibernate.dialect.FrontbaseDialect

Firebird                                       org.hibernate.dialect.FirebirdDialect

四、JNDI数据源的链接属性

若无须Hibernate自己管理数据源,而是直接访问容器管理数据源,Hibernate可使用JNDI(JavaNaming Diretory Interface,Java命名目录接口)数据源的相关配置;

下面是连接JNDI数据源的主要配置属性:

hibernate.connection.datasource:指定数据源JNDI名字
hibernate.jndi.url:指定JNDI提供者的URL(可选),若JNDI与Hibernate持久化访问的代码处于用一个应用中,则无须指定该属性
hibernate.jndi.class:指定JNDI InitialContextFactory的实现类(可选), 若JNDI与Hibernate持久化访问的代码处于用一个应用中,则无须指定该属性
hibernate.connection.username:指定连接数据库的用户名(可选)
hibernate.connection.password:指定连接数据库的密码(可选)

配置Hibernate;连接Tomcat中数据源的配置片段:

<property name=”connection.datasource”>java:comp/env/jdbc/dstest</property>
<property name=”dialect”>org.hibernate.dialect.MySQLDialect</property>

五、Hibernate事物属性

Hibenate不仅提供了局部事物支持,也允许使用容器管理的全局事物

hibernate.transaction.factory_class:指定Hibernate所用的事物工厂的类型(属性值必须是TransactionFactory的直接或间接子类)

jta.UserTransaction:属性值是一个JNDI名。Hibernate将使用JTATransactionFactory从应用服务器获取JTA UserTransaction

hibernate.transaction.manager_lookup_class:属性值应为一个TransactionManagerLookup类名,当使用JVM级别的缓存时,或在JTA环境中使用hilo生成器策略时,需该类

hibernate.transaction.flush_before_completion:指定Session是否在事物完成后自动将数据刷新到底层数据库

hibernate.transaction.auto_close_session:指定是否在事物结束后自动关闭Session

六、二级缓存相关属性

Hibernate的SessionFactory可持有一个可选的二级缓存,通过使用这种二级缓存可提高Hibernate的持久化访问的性能

hibernate.cache.provider_class:设置二级缓存CacheProvider的类名

hibernate.cache.use_minimal_puts:以频繁的读操作为代价,优化二级缓存以实现最小化写操作;该设置对集群缓存非常有用,对集群缓存的实现默认开启

hibernate.cache.use_query_cache:设置是否允许查询缓存;个别查询仍然需显示设置为可缓存的

hibernate.cache.use_second_level_cache:用于设置是否启用二级缓存;该属性可完全禁止使用二级缓存;对那些在映射文件中指定了<cache…/>的持久化类,则默认开启二级缓存

hibernate.cache.query_cache_factory:设置查询缓存工厂的类名(默认StandardQueryCache),查询缓存工厂必须实现QueryCache接口;

hibernate.cache.region_prefix:设置二级缓存区名称的前缀

hibernate.cache.use_structured_entries:设置是否强制Hibernate以可读性更好的格式将数据存入二级缓存

七、外连接抓取属性

外连接抓取能限制SQL语句的次数来提高效率,这种外连接抓取通过在单个select语句中使用outer join来一次抓取多个数据表的数据

外连接抓取允许在单个select语句中,通过<many-to-one…/>、<one-to-many…/>、<many-to-many…/>和<one-to-one…/>等关联获取连接对象的整个对象图

将hibernate.max.fetch_depth设为0,将在全局范围内禁止外连接抓取,设为1或更高值能启用N-1或1-1的外连接抓取;除此之外,还应在映射文件中通过fetch=”join”来指定这种外连接抓取

八、其他常用配置属性

hibernate.show_sql:是否在控制台输出Hibernate生成的SQL语句(true、false)

hibernate.format_sql:是否将SQL语句转成格式良好的SQL(true、false)

hibernate.use_sql_comments:是否在Hibernate生成的SQL语句中添加有助于调试的注释(true、false)

hibernate.jdbc.fetch.size:指定JDBC抓取数量的大小(整数),其实质是调用Statement.setFetcheSize()方法

hibernate.jdbc.batch.size:指定Hibernate使用JDBC2的批量更新的大小(整数),建议取5-30

hibernate.connection.autocommit:设置是否自动提交(通常不建议打开)

hibernate.hbm2ddl.auto:设置当创建SessionFactory时,是否根据映射文件自动建立数据库表,create-drop:显示关闭SessionFactory时,将Drop刚建的数据表;(update、create、create-drop)

时间: 2024-11-08 09:19:14

Hibernate-----4、Hibernate配置文件的相关文章

Hibernate框架 主配置文件(Hibernate.cfg.xml) 映射配置 说明

Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties   <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hiber

Hibernate(三)结构-配置文件-实体映射及配置文件

一.体系结构 SessionFactory:属于单一数据库的编译过的映射文件的一个线程安全的,不可变的缓存快照.Session的工厂.有可能持有一个可选的数据缓存可以进程级别或者群级别保存可以在事务中重用数据. 会话,Session:单线程,生命期短促的对象,代表应用程序和持久化层之间的一次对话.封装了一个JDDBC连接,它也是Transaction的工厂,保存有必须持久化对象的缓存,用于遍历对象,或者通过标识符查找对象. 持久化对象(Persistent Object)及其集合(Collect

Hibernate复习(三)配置文件详解

1.hibernate.cfg.xml 2.映射文件Person.hbm.xml Java的实体类是通过配置文件与数据表中的字段相关联.Hibernate在运行时解析配置文件,根据其中的字段名生成相应的SQL语句 a.id属性 <generator>子元素用来设定标识符生成器.Hibernate提供了多种内置的实现. b.property属性 ? name属性:指定持久化类的属性的名字. ? type属性:指定Hibernate或Java映射类型.Hibernate映射类型是Java类型与SQ

【Hibernate】Hibernate.cfg.xml配置文件详解

Hibernate配置文件主要用于配置数据库连接和Hibernate运行时所需的各种属性,这个配置文件应该位于应用程序或Web程序的类文件夹 classes中.Hibernate配置文件支持两种形式,一种是xml格式的配置文件,另一种是Java属性文件格式的配置文件,采用"键=值"的形式.建议采用xml格式的配置文件.xml配置文件可以直接对映射文件进行配置,并由Hibernate自动加载,而properties文件则必须在程序中通过编码加载映射文件. 注意:hibernate的前缀可

Hibernate的主配置文件hibernate.cfg.xml

1:Hibernate的主配置文件的名字必须是hibernate.cfg.xml: 1.1:主配置文件主要分为三部分: 注意:通常情况下,一个session-factory节点代表一个数据库: 1.1.1:第一部分 数据库连接部分,注意"hibernate.connection.driver_class"中间的 _(杠): 1.1.2:第二部分 其他相关配置,包含打印sql语句,格式化sql语句,创建数据表或者更新数据表等等 1.1.3:第三部分 加载所有的映射: 1 <!DOC

hibernate.cfg.xml配置文件

<span style="font-size:18px;"><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration

Rhythmk 学习 Hibernate 03 - Hibernate 之 延时加载 以及 ID 生成策略

Hibernate 加载数据 有get,跟Load 1.懒加载: 使用session.load(type,id)获取对象,并不读取数据库,只有在使用返回对象值才正真去查询数据库. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Test    public void  test1()    {        Session session = null;         try {             session = Hiber

异常:org.hibernate.HibernateException: &#39;hibernate.dialect&#39; must be set when no Connection available

spring整合hibernate报了这样一个异常,一直以为是dialect参数的问题,最后发现原来是配数据源时,数据库的名字写错了....... 找了半天,重新写了配置文件没出问题,但就不知道这个文件哪里出问题了.配置文件里面这种细节一定要注意. 版权声明:本文为博主原创文章,未经博主允许不得转载. 异常:org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available

Rhythmk 学习 Hibernate 04 - Hibernate 辅助工具 之 JBoos Tool

1.安装JBoos Tool Help -> Install new Software 然后添加: http://download.jboss.org/jbosstools/updates/development http://download.jboss.org/jbosstools/updates/stable/ 稍等一刻,选择 Hibernate tool 下一步 ,完成后重启Eclipse即可. 2.项目配置文件生成: 2.1 新建一项目,项目右键生成相关配置 然后如图: 2.2 此处需

Hibernate之Hibernate环境配置

Hibernate之Hibernate环境配置 一.Hibernate环境搭建的步骤 1.添加Hibernate && SQLServer 的Jar antlr-2.7.7.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.jar hibernate-core-4.3.11.Final.jar hibernate-jpa-2.1-api-1.0.0.Final.jar jandex-1.1.0.Final.jar j