`
tiwson
  • 浏览: 333504 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

[转]--经典hibernate配置详解

阅读更多
转自:http://yangwen.blog.51cto.com/337928/98236/

<meta>元素的属性

属性 描述
class-description 指定描述类的javaDoc
field-description 指定描述类的属性javaDoc
interface 如果为true,表明生成接口而非类,默认false
implements 指定类所实现的接口
extends 指定继承的父类名
generated-class 重新指定生成的类名
scope-class 指定类的修饰符,默认public
scope-set 指定set方法的修饰符,默认public
scope-get 指定get方法的修饰符,默认public
scope-field 指定类的属性的修饰符,默认private
use-in-toString 如果为true,表示在toString()方法中包含此属性
gen-property 如果为false,不会在java类中生成此属性,默认true
finder-method 指定find方法名


<column>元素属性
name 设定字段名字
length 设定字段长度
not-null 如为true,指名该字段不允许为null,默认false
unique 如为true,指名该字段具有唯一约束,默认false
index 给一个或多个字段建立索引
unique-key 为多个字段设定唯一约束
foreign-key 为外键约束命名,在<many-to-many><one-to-one><key><many-to-one>元素中包含
foreign-key属性,在双向关联中,inverse属性为true的一端不能设置foreign-key
sql-type 设定字段sql类型
check 设定sql检查约束


用于控制insert or update 语句的映射属性

<property>元素的insert属性 如为false,在insert中不包含该字段,默认为true
<property>元素的update属性 如为false,在update中不包含该字段,默认为true
<class>元素的mutable属性 如为false,等价于所有字段的update属性为false,默认为true
<property>元素的dunameic-insert属性 如为true,表明动态生成insert语句,只有不为null,才会包含insert语句中,默认false
<property>元素的dunameic-update属性 如为true,表明动态生成update语句,只有不为null,才会包含insert语句中,默认false
<class>元素的dunameic-insert属性如为true,表明等价于所有字段动态生成insert语句,只有不为null,才会包含insert语句中 ,默认false
<class>元素的dunameic-update属性如为true,表明等价于所有字段动态生成update语句,只有不为null,才会包含insert语句中 ,默认false

Hibernate提供的内置标识符生成器
increment 适用于代理主键,自动递增,增1(只能是long,int,short)
identity 适用于代理主键,底层数据库自动增长字段类型(数据库需支持,只能是long,int,short)
(oralce)sequence 适用于代理主键,根据底层数据库的序列来生成标识符(数据库支持序列,只能是long,int,short)
hilo 适用于代理主键,根据high/low算法来生成.Hibernate把特定表的字段作为high值,在默认情况下选用hibernate_unique_key表的next_hi字段
(mysql,mssql)native 适用于代理主键,根据数据库自动生成标识符支持能力,来选择identity,sequence,hilo
uuid.hex 适用于代理主键,采用128位UUID(universal unique identification)算法来生成标识.此算法能在网络环境中生成唯一的字符串标识符,
(不建议使用,字符串类型比整形类型的主键占用更多的空间)
assigned 适用于自然主键,由java程序负责生成.

<hibernate-mapping>
<class name="项目路径" table="库中对应表名" schema="dbo" catalog="netoa">
<meta attribute="class-description">指定描述类的javaDoc</meta>
<meta attribute="class-scope">指名类的修饰类型</meta>
<meta attribute="extends">指定继承类</meta>
<id name="bgrkbh" type="long">
<column name="BGRKBH" precision="15" scale="0" sql-type="库中类型" check="BGRKBH>10"/>
<meta attribute="scope-set">指定类,类属性的getxxx(),setxxx()方法的修饰符
包括:static,final,abstract,public,protected,private
</meta>
<generator class="assigned" />
</id>
<property name="Class.fileName" type="long">
<column name="YSLX" precision="精度" scale="刻度" not-null="默认false" sql-type="数据库中类型"/>
附加属性不会影响Hibernate的运行行为
<meta attribute="field-description">指定描述类的javaDoc</meta>
指定描述类属性的javaDoc
</property>
</class>
</hibernate-mapping>


注意:
1 Session的commit()和flush()方法的区别,flush()方法进行清理缓存的操作,执行一系列的SQL语句,但不会提交事务;
commit()方法会先调用flush(),然后提交事务.提交事务意味着对数据库所作的更新被永久保存下来.

2 Session的setFlushMode()方法用于设定清理缓存的时间点.FlushMode类定义了三种不同的清理模式

清理缓存的模式 Session的查询方法 Session的commit()方法 Session的flush()方法
FlushMode.AUTO 清理 清理 清理
FlushMode.COMMIT 不清理 清理 清理
FlushMode.NEVER 不清理 不清理 清理

3 Hibernate应用中java对象的状态
临时状态 (transient):刚刚用new语句创建,还没被持久化,不处与Session的缓存中,处于临时状态的java对象被称为临时对象.
持久化状态(persistent):已经被持久化,加入session的缓存中.处于持久化状态的java对象被称为持久化对象.
游离状态(detached):已经被持久化,但不在处于session的缓存中.处于游离状态的java对象被称为游离对象.
(注意:::::)持久化类与持久化对象是不同的概念.持久化类的实例可以处于临时状态,持久化状态和游离状态.其中处于
持久化状态的实例 被称为持久化状态.

临时对象的特性:
1 不处于缓存中,也可以说,不被任何一个Session实例关联
2 在数据中没有对应的纪录.

在此情况下,java对象进入临时状态
1 当通过new创建一个对象时,此时不和数据库中的任何纪录的

ex:对象的状态转化过程

程序代码 对象的生命周期 对象的状态
tx=session.beginTransaction();
Object obj=new Object("tow",new HashSet()); 开始生命周期 临时状态

session.save(obj); 处于生命周期 转化为持久状态

Long id=obj.getId();
obj=null;
Object obj2=(Object)session.load(Object.class,id); 处于生命周期 处于持久化状态
tx.commit();

session.close(); 处于生命周期 转变成游离状态

System.out.print(obj2.getName()); 处于生命周期 处于游离状态

obj2=null; 结束生命周期 结束生命周期


4 cascade属性

cascade属性值 描述
none 在保存更新时,忽略其他关联对象,他是cascade默认属性
save-update 当通过Session的save(),update()以及saveOrUpdate()方法来保存
或更新当前对象时,及联保存所有关联的新建的临时对象,并且及联更新所有关联的游离对象
delete 当通过session的delete()方法删除当前对象时,及联删除所有对象
all 包含save-update及delete行为,此外对当前对象执行evict()或lock
()操作时,也会对所有关联的持久化对象执行evict()或lock()操作
delete-orphan 删除所有和当前对象解除关联关系的对象
all-delete-orphan 包含all和delete-orphan

5 Hibernate映射类型,对应的java基本类型及对应的标准SQL类型

Hibernate 映射类型 java类型 标准SQL类型
integer或者int int INTEGER
long long BIGINT
short short SMALLINT
byte byte TINYINT
float float FLOAT
double double DOUBLE
big_decimal java.math.BigDecimal NUMERIC
character char and string CHAR
string string VARCHAR
boolean boolean BIT

Hibernate映射类型,对应的java时间和日期类型及对应的标准SQL类型

映射类型 java类型 标准SQL类型 描述
date java.util.Date或者java.sql.Date DATE 代表日期,YYYY-MM-DD
time java.util.Date或者java.sql.Date TIME 代表时间,形式为HH:MM:SS
timestamp java.util.Date或者java.sql.Timestamp TIMESTAMP 代表日期和时间,YYYYMMDDHHMMSS
calendar java.util.Calendar TIMESTAMP 同上
calendar_date java.util.Calendar DATE 代表日期,YYYY-MM-DD本文出自 51CTO.COM技术博客
分享到:
评论

相关推荐

    hibernate--5.Hibernate配置文件详解-2

    标题"hibernate--5.Hibernate配置文件详解-2"暗示我们将继续上一节的内容,进一步深入理解Hibernate配置文件的各个方面。通常,Hibernate的配置文件以`hibernate.cfg.xml`的形式存在,它是项目初始化和连接数据库的...

    hibernate--5.Hibernate配置文件详解

    标题"hibernate--5.Hibernate配置文件详解"暗示我们将探讨的是Hibernate 5版本的配置细节。这个版本引入了一些新特性和改进,同时也保持了对前一版本的兼容性。配置文件是Hibernate的核心部分,它定义了与数据库的...

    08.拓薪教育-hibernate4.3的hibernate.cfg.xml基本配置.part2

    高级Hibernate4开发技术:ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,...

    经典hibernate配置详解

    【hibernate配置详解】 Hibernate,作为一款强大的Java对象关系映射(ORM)框架,极大地简化了...请仔细阅读`经典hibernate配置详解.htm`中的详细说明,结合实际项目进行练习,相信你将很快成为Hibernate配置的专家。

    hibernate配置文件详解

    Hibernate 配置文件详解 Hibernate 是一个流行的 ORM(Object-Relational Mapping)框架,用于简化 Java 应用程序中的数据库交互。 Hibernate 的配置文件是其核心组件之一,用于定义 Hibernate 的运行期参数。下面...

    hibernate配置图像详解

    hibernate的配置介绍,在myeclipse中配置hibernate,hibernate已经在myeclipse中了,创建工程,然后在工程中添加hibernate框架,一些设置

    Hibernate配置文件hibernate.cfg.xml中配置信息详解

    Hibernate配置文件hibernate.cfg.xml中配置信息详解!

    flex3读书笔记----flex整合hibernate

    【知识点详解】 1. **Flex 3**: Flex 是 Adobe 推出的一种用于构建富互联网应用程序(RIA)的框架,主要用于创建交互式、数据驱动的 Web 应用程序。Flex 3 是该框架的一个版本,提供了丰富的组件库、数据绑定以及...

    HibernateTools-3.2.4

    5. **Eclipse插件**:Hibernate Tools可以作为Eclipse的插件安装,提供图形化的界面来管理Hibernate配置、运行HQL/SQL查询、生成代码等。 二、`features`目录详解: 这个目录可能包含了Hibernate Tools的特性描述...

    spring +hibernate 详解与配置(附图)

    ### Spring + Hibernate 详解与配置 #### Spring框架概述 Spring框架是一个开源的、轻量级的应用框架,旨在简化企业级应用开发。它提供了一个全面的编程模型,支持从Web到数据访问等各种应用需求。Spring的核心...

    hibernate-validator-4.0.1.GA-dist

    《Hibernate Validator 深度解析:4.0.1.GA 版本详解》 Hibernate Validator,作为Java世界中的一款强大且广泛使用的验证框架,极大地简化了应用中的数据验证过程。本文将深入探讨 Hibernate Validator 4.0.1.GA ...

    Hibernate 参数配置详解

    ### Hibernate 参数配置详解 #### 一、概述 Hibernate 是一款流行的 Java 持久层框架,它通过提供一套丰富的 API 和配置选项来简化数据库访问。本文档将深入探讨 Hibernate 的核心配置参数及其功能,帮助开发者更...

    Hibernate的配置详解

    在本篇中,我们将深入探讨Hibernate的配置,特别是涉及一对一、一对多和多对多关系的配置。 首先,配置过程始于`Configuration`接口。这个接口用于设置Hibernate所需的配置信息,如数据源、连接参数等,并根据配置...

    Hibernate---我的Hibernate学习笔记.doc

    1. **Configuration类**:用于配置和启动Hibernate,通过指定映射文件位置或动态配置属性来创建`SessionFactory`实例。 2. **SessionFactory接口**:代表数据存储源,线程安全且重量级,建议一个数据库对应一个`...

    hibernate配置参数大全

    ### Hibernate配置参数详解 #### 一、数据库连接配置(JDBC) 在Hibernate中,与数据库交互的第一步就是正确地配置数据库连接。以下是一些关键的配置参数及其含义: 1. **`hibernate.connection.driver_class`**...

    hibernate-mapping参数详解

    `hibernate-mapping`是Hibernate配置文件中的一部分,用于定义Java对象与数据库表之间的映射关系。 1. `default-access`:这个参数定义了Hibernate如何访问对象的属性。默认值是`property`,意味着Hibernate将使用...

    hibernatetools-Update-4.1.1.Final_2013-12-08_01-06-33-B605

    使用Hibernate Tools需要先正确配置Hibernate的项目设置,包括数据库连接信息、Hibernate配置文件等。`index.html`和`Readme.txt`可能提供了详细的使用指南和注意事项。`content.jar`和`artifacts.jar`可能是插件...

    《企业应用架构设计-Struts2 Hibernate3 Spring 2》谢星星 第十九章整合源码

    7. **配置详解**: - **struts.xml**:定义Action和结果映射,通过Spring插件指定Action的bean。 - **hibernate.cfg.xml**:配置数据库连接、方言、实体类等信息。 - **spring-context.xml**:定义bean的定义,...

    08.拓薪教育-hibernate4.3的hibernate.cfg.xml基本配置.part1

    高级Hibernate4开发技术:ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,...

Global site tag (gtag.js) - Google Analytics