Hibernate 一对多的联系(Set关联) 对象关系映射
来源:互联网 发布:会员卡计费系统c语言 编辑:程序博客网 时间:2024/06/06 03:39
配置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; } @Override public 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; } @Override public 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 { //添加 @Test public 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(); } } //查询 @Test public 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(); } } //修改 @Test public 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); //移除两者之间的关系,即把外键变为null u.getAddress().remove(a); //删除收货地址 session.delete(a); ts.commit(); HibernateUtil.close(session); }catch(Exception e){ e.printStackTrace(); ts.rollback(); } }}
0 0
- Hibernate 一对多的联系(Set关联) 对象关系映射
- hibernate的映射:一对多关联关系
- Hibernate映射一对多的关联关系
- 关联映射的关系(一对多)
- Hibernate 映射一对多关联关系
- hibernate一对多关系映射(自身关联)
- hibernate 一对多 关系关联映射
- hibernate映射一对多双向关联关系
- Hibernate 映射一对多关联关系
- Hibernate关联关系映射(一对多/多对一)
- hibernate之映射关系一对多(自身关联)
- hibernate-关系映射(一对多单向关联)-9
- 【HIbernate框架学习】:Hibernate对象关系映射之单向一对多关联映射
- 【HIbernate框架学习】:Hibernate对象关系映射之双向一对多关联映射
- Hibernate -- 映射实体关联关系(一对多关联关系)
- Hibernate高级实体关联映射之多值的实体关联(一对多关联,使用set)
- hibernate映射总结详解: 映射一对多双向关联关系
- Hibernate中的几种映射关系----------一对多关联映射
- tensorflow安装(非源码安装,ubuntu 14.04 LTS)
- c-language:语法
- nulls first / nulls last
- 统计学习方法读书笔记-knn
- 初始化一个带npm的package.json和TypeScript项目
- Hibernate 一对多的联系(Set关联) 对象关系映射
- ajaxfileupload.js上传文件
- HDU2710 Max Factor
- Excel Sheet Column Number
- C++string类常用函数
- Android之NetworkOnMainThreadException异常
- segmentfault学习笔记
- 百度贴吧里见到的一道题
- c-language: 库函数