Hibernate学习笔记(七)Hibernate 映射关系
来源:互联网 发布:命运2 枪匠遥测数据 编辑:程序博客网 时间:2024/06/06 04:03
一:Hibernate 一对一映射关系实现
1,按照主键映射;
User类
public class User {private int id;private String name;private 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;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}}
Address类
public class Address {private int id;private String address;private String zipcode;private User user;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getZipcode() {return zipcode;}public void setZipcode(String zipcode) {this.zipcode = zipcode;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}}
User.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.java1234.model"><class name="User" table="t_user"><id name="id" column="userId"><generator class="native"></generator></id><property name="name" column="userName"></property><one-to-one name="address" class="com.java1234.model.Address" cascade="all"></one-to-one></class></hibernate-mapping>Address.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.java1234.model"><class name="Address" table="t_address"><id name="id" column="addressId"><generator class="foreign"><param name="property">user</param></generator></id><property name="address" column="address"></property><property name="zipcode" column="zipcode"></property><one-to-one name="user" class="com.java1234.model.User" constrained="true"></one-to-one></class></hibernate-mapping>
TUnit
@Testpublic void testSave1(){User user=new User();user.setName("张三");Address address=new Address();address.setAddress("某地方");address.setZipcode("43242");address.setUser(user);user.setAddress(address);session.save(user);}
2,按照外键映射;
User2.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.java1234.model"><class name="User2" table="t_user2"><id name="id" column="userId"><generator class="native"></generator></id><property name="name" column="userName"></property><many-to-one name="address" class="com.java1234.model.Address2" column="addressId" cascade="all" unique="true"></many-to-one></class></hibernate-mapping>
Address2.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.java1234.model"><class name="Address2" table="t_address2"><id name="id" column="addressId"><generator class="native"></generator></id><property name="address" column="address"></property><property name="zipcode" column="zipcode"></property><one-to-one name="user" class="com.java1234.model.User2" property-ref="address"></one-to-one></class></hibernate-mapping>
JUnit
@Testpublic void testSave2(){User2 user=new User2();user.setName("李四");Address2 address=new Address2();address.setAddress("某地方2");address.setZipcode("432422");address.setUser(user);user.setAddress(address);session.save(user);}
二:Hibernate 多对多映射关系实现
由于学生与课程是多对多所以可用该例进行学习。
1.单向
Student类
public class Student {private int id;private String name;private Set<Course>courses=new HashSet<Course>();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 Set<Course> getCourses() {return courses;}public void setCourses(Set<Course> courses) {this.courses = courses;}}
Course类
public class Course {private int id;private String courseName; //课程名public int getId() {return id;}public void setId(int id) {this.id = id;}public String getCourseName() {return courseName;}public void setCourseName(String courseName) {this.courseName = courseName;}}Student.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.zhu.model"><class name="Student" table="t_student"> <id name="id" column="studentId"> <generator class="native"></generator> </id> <property name="name"></property> <set name="courses" table="student_course" cascade="save-update"> <key column="student_id"></key><many-to-many class="com.zhu.model.Course" column="course_id"></many-to-many> </set></class></hibernate-mapping>Course.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.zhu.model"><class name="Course" table="t_course"> <id name="id" column="courseId"> <generator class="native"></generator> </id> <property name="courseName"></property> </class></hibernate-mapping>JUnit
@Testpublic void TestSave(){Student s1=new Student();s1.setName("张三");Student s2=new Student();s2.setName("李四");Course c1=new Course();c1.setCourseName("数学");Course c2=new Course();c2.setCourseName("语文");s1.getCourses().add(c1);s1.getCourses().add(c2);s2.getCourses().add(c1);s2.getCourses().add(c2);session.save(s1);session.save(s2);}@Testpublic void TestLoad(){Student s=(Student)session.get(Student.class, 1);for(Course c:s.getCourses()){System.out.println(c.getCourseName());}}2双向
Student2类
public class Student2 {private int id;private String name;private Set<Course2>courses=new HashSet<Course2>();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 Set<Course2> getCourses() {return courses;}public void setCourses(Set<Course2> courses) {this.courses = courses;}}Course类
public class Course2 {private int id;private String courseName; //课程名private Set<Student2>students=new HashSet<Student2>();public Set<Student2> getStudents() {return students;}public void setStudents(Set<Student2> students) {this.students = students;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getCourseName() {return courseName;}public void setCourseName(String courseName) {this.courseName = courseName;}}Student2.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.zhu.model"><class name="Student2" table="t_student2"> <id name="id" column="studentId"> <generator class="native"></generator> </id> <property name="name" column="stuName"></property> <set name="courses" table="student_course2" cascade="save-update"> <key column="student_id"></key><many-to-many class="com.zhu.model.Course2" column="course_id"></many-to-many> </set></class></hibernate-mapping>Course2.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.zhu.model"><class name="Course2" table="t_course2"> <id name="id" column="courseId"> <generator class="native"></generator> </id> <property name="courseName"></property> <set name="students" inverse="true" table="student_course2"> <key column="course_id"></key> <many-to-many class="com.zhu.model.Student2" column="student_id" ></many-to-many> </set></class></hibernate-mapping>
JUnit
@Testpublic void TestSave2(){Student2 s1=new Student2();s1.setName("张三");Student2 s2=new Student2();s2.setName("李四");Course2 c1=new Course2();c1.setCourseName("数学");Course2 c2=new Course2();c2.setCourseName("语文");s1.getCourses().add(c1);s1.getCourses().add(c2);s2.getCourses().add(c1);s2.getCourses().add(c2);session.save(s1);session.save(s2);}@Testpublic void TestLoad2(){//通过课程获取学习该课程的学生Course2 c=(Course2)session.get(Course2.class, 1);for(Student2 s:c.getStudents()){System.out.println(s.getName());}}
阅读全文
1 0
- Hibernate学习笔记(七)Hibernate 映射关系
- Hibernate学习笔记(五)----关系映射
- Hibernate学习笔记(3)---hibernate关联关系映射
- Hibernate学习笔记(七)----集合映射、继承映射、作业
- hibernate(七)-----关系映射(一)
- Hibernate映射学习--七种映射关系解析
- Hibernate学习笔记(七)【映射值类型集合】
- Hibernate学习笔记(七)【映射值类型集合】
- Hibernate 3.2 学习笔记 映射继承关系
- Hibernate学习笔记-------继承关系映射
- Hibernate学习笔记 2 - 关系映射配置
- Hibernate 学习笔记05 --对象关系映射
- 【Hibernate学习笔记】映射继承关系
- Hibernate学习笔记----映射继承关系
- SSH之hibernate学习笔记----关系映射
- Hibernate学习笔记3--映射关联关系
- Hibernate学习笔记(六)【映射继承关系】
- Hibernate学习笔记(五)【映射组成关系】
- UIScrollView常用属性
- Android中两种序列化方式
- 项目管理-PMP-第12章 项目干系人管理
- centos clamav杀毒软件安装配置及查杀,没想到linux下病毒比windows还多!
- Android studio多渠道打包
- Hibernate学习笔记(七)Hibernate 映射关系
- 3des加密数据长度报错
- php_redis
- 李航《统计学习方法》第一章复习与习题参考解答
- Python asyncio文档翻译--运行一个消息循环EventLoop
- UIScrollView代理方法
- 1.SpringMVC_简单HelloWorld
- C语言中的4字节对齐详解
- 项目管理-PMP-第13章 考试认证计算题目