您的位置:首页 > 编程语言

Hibernate入门之案例代码详解(三)

2012-05-21 21:09 225 查看
上一篇中介绍了Hibernate的第一个应用程序,在开发的过程中我们需要配置两配置文件。而我们这篇主要来介绍一下映射文件的配置和Hibernate的配置文件的信息。

映射文件

Hibernate中我们需要知道如何加载(load)和存储(store)持久化对象,这也是映射文件的作用。映射文件它告诉Hibernate从数据库里面的那个表中读取那些字段。

Hibernate的主要结构如下:

注意的是Hibernate的DTD很复杂,你的编辑器或者IDE需要使用它来映射xml元素和属性。同时Hibernate不会从web中加载DTD文件,它会先从应用程序的Classpath中查找。DTD的文件包含在hibernate3.jar中,同时也会在发布的Hibernate的SRC的目录下。

在映射文件中我们必须有一个class元素,所以的实体类的都需要这样的映射,来把持久化对象映射到数据库的表中。Hibernate通过它来实现把持久化对象映射到数据表或把数据库中的表映射成类。

CLASS中需要设置id元素,id是标识符的声明,name
=“id”中的id是java的属性,通过get()和Set()方法来获取,我们通过id元素来设置那个是主键,通过<generator></generator>l来设置标识符自动生成策略。同时配置文件也包含了属性的声明,我们通过<property
name=”name”></property>来设置。


在Class中name代表了是要映射的实体类所在的位置,同时table是映射到数据库中的表名。 CLASS中的属性设置对应了数据库中的一行,代表了表中的

列名。

Hibernate的配置文件

我们拥有了持久化的实体类和映射文件,那么我们需要往数据库中进行操作。而Hibernate的配置文件中包含了应用程序连接数据库的那层。Hibernate中包含了jdbc连接数据库的层。HIberianate的结构如下:

在配置文件中在Datasource connection settring中我们需要配置连接数据源的配置,如同在JDBC中配置一样。下面是 hibernate的JDBC属性

连接数据源的还有JIDI的配置,下面是Hibernate的JIDI的属性

在Hibernate的配置文件中我们了解几个属性Hibernate.show._sql 这个配置可以帮助我们把Hibernate的SQL语句在控制台输出。这样我们可以看出Hibernate的执行语句,还有一个属性如图

在Hibernate中哟很多属性来控制它的运行期的行为,他们都是可选,并且有默认值,

1 hibernate 的配置属性

属性名 hibernate.dialect 用途:一个Hibernate Dialect类名hibernate针对特定关系型数据库生成优化的额SQL语句

属性名:hibernate.show_sql 用途:输出所有的SQL语句到控制台,另外的方法是org.hibernate.SQL这个log category设为debug ,值为true 或false

属性名 :hibernate.format_sql 用途:在log和console中输出更漂亮的SQL语句。取值为true|false

属性名: hibernate.default._schema 用途:在生产SQL中,给定schema/talbespace附加于非权限定名的表单上。取值为SCHEMA_NAME

属性名:hibernate.default_catalog 用途:在生存SQL语句时,讲给定的catalog附加于非限定名的表名上取值为CATALOG

属性名:hibernat.session_factory_name 用途:SesionFactory创建后,将自动讲这个名字绑定到JIDI中。 取值:jidi/composite/name

属性名:hibernate.max_fetch_depth 用途为:在单向关联(一对一,一对多)的外连接抓取(outer join fetch)树设置最大深度,值为0意味者将关闭默认的外连接抓取。取值为0-3之间

属性名:hibernate.default_entity_mode 用途:为由这个SessionFactory创建的Session来指定默认的实体的表现模式取值 dynamic-mao,pojo,dom4j

属性名:hibernate.default_batch_fetch--size 用途:为Hibernate关联的批量抓取设置默认数量。取值建议的值为4.8和16

属性名:hibernate.order_update 用途:强制Hibernate按照被更新的数据的主键为sql更新排序,这么做可以减少在高并发系统中事务的死锁。取值为 true 和false

属性名:hibernate.generate_statistics 用途: 如果开启hibernate讲收集有利于性能调节的统计数据。取值:true|falsse

属性名:hibernate.use_sql_comments用途:如果开启,hibernate将在SQL语句中生成有利于调试的注释信息默认为false 取值:true |false

属性名:hibernate.user_identfiy_rollback 用途:如果开启,在对象被删除时生成的标志属性被重设为默认值。

2 Hibernate的JDBC和JIDI的属性

关于HIbernate的JDBC和JIDI的属性可以参照上面的图

3 Hibernae的缓存属性

4 Hibernate的事务属性

介绍了Hibernate的一些属性,同时说一下在操作数据库时用到的属性。

Session 的概述

Session不是线程安全的,它代表用户与数据库之间的一次操作。
Session接口负责执行持久化对象的CRUD操作。
它与Web层的HttpSession没有任何关系。
Session通过SessionFactory打开,在所有的工作完成后,需要关闭
SessionFactory的概述

线程安全的,通常情况下,整个应用只有唯一的一个会话工厂——例如在应用初始化时被创建。
会话工厂维护着Session相关的资源,包括数据库连接池,缓存了生成的SQL语句。

Configuration

Configuration 类负责管理Hibernate 的配置信息。它包括如下内容:
Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等。
Hibernate映射文件(*.hbm.xml)。
Hibernate配置的两种方法:
属性文件(hibernate.properties)。
调用代码:Configuration cfg = new Configuration();
Xml文件(hibernate.cfg.xml)。
调用代码:Configuration cfg = new Configuration().configure();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐