Hibernate one-to-many && many-to-many 的关系映射
2017-05-02 17:40
591 查看
one-to-many 关系映射
实体类:
Order.hbm.xml配置
Customer.hbm.xml配置
many-to-many 关系映射
实体类:
Student.hbm.xml配置
Course.hbm.xml配置
实体类:
/** * 订单的实体: * */ public class Order { private Integer oid; private String addr; // 订单属于某一个客户.放置一个客户的对象. private Customer customer; public Integer getOid() { return oid; } public void setOid(Integer oid) { this.oid = oid; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } public Customer getCustomer() { return customer; } public void setCustomer(Customer customer) { this.customer = customer; } }
/** * 客户的实体: * */ public class Customer { private Integer cid; private String cname; // 一个客户有多个订单. private Set<Order> orders = new HashSet<Order>(); public Integer getCid() { return cid; } public void setCid(Integer cid) { this.cid = cid; } public String getCname() { return cname; } public void setCname(String cname) { this.cname = cname; } public Set<Order> getOrders() { return orders; } public void setOrders(Set<Order> orders) { this.orders = orders; } }
Order.hbm.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="cn.itcast.hibernate3.demo2.Order" table="orders"> <!-- 配置唯一标识 --> <id name="oid" column="oid"> <generator class="native"/> </id> <!-- 配置普通属性 --> <property name="addr" column="addr" length="50"/> <!-- 配置映射 --> <!-- <many-to-one>标签 name :关联对象的属性的名称. column :表中的外键名称. class :关联对象类的全路径 --> <many-to-one name="customer" column="cno" class="cn.itcast.hibernate3.demo2.Customer"/> </class> </hibernate-mapping>
Customer.hbm.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="cn.itcast.hibernate3.demo2.Customer" table="customer"> <!-- 配置唯一标识 --> <id name="cid" column="cid"> <generator class="native"/> </id> <!-- 配置普通属性 --> <property name="cname" column="cname" length="20"/> <!-- 建立映射 --> <!-- 配置一个集合 <set>的name Customer对象中的关联对象的属性名称. --> <set name="orders" cascade="save-update" inverse="true"> <!-- <key>标签中column:用来描述一对多多的一方的外键的名称. --> <key column="cno"></key> <!-- 配置一个<one-to-many>标签中class属性:订单的类的全路径 --> <one-to-many class="cn.itcast.hibernate3.demo2.Order"/> </set> </class> </hibernate-mapping>
many-to-many 关系映射
实体类:
/** * 学生的实体类 * */ public class Student { private Integer sid; private String sname; // 一个学生选择多门课程: private Set<Course> courses = new HashSet<Course>(); public Integer getSid() { return sid; } public void setSid(Integer sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public Set<Course> getCourses() { return courses; } public void setCourses(Set<Course> courses) { this.courses = courses; } }
/** * 课程的实体类: * */ public class Course { private Integer cid; private String cname; // 一个课程被多个学生选择: private Set<Student> students = new HashSet<Student>(); public Integer getCid() { return cid; } public void setCid(Integer cid) { this.cid = cid; } public String getCname() { return cname; } public void setCname(String cname) { this.cname = cname; } public Set<Student> getStudents() { return students; } public void setStudents(Set<Student> students) { this.students = students; } }
Student.hbm.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="cn.itcast.hibernate3.demo3.Student" table="student"> <!-- 配置唯一标识 --> <id name="sid" column="sid"> <generator class="native"/> </id> <!-- 配置普通属性 --> <property name="sname" column="sname" length="20"/> <!-- 配置关联映射 --> <!-- <set>标签 name:对应学生中的课程集合的名称 table:中间表名称. --> <set name="courses" table="stu_cour" cascade="save-update,delete"> <!-- <key>中column写当前类在中间表的外键.--> <key column="sno"></key> <!-- <many-to-many>中class:另一方类的全路径. column:另一方在中间表中外键名称--> <many-to-many class="cn.itcast.hibernate3.demo3.Course" column="cno"/> </set> </class> </hibernate-mapping>
Course.hbm.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="cn.itcast.hibernate3.demo3.Course" table="course"> <!-- 配置唯一标识 --> <id name="cid" column="cid"> <generator class="native"/> </id> <!-- 配置普通属性 --> <property name="cname" column="cname" length="20"/> <!-- 配置与学生关联映射 --> <!-- <set>中name:对应当前类中的学生的集合的名称 table:中间表的名称--> <set name="students" table="stu_cour" inverse="true"> <!-- <key>中column:当前类在中间表中外键 --> <key column="cno"></key> <!-- <many-to-many>中class:另一方的类全路径. column:另一方在中间表中外键名称 --> <many-to-many class="cn.itcast.hibernate3.demo3.Student" column="sno"/> </set> </class> </hibernate-mapping>
相关文章推荐
- Hibernate关系映射(四)一对多单向关联@OneToMany Annotation方式
- Hibernate实体关系映射(OneToMany、ManyToOne双边)——完整实例
- Hibernate 、多表关联映射-多对一关系(many-to-one)
- hibernate注解版关联映射Many-to-One/Many-to-Many等&异常处理
- Hibernate映射关系解析(三)--Unidirectional associations--one-to-many
- Hibernate 、多表关联映射-多对一关系(many-to-one)
- Hibernate实体关系映射(OneToMany单边)——完整实例
- Hibernate 、多表关联映射-多对一关系(many-to-one)
- Hibernate 、多表关联映射-多对一关系(many-to-one)
- hibernate 多对一映射 many-to-one
- Hibernate使用property-ref属性解决遗留数据库One To Many关系的问题。
- hibernate映射文件one-to-many元素属性
- 数据库设计<many-to-one>和<one-to-many>双向映射
- hibernate映射文件many-to-one元素属性
- Hibernate中many-to-one关系的编写
- Hibernate 表关系描述之OneToMany
- hibernate映射many-to-one 属性
- 我的MyGeneration模板生成NHibernate映射文件和关系(one-to-one,one-to-many,many-to-many)
- Hibernate中many-to-one关系的编写
- Hibernate 表关系描述之OneToMany