`
yuanyao
  • 浏览: 149096 次
  • 性别: Icon_minigender_1
  • 来自: 就那小山沟
社区版块
存档分类
最新评论

Hibernate的映射机制

阅读更多
Hibernate的主键映射


关系数据库中依靠主键来区分不同的记录,主键又有自然与代理主键之分。

所谓主键就是充当主键的字段本身具有一定的含义,是构成记录的组成部分。比如说学生的学号,除了充当主键之外,同时也是学生记录的主要组成部分。
所谓代理主键就是充当主键的字段本身不具有业务含义,只起主键的作用,比如自动增长类型的ID号等。

在Hibernate应用中,Hibernate依靠对象标识符(OID)来区分不同的持久化对象。而OID则可以通过Hibernate内置的标识生成器来产生。
Hibernate常用的标识生成器
Assigned       OID由业务逻辑程序负责产生,Hibernate只是负责持久   化,常用于映射自然主键
Hilo   OID由Hibernate按照high/low算法产生,该算法需要从   数据库的某个表的字段中读取high值
Increment   OID由Hibernate依递增方式产生,该算法依赖保存于当   前应用实例中的一个最大值变量,当有多个应用实例需要   访问数据库时难免出现重复的主键,应当谨慎使用
Identity   OID由底层数据库的自增主键生成机制产生,如MySQL   的auto_increment类型主键与SQL Server的identity类型   主键
Sequence       OID由底层数据库的sequence主键生成机制产生,如   Oracle sequence
Native   根据底层数据库对自动生成OID能力的支持情况,具体   选择identity sequence hilo 生成器产生OID,常用与跨平   台


Hibernate的实体映射

Hibernate实体映射的主要任务就是实现数据库关系表与持久化类之间的映射,


持久化类--》ORM映射文件--》数据库表

映射一对一关联关系

Hibernate有两种映射实体一对一关联关系的实现方式:共享主键方式和唯一外键方式.
所谓共享主键方式就是限制两个数据表的主键使用相同的值,通过主键形成一对一的映射关系.
所谓唯一主键就是一个表的外键和另一个表的唯一主键对应形成一对一映射关系.这种一对一的关系其实就是多对一关联关系的一种特殊情况而已.


映射多对一单向关联关系

实体之间的多对一单向关联关系是一中常见的关联关系,比如说Client和Orders,在购物的时候,Client可以有多个Oriders,但是每个Oriders必须有唯一一个Client.
在Orders.hbm.xml中,用<many-to-one />来描述被关联的类.
<many-to-one name="customer"
	        			    column="CUSTOMER_ID"
	        	    class="com.ORM.Customer"/>

在Orders.java中,添加Customer的get和set方法.


映射一对多双向关联关系

在应用中(如上的例子),会有这样的需求:根据给定的Client,要得到Client的ALL Orders;根据给定的Order,得到该Order所属的Client.一对多单向和一对多双向在数据库中的表现方式一样,均通过外键来实现.
在多对一单向关联关系的基础上,在Customer.hbm.xml中,用<set>来描述被关联的类.
 <set name="orders"
	        	 cascade="all"
	        	 inverse="true"
	        	 lazy="false"
	        	 >
	<one-to-many class="com.ORM.Customer">
	</set>



映射多对多单向关联关系

多对多的关系非常的普遍,如,Orders和Items,Items和Cart之间的关系均属于多对多的关系.多对多的关系在数据库中不能直接实现,还必须依赖一张连接表来保存这种关联关系.


映射多对多双向关联关系

多对多的双向关联关系就是实现两个互逆的多对多单向关联关系.

映射组成关系

在Hibernate应用开发中,为了提高代码的可重用性,往往需要将一个较大的持久化类分解成两个较小的持久化类,且其中的一个持久化类是另一个持久化类的组成部分.
例如:一个Clients类,为了提高代码的可重用性,将省份,城市,街道住处及邮编单独设计成一个持久化类Address,Address的实例充当Clients的属性.这就是典型的组成关系.
映射Clients与Address之间的组成关系
<component name="address"
	 			   Class="com.ORM.Address">
	<parent name="client" />
	<property name="province" column="PROVINCE" type="string" />
	<property name="city" column="CITY" type="string" />
	<property name="street" column="STREET" type="string" />
	<property name="zipcode" column="ZIPCODE" type="string" />
	</component>



映射继承关系
在面向对象的程序设计方法中,继承关系是一种非常普遍的关系,然而在关系型数据库中表与表之间不能直接实现这种继承关系.为了将持久化类之间的继承关系映射到数据库中,可以采用为每个具体持久化类(子类)对应一个关系表的映射方法.

Hibernate的集合映射
为了解决不同的需求,JAVA提供了3种类型的集合类,当集合中的对象不需要排序且不存在重复对象时,可选Set类;当集合中可以存在重复对象且需要按索引位置存取时就选用List类;当集合中需要使用键值存取对象时则选用Map类.
分享到:
评论

相关推荐

    hibernate映射机制

    hibernate映射文件让你更自如的装换java中数据类型到数据库中数据类型,实现hibernate的映射,方便编码,节省应为数据类型带来的麻烦。

    java根据实体类生成Hibernate映射文件

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象...这个过程涉及到Java反射、XML处理以及对Hibernate映射机制的理解,对于深入掌握Java与数据库的交互具有重要的实践意义。

    自动生成hibernate映射文件和实体类

    1. Hibernate 是一种开源的持久层框架,提供了一个高效的数据访问机制,能够将 Java 对象与数据库表进行映射。 2. MyEclipse 是一个集成开发环境(IDE),提供了丰富的开发工具和插件,包括数据库管理、代码编辑、...

    javaee实验五 大学本科生 hibernate

    【JavaEE实验五:大学本科生Hibernate】实验主要目标在于让学生掌握Hibernate开发环境的搭建,理解ORM框架的概念,以及深入理解Hibernate映射文件和配置文件的使用。Hibernate是一个强大的ORM(对象关系映射)框架,...

    hibernate映射

    标题:“Hibernate映射” 描述详解: ### Hibernate映射——连接对象世界与数据库的桥梁 Hibernate是一种流行的Java持久层框架,其核心功能是...掌握Hibernate映射机制对于任何Java开发者而言都是必不可少的技能。

    hibernate映射和查询

    **hibernate映射与查询** Hibernate 是一个流行的 Java 应用程序开发框架,它提供了一个持久层解决方案,简化了数据库操作。对于初学者来说,理解 Hibernate 的映射和查询机制是至关重要的,因为它们构成了 ...

    Hibernate映射笔记

    ### Hibernate映射笔记详解 #### Hibernate映射文件与配置关系 Hibernate映射是ORM(对象关系映射)框架中的一项关键技术,它允许开发者在数据库表和Java对象之间建立映射关系,从而简化了数据访问层的开发工作。...

    hibernate映射枚举类型

    Hibernate通过`@Enumerated`和`@Type`注解为枚举类型提供了灵活的映射机制,允许开发者根据项目需求选择合适的方式。正确地映射枚举类型可以增强代码的可读性和可维护性,同时减少因数据类型转换导致的潜在错误。在...

    Hibernate映射集合属性List

    首先,我们需要理解Hibernate的映射机制。Hibernate通过ORM(对象关系映射)技术将Java对象与数据库表关联起来。在映射集合属性时,我们需要在实体类中定义一个List类型的字段,并使用注解或XML配置文件来指定其映射...

    hibernate array 数组映射

    Hibernate 是一个开源的Java ORM(Object-Relational Mapping)框架,它通过提供一种对象-关系映射机制,使得开发者可以使用面向对象的方式来操作数据库,从而避免了传统的JDBC繁琐的数据库操作。 ### 数组映射原理...

    hibernate映射心得 原创

    **标题解析:**“hibernate映射心得 原创” 这个标题表明了本文将主要探讨作者在使用Hibernate框架进行对象关系映射(ORM)时的个人理解和经验。Hibernate是一个流行的Java ORM框架,它允许开发者用面向对象的方式...

    hibernate多对多关联映射

    查询关联数据可以通过`Hibernate`的懒加载或立即加载机制实现。如果在实体类中启用了懒加载,可以通过`Hibernate.initialize()`或`Criteria`查询来获取关联数据。 3. 删除关联 删除关联需要先从双方的集合中移除...

    myeclipse自动生成hibernate映射文件.

    下面我们将详细介绍如何在MyEclipse中自动生成Hibernate映射文件。 首先,我们需要建立数据库连接。在MyEclipse中,可以通过`Window`菜单打开`MyEclipse Database Explorer`视图。在这里,你可以创建新的数据库连接...

    hibernate关系映射1to1及Nto1

    hibernate关系映射系列1,单向1对1映射,意向Nto1 程序说明:生成mysql数据库,建立DB Browser连接后,用户可在程序中自动生成mysql表,非常简单,适合初学者了解hibernate映射机制,有问题可联系flyallen5@hotmail.com

    hibernate关联映射实例

    通过这些实例,开发者可以学习到如何在实际项目中应用Hibernate,理解其核心机制,并提高数据库操作的效率。熟悉这些映射方式对于开发复杂的Java应用至关重要,它们帮助我们将复杂的数据库结构转化为易于管理和操作...

    JAVA数据类型与Hibernate的类型映射

    在实际应用中,Hibernate还提供了一些高级映射机制,如一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany)的关系映射。这些映射通过@OneToOne、@OneToMany、@ManyToOne和@...

    Hibernate映射配置详解

    Hibernate的核心功能在于它的持久化层,通过ORM机制将Java对象与数据库表进行绑定。它提供了一种在Java应用程序中存取数据库的API,使得开发人员无需编写大量的JDBC代码就能完成复杂的数据库操作。 二、Hibernate...

    hibernate-5.2.10最新jar包

    5. Hibernate映射机制: 使用XML或注解来定义对象和表之间的映射关系,例如@Entity、@Table、@Id、@Column等注解,使得Java对象与数据库记录一一对应。 6. Hibernate查询: Hibernate提供了HQL(Hibernate Query ...

    商城数据库hibernate映射实例

    8. **缓存机制**:为了提高性能,Hibernate提供了一级缓存(Session级别的)和二级缓存(SessionFactory级别的)。商城系统中,经常访问的数据可以放入缓存,减少数据库交互。 9. **性能优化**:合理配置Hibernate...

    hibernate类库

    二、Hibernate映射机制 Hibernate 使用XML或注解来定义对象与数据库表之间的映射关系,这种映射文件被称为Hibernate Mapping File(hbm.xml)。映射文件定义了实体类和数据库表的对应关系,包括字段、主键、外键、...

Global site tag (gtag.js) - Google Analytics