Hibernate的核心配置信息
属性名
|
用途
|
数值
|
hibernate.connection.driver_class
|
设置数据库的驱动类
|
驱动类名
|
hibernate.connection.url
|
设置连接数据库的URL
|
URL
|
hibernate.connection.username
|
设置连接数据库的用户名
|
用户名
|
hibernate.connection.password
|
设置连接数据库的密码
|
密码
|
hibernate.connection.pool_size
|
设置连接池的最大容量
|
一个整数
|
hibernate.connection.datasource
|
设置数据源的JNDI名字
|
JNDI名
|
hibernate.dialect
|
针对不同的数据库提供的方言类,允许Hibernate针对特定的数据库生成优化的SQL语句
|
方言类名
|
hibernate.show_sql
|
是否输出Hibernate操作数据库使用的SQL语句
|
true或者false(默认)
|
hibernate.format_sql
|
是否格式化输出的SQL语句
|
true或者false(默认)
|
hibernate.connection.isolation
|
设置JDBC事务隔离级别,不是所有的数据库都支持所有的隔离级别
|
取值为1(默认)、2、3或者4,
|
hibernate.connection.auotocommit
|
设置是否启用数据库事务的自动提交
|
true或者false(默认)
|
hibernate.max_fetch_depth
|
为单向关联的一对一和多对一的外连接抓取(outer join fetch)设置最大深度,数值为0将关闭默认的外连接抓取
|
建议数值为0~3
|
hibernate.default_batch_fetch_size
|
设置关联的批量抓取数量
|
建议取值为4、8或16
|
hibernate.default_entity_mode
|
指定默认的持久化实体表现形式
|
dynamic-map、pojo(默认)或dom4j,
|
续表
属性名
|
用途
|
数值
|
hibernate.default_entity_mode
|
指定默认的持久化实体表现形式
|
dynamic-map、pojo(默认)或dom4j,
|
hibernate.order_updates
|
强制Hibernate按照被更新数据的主键,为SQL更新排序,可以减少在高并发系统中事务的死锁几率
|
true或者false(默认)
|
hibernate.generate_statistics
|
是否激活收集性能调节的统计数据
|
true或者false(默认)
|
hibernate.use_sql_comments
|
是否生成有助于调试的注释信息
|
true或者false,(默认)
|
在MS SQLServer及Oracle等数据库中可以在Hibernate配置文件中设置属性hibernate.jdbc.batch_size来控制达到多少数据后送至数据库处理。如果在插入或者删除大量记录时使用这个属性,可以提高系统的性能。具体设置参考下面的代码:
- <property name="hibernate.jdbc.batch_size">100</property>
MySQL数据库不支持这个功能。
数据库方言类
Hibernate可以连接不同的数据库,但是需要使用不同的数据库方言类。这是因为多数关系数据库都支持标准的SQL,均有各自的SQL方言,hibernate.dialect属性用于指定被访问数据库使用的方言类(DB Dialect Class)。当Hibernate生成SQL查询语句,或者使用native作为标识符属性生成策略时都会参考数据库的方言类。表2 2所示不同数据库对应的方言类。
数据库
|
方言类
|
DB2
|
org.hibernate.dialect.DB2Dialect
|
HypersonicSQL
|
org.hibernate.dialect.HSQLDialect
|
Informix
|
org.hibernate.dialect.InformixDialect
|
Interbase
|
org.hibernate.dialect.InterbaseDialect
|
Pointbase
|
org.hibernate.dialect.PointbaseDialect
|
PostgreSQL
|
org.hibernate.dialect.PostgreSQLDialect
|
Microsoft SQL Server
|
org.hibernate.dialect.SQLServerDialect
|
MySQL
|
org.hibernate.dialect.MySQLDialect
|
Oracle 9i/10g/11g
|
org.hibernate.dialect.Oracle9iDialect
|
Oracle 9i/10g/11g
|
org.hibernate.dialect.Oracle9iDialect
|
FrontBase
|
org.hibernate.dialect.FrontbaseDialect
|
SAP DB
|
org.hibernate.dialect.SAPDBDialect
|
Sybase
|
org.hibernate.dialect.SybaseDialect
|
Sybase Anywhere
|
org.hibernate.dialect.SybaseAnywhereDialect
|
Transaction接口
Transaction接口是对实际事务实现的一个抽象,这些实现包括JDBC事务或者JTA等。这样设计允许开发人员能够使用一个统一的事务操作接口使得自己的项目可以在不同的环境和容器(Container)之间方便地迁移。
Hibernate中的事务是通过配置hibernate.cfg.xml文件选择使用JDBC或者是JTA事务控制。参考下面的配置内容:
-
<property name="transaction.factory_class">
-
org.hibernate.transaction.JDBCTransactionFactory
-
</property>
上面的配置内容表示Hibernate中的事务使用JDBC的事务控制,使用JTA事务控制的配置内容如下:
-
<property name="transaction.factory_class">
-
org.hibernate.transaction.JTATransactionFactory
-
</property>
如果hibernate.cfg.xml文件中没有针事务的配置,则默认使用JDBC的事务控制Hibernate中的事务。
在Transaction接口中主要定义了commit()和rollback()两个方法,前者是提交事务的方法;后者是回滚事务的方法。
Query接口
使用Query类型的对象可以方便查询数据库的数据,它使用QBC、QBE、HQL或者原生SQL(Native SQL) 查询数据。Query对象不仅能查询数据,还可以绑定参数、限制查询记录数量,以及批量删除和批量更新等。使用Query对象的示例代码如下:
- Configuration config = new Configuration().configure();
- SessionFactory sessionFactory = config.buildSessionFactory();
- Session session = sessionFactory.getCurrentSession();
- Transaction tx = session.beginTransaction();
-
Query query = session.createQuery("from Guestbook");
- List list = query.list();
- tx.commit();
上面代码表示Query对象通过Session对象的createQuery()方法创建,其中的方法参数值"from Guestbook"是HQL语句,表示要读取所有Guestbook类型的对象。即读取Guestbook表中的所有记录,把每条记录封装成Guestbook对象后保存到List对象中并返回List对象。
Query对象只在Session对象关闭之前有效,否则就会抛出SessionException类型的违例。因为Session对象就像JDBC中的Connection对象,表示与数据库的一次连接。关闭Connection对象,Statement对象则不能使用。所以关闭Session对象,也就不能使用Query对象。参考下面示例的错误代码:
- Configuration config = new Configuration().configure();
- SessionFactory sessionFactory = config.buildSessionFactory();
- Session session = sessionFactory.getCurrentSession();
- Transaction tx = session.beginTransaction();
-
Query query = session.createQuery("from Guestbook");
- List list = query.list();
- tx.commit();
-
query.list();
http://book.51cto.com/art/200909/153587.htm
分享到:
相关推荐
【hibernate学习资料大全】 Hibernate 是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。这个压缩包包含了丰富的Hibernate学习资源,旨在帮助开发者深入理解和熟练掌握这一强大的...
### Hibernate学习知识点详解 #### 1. Hibernate简介与安装配置 **标题:** Hibernate学习 **描述:** Hibernate 学习 Hibernate学习.pdf **标签:** Hibernate 学习 Hibernate学习.pdf **知识点详解:** ####...
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...
《Hibernate学习文档集合》 Hibernate,作为Java领域中的一款强大且广泛应用的对象关系映射(ORM)框架,极大地简化了数据库操作。本集合包含了三个关键的学习文档,分别关注于Hibernate的操作基础、对象关系映射和...
**hibernate学习资料大合集** 本资料合集涵盖了关于Hibernate的各种学习资源,包括PDF、CHM和Word文档,旨在帮助开发者深入理解和掌握Hibernate这一强大的Java持久化框架。Hibernate作为一个对象关系映射(ORM)...
《Hibernate学习精华》 Hibernate,一个开放源代码的对象关系映射框架,是Java开发者在数据库操作中不可或缺的工具。它简化了Java应用与数据库之间的交互,使得开发人员能够以面向对象的方式来处理数据库操作,极大...
**Hibernate学习笔记与大纲** Hibernate 是一款开源的Java语言下的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发人员可以使用面向对象的方式处理数据,而无需过多关注底层的SQL语句。本笔记将深入...
**hibernate学习笔记第四天源码解析** 在hibernate学习的过程中,第四天通常会深入探讨实体类、映射文件、配置文件以及查询语言等方面的内容。这些是hibernate框架的基础,也是开发者掌握持久化操作的关键。让我们...
《Hibernate学习文档》 Hibernate是一种广泛应用于Java开发中的对象关系映射(ORM)框架,它的核心价值在于简化了数据库操作,通过将Java对象模型与SQL关系模型进行映射,使得开发者可以使用面向对象的方式来处理...
对于初学者来说,学习 Hibernate 可以简化数据库操作,提高开发效率。以下是对 Hibernate 学习过程的详细说明: 一、配置 Hibernate 与 MyEclipse 连接 在开始使用 Hibernate 之前,你需要先配置 Hibernate 与...
在本篇《Hibernate学习笔记》中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate允许开发者以面向对象的方式处理数据库操作,极大地简化了数据存取的复杂性。以下是一些关键知识点: 1....
Hibernate学习笔记 Hibernate学习笔记 Hibernate学习笔记 Hibernate学习笔记
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...
**Hibernate 框架概述** Hibernate 是一个开源的对象关系映射(ORM)框架,它为 Java 开发者提供了一种在 Java 应用程序中管理关系...通过实践和深入学习,你可以更好地利用 Hibernate 实现高效、可靠的数据库应用。
在“hibernate学习资料”中,我们可以看到两个关键文件:“hibernate┐≥╝▄┐¬╖ó2016░µ╫╩┴╧”和“hibernate框架开发2016版资料”。这些文件很可能是针对Hibernate框架的教程或指南,可能包含了2016年时的...
这个“Hibernate学习代码示例”压缩包文件为初学者提供了丰富的学习资源,帮助他们理解并掌握Hibernate的核心概念和实际应用。 首先,让我们详细探讨一下Hibernate的基础知识。Hibernate是一个开源的ORM框架,它的...