1. 自然主键, 代理主键
代理主键,不具备业务含义的字段,
应尽量避免使用自然主键
2. 用 == 比较两个对象的内存地址是否相同, Object类的equals(object o), 也是按内存地址来比较的,如果用户类没有覆盖 equal方法,也是按地址比较
JAVA API中的一些类覆盖了Object类的equal(Object o)方法,实现按对象值比较,他们包括
String类,Date类,Byte,Integer,Short,Character,Long,Float,Double,Boolean
3.
increament
identity
sequence
hilo
native
assigned 适用于自然主键,有程序设定其值
4. increment
increment标识符生成器仅仅在只有单个Hibernate的应用程序访问数据库情况下才能有效工作,即在同一个进程中创建两个连接数据库的SessionFactory实例,会导致插入失败
increment 生成标识符机制不依赖于底层数据库,适合于所有系统
适用于只有单个Hibernate应用进程的程序,在集群下不推荐
5. identity
依赖于数据库,要求数据库必须支持
DB2,MySQL,Ms SQL Server, Sybase, HSQLDB, informix
6. sequence
依赖于数据库,要求数据库必须支持
Oracle, DB2
7. hilo
不依赖数据库, 适用于所有数据库
8. native
native依据底层数据库对自动生成标识符的支持能力,自动选择使用identity,sequence,hilo
适合跨平台开发,多个数据库
9. 映射自然主键
<id name="name" column="NAME" type="string">
<generator class="assigned"/>
</id>
.......
<version name="version" column="VERSION" unsaved-value="0"/>
assigned 表示程序为NAME属性赋值,不管是游离对象,还是持久化对象,NAME属相永远不会为NULL,因此saveOrUpdate()方法无法通过判断name属性是否为null来确定对象状态,在这种情况下,可以设置<version>院所的unsave-value属性, 如果属性为0,表示链式对象,否则为游离对象(从数据库中读出的对象)
还可以
a. 避免使用saveorUpdate, 分别调用save or update()
b. 使用Hibernate拦截器, 在Interceptor实现类的isUnsave()方法中区分
10. 映射复合自然主键
<composite-id>
<key-property name="name" column="NAME" type="string">
<key-property name="companyId" column="COMPANY_ID" type="long">
</composite-id>
<version name="version" column="VERSION" unsaved-value="0"/>
映射复合自然主键时,为了能使Session的load()方法正常运行,要求类必须实现java.io.Serializable接口,并且重新定义equals() 和 hashcode()方法, equals方法判断相等的条件为,两个对象的name属性和companyId属性相等
分享到:
相关推荐
"自动生成 Hibernate 映射文件和实体类" 自动生成 Hibernate 映射文件和实体类是使用 MyEclipse 工具来实现的,这可以大大提高开发效率,减少开发时间。下面将详细介绍如何使用 MyEclipse 自动生成 Hibernate 映射...
hibernate映射文件是Java开发中用于对象关系映射(ORM)的重要组成部分,它将数据库表与Java类之间的关系进行定义,使得开发者无需编写大量的SQL语句,就能实现对数据库的操作。`生成hibernate映射文件工具`是为了...
首先,我们需要了解Hibernate映射文件的基本结构。通常,一个映射文件以`.hbm.xml`为扩展名,它使用XML格式来描述Java类和数据库表的对应关系。映射文件包含了类名、表名、字段及其数据类型等信息。例如: ```xml ...
**hibernate映射与查询** Hibernate 是一个流行的 Java 应用程序开发框架,它提供了一个持久层解决方案,简化了数据库操作。对于初学者来说,理解 Hibernate 的映射和查询机制是至关重要的,因为它们构成了 ...
【压缩包子文件的文件名称列表】:“hibernate映射文件自动生成.doc”很可能是这篇博文的文档形式,其中详细介绍了具体的操作步骤、使用工具或者自定义脚本,以帮助开发者理解并应用自动化的映射文件生成过程。...
Hibernate映射文件是XML格式的文件,它定义了数据库表与Java实体类之间的对应关系,包括字段映射、主键策略、关联关系等。映射文件让开发者无需编写SQL语句,就能通过Java对象进行数据库操作。 2. **MyEclipse ...
build.xml 手写自动生成Hibernate映射文件和配置文件源代码
### 常用Hibernate映射配置详解 #### 1. hibernate-mapping节点解析 `hibernate-mapping`节点是Hibernate映射文件中的顶级节点,用于定义一系列配置选项,控制整个映射文件的行为和映射规则。这些配置包括数据库...
3. **逆向工程(Hibernate Reverse Engineering)**:选中要映射的数据库表,右键选择`Hibernate Reverse Engineering`,这是MyEclipse提供的将数据库表转换为Hibernate映射文件和实体类的工具。 4. **配置生成选项...
### Hibernate映射笔记详解 #### Hibernate映射文件与配置关系 Hibernate映射是ORM(对象关系映射)框架中的一项关键技术,它允许开发者在数据库表和Java对象之间建立映射关系,从而简化了数据访问层的开发工作。...
而MyEclipse作为一款强大的Java集成开发环境,提供了对Hibernate的良好支持,包括自动生成Hibernate映射文件的功能。本文将详细介绍如何在MyEclipse中创建和使用Hibernate映射文件。 首先,理解Hibernate映射文件...
确保数据库与Hibernate映射文件一致,能正确地反映实体之间的关系。导入DBO到SQL Server数据库后,就可以通过Hibernate的Session接口进行CRUD(创建、读取、更新、删除)操作了。 在开发过程中,理解并熟练运用这些...
"Hibernate映射配置实例大全"是一个全面深入的资源,旨在帮助开发者理解和掌握如何有效地配置Hibernate以实现对象关系映射(ORM)。在这个文档中,我们将探讨各种关键的映射配置方法,以及相关的实例。 首先,我们...
标题“Hibernate映射树形结构”指的是如何用Hibernate来存储和操作具有层级关系的数据。 1. **单表映射策略**: Hibernate可以使用单个表来存储树形结构,通过一个自增的`id`字段以及一个表示父节点的`parent_id`...
本文将详细探讨如何使用Hibernate映射集合属性List,以及如何让Hibernate自动创建对应的数据库表,无需手动编写SQL语句。 首先,我们需要理解Hibernate的映射机制。Hibernate通过ORM(对象关系映射)技术将Java对象...
Hibernate映射文件,通常以`.hbm.xml`为扩展名,是Hibernate用来定义Java类与数据库表之间关系的配置文件。它包含了关于实体类与数据库表的字段对应、主键生成策略、关联关系等信息。通过这些映射文件,Hibernate...
标题:“Hibernate映射” 描述详解: ### Hibernate映射——连接对象世界与数据库的桥梁 Hibernate是一种流行的Java持久层框架,其核心功能是提供一个高级的对象关系映射(ORM)工具,用于将Java对象模型映射到...
下面我们将详细介绍如何在MyEclipse中自动生成Hibernate映射文件。 首先,我们需要建立数据库连接。在MyEclipse中,可以通过`Window`菜单打开`MyEclipse Database Explorer`视图。在这里,你可以创建新的数据库连接...