12.Hibernate双向基于链表的1-N映射
来源:互联网 发布:比特币购买 知乎 编辑:程序博客网 时间:2024/04/30 00:46
多的一方映射
<?xml version="1.0" encoding="GBK"?><!-- 指定Hibernate的DTD信息 --><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="org.crazyit.app.domain"><!-- 映射Person持久化类 --><class name="Person" table="person_inf"><!-- 映射标识属性id --><id name="id" column="person_id"><!-- 定义主键生成器策略 --><generator class="identity" /></id><!-- 用于映射普通属性 --><property name="name" type="string" /><property name="age" type="int" /><!-- 映射集合属性,集合元素是其他持久化实体 没有指定cascade属性 --><set name="addresses" inverse="true" table="person_address"><!-- 指定关联的外键列 --><key column="person_id" /><!-- 用以映射到关联类属性 --><many-to-many class="Address" column="address_id"unique="true" /></set></class></hibernate-mapping>一方的映射文件,join用来将表的主键映射到连接表
<?xml version="1.0" encoding="GBK"?><!-- 指定Hibernate的DTD信息 --><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="org.crazyit.app.domain"><!-- Address持久化类--><class name="Address" table="address_inf"><!-- 映射标识属性addressId --><id name="addressId" column="address_id"><!-- 指定主键生成器策略 --><generator class="identity"/></id><!-- 映射普通属性addressdetail --><property name="addressDetail"/><!-- 显式使用join元素确定连接表 --><join table="person_address"><!-- key映射外键列 --><key column="address_id"/><!-- 使用many-to-one映射N-1关联实体 --><many-to-one name="person"column="person_id" not-null="true"/></join></class></hibernate-mapping>
package org.crazyit.app.domain;public class Address {// 标识属性private int addressId;// 地址详细信息private String addressDetail;// 记录关联实体的person属性private Person person;// 无参数的构造器public Address() {}// 初始化全部属性的构造器public Address(String addressDetail) {this.addressDetail = addressDetail;}// addressId属性的setter和getter方法public void setAddressId(int addressId) {this.addressId = addressId;}public int getAddressId() {return this.addressId;}// addressDetail属性的setter和getter方法public void setAddressDetail(String addressDetail) {this.addressDetail = addressDetail;}public String getAddressDetail() {return this.addressDetail;}// person属性的setter和getter方法public void setPerson(Person person) {this.person = person;}public Person getPerson() {return this.person;}}
package org.crazyit.app.domain;import java.util.*;public class Person {// 标识属性private Integer id;// Person的name属性private String name;// 保留Person的age属性private int age;// 1-N关联关系,使用Set来保存关联实体private Set<Address> addresses = new HashSet<Address>();// id属性的setter和getter方法public void setId(Integer id) {this.id = id;}public Integer getId() {return this.id;}// name属性的setter和getter方法public void setName(String name) {this.name = name;}public String getName() {return this.name;}// age属性的setter和getter方法public void setAge(int age) {this.age = age;}public int getAge() {return this.age;}// addresses属性的setter和getter方法public void setAddresses(Set<Address> addresses) {this.addresses = addresses;}public Set<Address> getAddresses() {return this.addresses;}}
测试代码
public class PersonManager {public static void main(String[] args) {PersonManager mgr = new PersonManager();mgr.testPerson();HibernateUtil.sessionFactory.close();}private void testPerson() {Session session = HibernateUtil.currentSession();Transaction tx = session.beginTransaction();// 创建一个Person对象Person p = new Person();// 设置Person的Name为Yeeku字符串p.setName("Yeeku");p.setAge(29);// 持久化Person对象(对应于插入主表记录)session.save(p);// 创建一个瞬态的Address对象Address a = new Address("广州天河");// 先设置Person和Address之间的关联关系a.setPerson(p);// 再持久化Address对象(对应于插入从表记录)session.persist(a);// 创建一个瞬态的Address对象Address a2 = new Address("上海虹口");// 先设置Person和Address之间的关联关系a2.setPerson(p);// 再持久化Address对象(对应于插入从表记录)session.persist(a2);tx.commit();HibernateUtil.closeSession();}}
源码来自李刚的j2e轻量级应用
0 0
- 12.Hibernate双向基于链表的1-N映射
- 10.Hibernate双向基于链表的1-1映射
- 13.Hibernate双向无链表的1-N映射
- Hibernate的关联映射(5)-双向1-N关联
- Hibernate-映射关系- 1<->n(双向)
- 8.Hibernate双向基于外键的1-1映射
- 9.Hibernate双向基于主键的1-1映射
- hibernate基于外键的双向1-1关系映射
- Hibernate的关联映射(6)-双向N-N关联
- Hibernate关系映射2:双向1-N关联
- hibernate基于主键的一对一映射(单双向)
- hibernate基于外键的一对一映射--单向和双向
- Hibernate关联关系配置-----基于连接表的双向一对多/多对一映射配置
- Hibernate关联关系配置-----基于连接表的双向一对一映射配置
- Hibernate的双向1-N关联(五)
- Hibernate的双向关系映射
- Hibernate-映射关系- 基于主键映射的1<->1映射
- hibernate映射1对n的输出
- codeforces 475D CGCDSSQ ST表+二分
- Win7 NFS 设置详解
- 消除warning:PerformSelector may cause a leak because its selector is unknown
- R语言之RMysql 包安装
- 1412200906-hd-矩形A+B
- 12.Hibernate双向基于链表的1-N映射
- 八方位位置判断代码——1
- Ubuntu14.04如何备份和恢复系统
- C++学习笔记之三(C++语句基础之表达式与语句)
- iOS端极光推送遇到的问题
- 【大话设计模式】——结构型模式总结
- 爸妈加我微信了!
- sgu-200 Cracking RSA(简单的高斯消元求自由变元个数)
- 第十六周项目4 - 日期结构体(生日相差几天)