hibernate中一一关系映射
1.基于外键的一对一关联映射:
1.单向的关联映射
单向的关联映射中,主控端知道关联的另一表是谁,而被控端不知道被谁给关联了。
怎么配置呢?
在数据持久化类当中,被控端与无关联时候一样的写法,主控端则是应用被控端的对象,并实现get/set方法
Xxx.hbm.xml中,被控端也无需任何的改变,主控端则是添加<many-to-one></many-to-one>标签,
其中name值为应用被控端属性的属性名 column值为外键名 unique属性值来决定是否是一一对应,true则是一一对应,false否
持久化对象Java
被控端:
public class Address { private int id; private String addr; //省去get/set方法 }
主控端:
public class Account { private int id; private String name; private Address address; //省去get/set方法 }
Xxx.hbm.xml文件配置:
被控端:
<hibernate-mapping> <class name="com.usc.geowind.lilin.bean.Address" table="Adress"> <id name="id" column="id" > <generator class="native"></generator> </id> <property name="addr" column="addr"></property> </class> </hibernate-mapping>
主控端:
<hibernate-mapping> <class name="com.usc.geowind.lilin.bean.Account" table="Account"> <id name="id" column="id" > <generator class="native"></generator> </id> <property name="name" column="name"></property> <!-- name值为对象中属性名 coulumn为外键 unique为是否一对一 --> <many-to-one name="address" column="address_id" unique="true"></many-to-one> </class> </hibernate-mapping>
2.双向的关联映射
双向的关联映射当中,主控端知道关联的另外一端是谁,而且被控端也知道被谁给关联上了。
在双向关联时候,主控端的设计与单向关联是无异,被控端中,持久化对象中添加主控端的对象引用,
Xxx.hbm.xml文件中添加标签<one-to-one></one-to-one>,属性property-ref的值为主控端引用被控端的属性属性名
被控端:
public class Address { private int id; private String addr; private Account account; //省去get/set方法 }
Xxx.hbm.xml文件配置:
在字段属性下添加该属性,其余不变
<hibernate-mapping> <class name="com.usc.geowind.lilin.bean.Address" table="Adress"> <id name="id" column="id" > <generator class="native"></generator> </id> <property name="addr" column="addr"></property> <!-- onetoone 指定一一关联 property-ref 反向引用主控端的属性名,而不是外键 --> <one-to-one name="account" property-ref="address"></one-to-one> </class> </hibernate-mapping>
2.基于主键的关联映射:
1.单向的关联映射
基于主键的关联映射是两表不依靠外键,靠被另一表的主键来实现的一一映射关系。
被控端的配置与基于外键的被控端的配置一样,但是主控端的配置却有着相当大的区别。
在持久化的对象当中,还是要引用被控端的对象,在Xxx.xml文件配置中,主键的配置如下:
<!-- 外键 --> <generator class="foreign"> <!-- 指明外键的属性值,被引用的对象的属性名 --> <param name="property">idCard</param> </generator>
并且引用外键的标签使用<one-to-one></one-to-one>,其中的属性constrained的值设置为true,是告诉当前的主键使用的是被控端的主键
持久化对象Java
主控端:
public class CItizen { private int id; private String name; private IDCard idCard; //省去get/set方法 }
被控端:
public class IDCard { private int id; private int num; //省去get/set方法 }
Xxx.hbm.xml文件配置:
主控端:
<hibernate-mapping> <class name="com.usc.geowind.lilin.bean.onetoonePK.CItizen" table="CItizen"> <id name="id" column="id"> <!-- 外键 --> <generator class="foreign"> <!-- 指明外键的属性值,被引用的对象的属性名 --> <param name="property">idCard</param> </generator> </id> <property name="name" column="name"></property> <!--constrained 是否告诉当前主键你的值是另外一个表的之间值 --> <one-to-one name="idCard" constrained="true"></one-to-one> </class> </hibernate-mapping>
被控端:
<hibernate-mapping> <class name="com.usc.geowind.lilin.bean.onetoonePK.IDCard" table="IDCrad"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="num" column="num"></property> </class> </hibernate-mapping>
2.双向的关联映射
在配置上与基于主键的单向关联关系的区别:
在JavaBean对象中,引用主控端的对象并实现get/set方法。在Xxx.hbm.xml文件配置:
继续使用<one-to-one></one-to-one>标签
实例:
被控端:
public class IDCard { private int id; private int num; private CItizen cItizen; //省去get/set方法 }
Xxx.hbm.xml中,在属性字段中添加标签
<one-to-one name="cItizen"></one-to-one>就可
相关推荐
**标题:“Hibernate关系映射”** 在Java世界中,Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发者将数据库操作转化为面向对象的方式,极大地简化了数据持久化的复杂性。"多对一"关系映射是Hibernate...
1. **减少乏味的代码**:Hibernate通过自动化SQL生成和结果集映射,显著减少了手动编写SQL和处理结果集的工作量。 2. **面向对象的设计**:Hibernate允许开发者直接操作对象,无需关注底层的数据库交互,提高了代码...
在Java企业级开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中...
SSH(Struts、Spring、Hibernate)是经典的Java Web开发框架,其中Hibernate负责数据访问层,提供了强大的ORM(对象关系映射)功能。本篇文章将深入探讨Hibernate中的一对多和多对多关系映射。 首先,让我们理解一...
这个框架集合了Spring的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)功能,Struts的MVC(Model-View-Controller)设计模式,以及Hibernate的对象关系映射(ORM)解决方案。在构建SSH框架时,...
其中,Hibernate是一个对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互。在SSH项目中,正确配置Hibernate的jar包是确保数据库操作顺利进行的关键步骤。 该压缩包“SSH中Hibernate所需基本jar包”包含...
本教程将聚焦于如何在IntelliJ IDEA(简称IDEA)环境中集成Hibernate,以便利用其强大的对象关系映射(ORM)功能。"基于IDEA的SSH项目之五:集成Hibernate----lib包"这部分内容主要涉及的是项目的库依赖管理,即`lib...
2. **Hibernate框架**:Hibernate是一个对象关系映射(Object-Relational Mapping, ORM)工具,它简化了数据库操作,将Java对象和数据库表之间的映射关系自动处理。在SSH中,Hibernate作为数据访问层,负责数据库的...
1. 对象关系映射(ORM):Hibernate通过XML配置文件或注解将Java类与数据库表进行映射,使得Java对象可以直接持久化到关系数据库中,反之亦然。这样就消除了传统的JDBC代码,提高了开发效率和代码的可读性。 2. ...
在这个组合中,Hibernate作为持久层框架,负责对象关系映射(ORM),Spring则在业务逻辑层提供依赖注入(DI)和面向切面编程(AOP),而Struts则是控制层,处理用户请求并转发到相应的业务逻辑。 Hibernate 5是...
然后,我们需要为每个实体类创建对应的Hibernate映射文件(.hbm.xml),这些文件描述了Java对象与数据库表之间的映射关系。例如,如果我们有一个User类,映射文件可能如下所示: ```xml <hibernate-mapping> ...
SSH框架是Java开发中常用的三大框架集成,包括Struts2、Spring和Hibernate。这个压缩包提供了搭建SSH框架所需的所有jar包和配置文件,使得开发者能够快速构建基于这三大框架的应用。 Struts2作为MVC(Model-View-...
本篇主要关注的是SSH中的Hibernate部分,一个强大的对象关系映射(ORM)框架,它允许开发者用Java对象来操作数据库,而无需直接编写SQL语句。 在“SSH学习记录(5)-简单Hibernate”中,我们可能将深入探讨以下几点:...
3. **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。通过Hibernate,开发者可以将Java对象直接映射到数据库表,无需编写繁琐的SQL语句,从而减少了数据库操作的复杂性...
Hibernate通过配置文件(hibernate.cfg.xml)和映射文件(.hbm.xml)定义了对象与表的对应关系,使得开发者可以使用对象的方式来操作数据库,提高了开发效率和可维护性。 4. **SSH2中的Hibernate3.2**:在这个版本...
SSH(Struts、Spring、Hibernate)是Java Web开发中常见的三大框架,而Hibernate作为ORM(对象关系映射)框架,是连接Java应用程序与数据库的关键组件。本总结将围绕Hibernate的核心概念、配置、对象状态、关系映射...
### SSH--Hibernate详解 #### ORM概念与重要性 ORM(对象关系映射)是一种编程技术,用于将对象模型表示的数据与关系型数据库管理系统中的数据相互转换。简而言之,ORM提供了一种机制,使得开发者可以通过操作Java...
3. Hibernate框架:Hibernate是一个对象关系映射(ORM)工具,它简化了Java应用程序与数据库之间的交互。Hibernate通过XML配置或注解将Java对象与数据库表对应,实现了数据的透明持久化。它支持懒加载、级联操作、...
Hibernate是一个对象关系映射(ORM)工具,它简化了数据库操作。通过Hibernate,开发者可以使用Java对象来操作数据库记录,而无需编写大量的SQL语句。Hibernate支持自动持久化、事务管理和查询服务,其核心配置文件...
Hibernate是Java领域的一个流行ORM框架,HBM文件用于定义数据库对象与Java实体类之间的映射关系。在SSH环境下,可能涉及到如何通过SSH连接到数据库服务器,以及如何配置Hibernate以读取或更新远程数据库的HBM映射...