`
buliedian
  • 浏览: 1245242 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Hibernate中的几种经典对象模型和关系模型的映射

阅读更多

1.many to one 多对一映射
此种模型最经典的为user-->group,即站在user的角度上看,是由多个user对象属于一个group对象。反过来 的话,则是一个group对应多个user,那是一对多关系。此种映射一旦建立,能在得到user对象的时候通过对象之间的关系得到group的属性。

类:
User:
private int id;
private String name;
private Group group;
Group: 
private int id;
private String name;

主要映射文件:
<class name="com.vle.domain.User" table="t_user">
  <id name="id">
   <generator class="native"/>
  </id>
  <property name="name"/>
  <many-to-one name="group" column="groupid"/>
 </class>

得到属性值:
User u=(User) session.load(User.class, 1);
System.out.print(u.getName()+"-->"+u.getGroup().getName());

2.one2one 主键关联 单向映射
Person-->IdCard 一个人对应一个身份证,"人"引用了"身份证"的主键作为外键,同时也作为"人"这张表的主键。
Person: 
private int id;
private String name;
private IdCard idCard;
IdCard:
private int id;
private String cardNo;

主要映射文件:
<class name="com.vle.domain.Person" table="t_person">
  <id name="id">
   <!-- 通过foreign得到id生成策略,foreign会得到关联对象的标示 -->
   <generator class="foreign">
    <!-- property指的是建立关系的关联对象,即Person中引用IdCard的idCard -->
    <param name="property">idCard</param>
   </generator>
  </id>
  <property name="name"/>
   <!-- 使用one-to-one标签进行描述,不会改变表结构,让hibernate加载关联对象,默认关联对象的主键作为此类的主键
    使用 constrained生成外键约束
    name:指加载对象时,通过Person指定的主键(也就是idCard)把IdCard的关联加上去
    -->
  <one-to-one name="idCard" constrained="true"/>
 </class>

3.one2one 主键关联 双向映射
需要在IdCard对象中加入对Person的引用 
IdCard:
private int id;
private String cardNo;
private Person person;

并且需要在IdCard.hbm.xml中加入对引用的描述:
 <class name="com.vle.domain.IdCard" table="t_idcard">
  <id name="id">
   <generator class="native"/>
  </id>
  <property name="cardNo"/>
  <one-to-one name="person"/>
 </class>

4 one2one 唯一外键关联 单向关联
在person中持有idcard的引用:
private IdCard idCard;
Person映射文件:
 <class name="com.vle.domain.Person" table="t_person">
  <id name="id">
   <generator class="native"/>
    </id>
  <property name="name"/>
  <many-to-one name="idCard" unique="true"/>
 </class>
一对一唯一外键关联可以看做多对一的一种特例,只需要在many to one标签中将unique的属性设置为true即可。

5 one2one 唯一外键关联 双向关联
需要在IdCard中持有对Person的引用
private Person person;
IdCard映射文件:
 <one-to-one name="person" property-ref="idCard"/>
将person用一对一标签描述,并且引用了外键idCard。

5
3
分享到:
评论

相关推荐

    hibernate中的对象关系模型

    以下是对hibernate中几种对象关系模型的详细解释: 1. **依赖**: 在Java中,依赖关系可以通过类的实例方法参数来体现,如示例中的`Person`类的`life`方法接受`Sun`对象作为参数。这种关系表明一个类的方法或行为...

    对象关系映射模型

    ### 对象关系映射模型详解 #### 一、对象关系映射(ORM)概念解析 对象关系映射(Object Relational Mapping,简称ORM)是一种编程技术,用于将关系型数据库中的数据与面向对象编程语言中的对象进行转换。这种技术...

    Hibernate 关联关系映射分类

    Hibernate是一种持久层框架,主要用于Java应用程序中的对象关系映射(ORM),它能够将面向对象的数据模型转换为数据库中的关系型数据模型,从而简化了数据访问和操作的复杂性。 ### 一对一关联 一对一关联是数据库...

    Hibernate教程09_关系映射之组件映射

    在本教程中,我们将深入探讨Hibernate中的一个关键概念——关系映射中的组件映射。Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,它允许开发人员以面向对象的方式处理数据库操作,极大地简化了数据层...

    hibernate E-R模型关系配置

    在Java开发领域,Hibernate是一个非常流行的Object-Relational Mapping(ORM)框架,它允许开发者将Java对象映射到关系数据库的表中,从而简化了数据库操作。本话题将深入探讨如何利用Hibernate配置E-R(实体-关系)...

    hibernate关系映射网址

    通过本文的介绍,我们不仅了解了Hibernate关系映射的基本概念和常用标签,还深入探讨了几种常见的关系类型及其映射方法。理解并熟练掌握这些知识将极大地帮助开发人员利用Hibernate进行高效的数据持久化操作。在未来...

    Hibernate完整使用教程

    hibernate-mapping 文件中定义了对象模型、关系模型、映射关系等信息。 class class 是 Hibernate 中的一个重要概念,用于定义对象模型。class 可以通过 Java 类或 XML 文件来定义。 id id 是 Hibernate 中的一...

    Hibernate关系映射

    在Hibernate中,这种映射主要通过以下几种方式实现: 1. **实体类与表的映射**:每个Java实体类对应一个数据库表,实体类的属性与表的列进行映射。 2. **主键生成策略**:Hibernate提供了多种主键生成策略,如自增...

    hibernate中文参考文档

    Hibernate是一款开源的对象关系映射(Object/Relational Mapping,ORM)框架,它用于Java语言,并且与Hibernate Search、Hibernate Validator等组件一起为Java EE和Java SE应用程序提供持久化服务。Hibernate不仅...

    hibernate学习入门一对多实体映射源码

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的方式,从而简化了数据访问层的编程。在这个“hibernate学习入门之一对多实体映射源码”教程中,我们将...

    将对象映射到关系数据库

    对于类继承结构的映射,有几种常见的策略: 1. **整个层次结构映射到一张表**(Single Table Inheritance,STI):所有子类的数据都存储在同一张表中,通过类型字段区分不同的子类。 2. **每个具体类映射到单独的...

    ormapping关系对象映射用到数据库

    **O/R Mapping**(Object/Relational Mapping),即对象关系映射,是一种编程技术,用于将对象模型与关系型数据库模型进行相互转换。在软件开发中,尤其是在使用关系型数据库的应用程序中,这种技术非常常见。它允许...

    hibernate 映射关系

    在Hibernate中,映射关系是其核心功能之一,它定义了对象与数据库表之间的对应规则,包括一对一、一对多、多对一和多对多四种主要关系。接下来,我们将深入探讨这些映射关系。 一对一(OneToOne)关系: 在数据库...

    HIBERNATE - 符合Java习惯的关系数据库持久化

    2. **对象状态**:Hibernate管理的对象具有三种状态:瞬时态(Transient)、持久态(Persistent)和脱管态(Detached),它们的状态转换由Hibernate的Session负责。 3. **JMX集成**:允许通过JMX(Java Management ...

    J2EE中几种面向对象的数据库映射访问策略:.rar

    在J2EE(Java 2 Platform, Enterprise Edition)开发中,面向对象的数据库映射(Object-Relational Mapping,ORM)是一种重要的技术,它允许程序员使用面向对象的模型来操作数据库,而无需直接编写SQL语句。...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    本章主要介绍关系数据库中的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 ...

    hibernate的软件模型.doc

    ### Hibernate的软件模型详解 #### 一、概念模型 Hibernate 的概念模型主要关注实体...在 Hibernate 中,ORM 模式的核心思想是将 Java 对象模型映射到关系型数据库模型上,从而实现了对象与数据库之间的无缝转换。

    Hibernate 关联关系解除

    在Hibernate中,关联关系主要包括以下几种: 1. 一对一(OneToOne):一个实体对应另一个实体的唯一实例。 2. 一对多(OneToMany):一个实体可以与多个其他实体相关联。 3. 多对一(ManyToOne):多个实体对应另一个实体...

    ORM关系映射

    ORM,全称Object-Relational Mapping,即对象关系映射,是编程领域中一种用于将关系数据库的数据模型映射到面向对象程序设计中的技术。它为开发者提供了一种抽象的方式来处理数据库操作,使得程序员可以使用面向对象...

    hibernate知识复习二:组合映射

    这与聚合映射不同,聚合映射中,子对象可以独立存在,即使父对象被删除,子对象依然可以保留。 在Hibernate中,组合映射主要通过以下几种方式实现: 1. **元素集合映射**:使用`@ElementCollection`注解,适用于非...

Global site tag (gtag.js) - Google Analytics