配置xml文件

有两个,在主配置文件中配置一对多的联系:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping>
<class name="star.july.d_one2many.User" table="o_user"><id name="id" column="uid"><generator class="native"></generator></id><property name="name" column="name"></property><!-- 一对多set集合映射table:不需要配置key,外键cascade:save-update:保存和更新操作delete:删除操作all:save-update+delete--><set name="address" cascade="save-update"><key column="uid"></key><one-to-many class="star.july.d_one2many.Address"/></set></class></hibernate-mapping>

另一个配置文件,存放地址的:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping>
<class name="star.july.d_one2many.Address" table="t_address"><id name="id" column="id"><generator class="native"></generator></id><property name="name" column="name"></property><property name="zipcode" column="zipcode"></property><property name="phone" column="phone"></property><property name="address" column="address"></property></class></hibernate-mapping>
创建实体类
在主类中创建关联对象:
package star.july.d_one2many;
import java.util.HashSet;
import java.util.Set;
public class User {private int id;private String name;//关联对象private Set<Address> address =new HashSet<Address>();public Set<Address> getAddress() {return address;}public void setAddress(Set<Address> address) {this.address = address;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", address=" + address+ "]";}}

存放地址类

package star.july.d_one2many;
public class Address {private int id;private String name;private String zipcode;private String phone;private String address;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getZipcode() {return zipcode;}public void setZipcode(String zipcode) {this.zipcode = zipcode;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "Address [id=" + id + ", name=" + name + ", zipcode=" + zipcode+ ", phone=" + phone + ", address=" + address + "]";}}

测试:

package star.july.d_one2many;
import java.util.Set;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import star.july.util.HibernateUtil;
//set集合
public class SetDemo {//添加@Testpublic void test1(){Session session = HibernateUtil.getSession();//获取事务对象Transaction ts = session.getTransaction();try{ts.begin();//创建对象User u = new User();//      u.setId(3);u.setName("小年");Address address = new Address();address.setName("姜妮");address.setPhone("1392388948");address.setZipcode("524088");address.setAddress("北凉龙虎山");Address address2 = new Address();address2.setName("大红薯");address2.setPhone("1567384048");address2.setZipcode("524000");address2.setAddress("北莽");//保存收货地址u.getAddress().add(address);u.getAddress().add(address2);session.save(u);
//          session.save(address);ts.commit();HibernateUtil.close(session);}catch(Exception e){e.printStackTrace();ts.rollback();}}//查询@Testpublic void test2(){Session session = HibernateUtil.getSession();//获取事务对象Transaction ts = session.getTransaction();try{ts.begin();User u = (User)session.get(User.class, 2);Set<Address> ads = u.getAddress();//对象遍历输出for(Address a : ads){System.out.println(a);}ts.commit();HibernateUtil.close(session);}catch(Exception e){e.printStackTrace();ts.rollback();}}//修改@Testpublic void test3(){Session session = HibernateUtil.getSession();//获取事务对象Transaction ts = session.getTransaction();try{ts.begin();//先查询会员User u  = (User)session.get(User.class, 2);//再修改Address a = (Address) session.get(Address.class, 3);//移除两者之间的关系,即把外键变为nullu.getAddress().remove(a);//删除收货地址session.delete(a);ts.commit();HibernateUtil.close(session);}catch(Exception e){e.printStackTrace();ts.rollback();}}
}

Hibernate 一对多的联系(Set关联) 对象关系映射相关推荐

  1. Hibernate - 对象关系映射文件(*.hbm.xml)详解

    对象关系映射文件,即POJO 类和数据库的映射文件*.hbm.xml(映射文件的扩展名为 .hbm.xml). POJO 类和关系数据库之间的映射可以用一个XML文档来定义. 通过 POJO 类的数据 ...

  2. Hibernate对象关系映射详解之一对多关系映射

    Hibernate对象关系映射详解之"一对多"关系映射 之前学习Hibernate框架的时候,对这七大关系映射一直是云里雾里的,虽然可以仿照写出代码,但是不能独立编写出来.鉴于工作 ...

  3. Hibernate旅程(五)Hibernate映射--基本类映射和对象关系映射

    回想一些我们在没有学习ssh的时候,我们建立数据库的表时,首先是数据库建模E-R图,然后再通过实体模型来建立关系模型,再建立相应的表.实体间存在三种关系,一对一,一对多(或者说多对一),多对多.而如今 ...

  4. Hibernate之对象关系映射文件

    一.对象关系映射文件 POJO类和关系数据库之间的映射可以用一个XML文档来定义 在运行时Hibernate将根据这个映射文件来生成各种SQL语句 映射文件的拓展名为 .hbm.xml 1.映射文件说 ...

  5. 【分享】关于对象关系映射的理解

    对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据 ...

  6. orm 对象关系映射

    引用:http://baike.baidu.com/view/197951.htm 对象关系映射(ORM)提供了概念性的.易于理解的模型化数据的方法.ORM方法论基于三个核心原则: 简单:以最基本的形 ...

  7. Object/Relation Mapping 对象关系映射

    对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的.面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应 ...

  8. [NHibernate] NHibernate对象关系映射工具了解

    NHibernate是把Java的Hibernate核心部分移植到Microsoft .NET Framework上.它是一个对象关系映射工具,其目标是把.NET对象持久化到关系数据库. NHiber ...

  9. 学习笔记之什么是持久化和对象关系映射ORM技术

    ----------------本文转自:http://www.cppblog.com/javenstudio/articles/541.html--------------------- 何谓&qu ...

  10. mysql数据库对象关系映射

    http://www.2cto.com/database/201310/248690.html mysql数据库对象关系映射 1.对"对象关系映射"的理解 a.对象:可以理解为ja ...

最新文章

  1. ADMT3.2迁移域用户
  2. SAP标准成本估算删除
  3. java每秒执行一次_Java性能权威指南
  4. 【tensorflow】——创建tensor的方法
  5. 无法检查指定的位置是否位于cfs上_(干货分享)一文搞明白 节气门位置传感器的作用、故障类型与症状、诊断方法...
  6. c ++类成员函数_仅使用C ++创建具有公共数据成员的类
  7. Excel——多个Sheet页合并成一个
  8. EntityFramework进阶——数据变更冲突
  9. For in + 定时器
  10. mkdir: 无法创建目录“/home/lj/.tldr“: 文件已存在
  11. nlp----基于检索的问答系统(bert相似度模型,倒排表)
  12. vmware复制fedora16出现网络启动错误
  13. 数值分析原理课程实验——四阶龙格-库塔(Runge-Kutta)方法
  14. [软件工程基础]结队项目——地铁
  15. 【Scratch】进阶篇-《Scratch游戏开发》超级躲避球
  16. 砸金蛋html5小游戏设计总结
  17. 12C新特性--Application Continuity
  18. 笔试题??智商题??
  19. 下载想看的英文kindle 电子书
  20. mac版eclipse连接mysql_将Eclipse连接到mysql mac os x jdbc驱动程序

热门文章

  1. 编写TA链接静态库的方法
  2. Linux基础维护——笔记
  3. Fabric--区块链应用开发
  4. 双机调试在线下载符号文件
  5. MoeCTF 2021Re部分------Midpython.exe
  6. 常用ARM指令总结(未完待续)
  7. 网络安全人才的发展情况是怎么样的呢?快上车,带你了解
  8. 驱动层和r3程序通讯的列子参考爱写驱动的女装大佬
  9. android判断模拟器的三种方法
  10. 模块隐藏(LDR_MODULE链 与 PE特征)