(5)hibernate多对一,一对多,一对一,多对多
生活随笔
收集整理的這篇文章主要介紹了
(5)hibernate多对一,一对多,一对一,多对多
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一 多對一關聯
1 映射與原理分析
2 例子結構圖
3代碼
3.1 Department.java
package com.learning;public class Department {private int id;private String name;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;}}
3.2 Employee.java
package com.learning;public class Employee {private int id;private String name;private Department depart;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 Department getDepart() {return depart;}public void setDepart(Department depart) {this.depart = depart;}}
3.3 Department.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.learning"><class table="department" name="Department"><id name="id"><generator class="native"/></id><property name="name"/></class></hibernate-mapping>
3.4 Employee.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.learning"><class table="employee" name="Employee"><id name="id"><generator class="native"/></id><property name="name"/><many-to-one name="depart" column="depart_id"></many-to-one></class></hibernate-mapping
3.5 ManyToOneTest.java
package com.test;import java.util.Date; import java.util.List;import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration;import com.learning.Department; import com.learning.Employee;public class ManyToOneTest {private SessionFactory sessionFactory;{this.init();}private void init(){Configuration cfg = new Configuration();sessionFactory= cfg.configure().buildSessionFactory();}/*** 多對一測試* */private void add(){Session session = this.sessionFactory.openSession();session.beginTransaction();Department department = new Department();department.setName("depart name");Employee employee1 = new Employee();employee1.setDepart(department);employee1.setName("emp name1");Employee employee2 = new Employee();employee2.setDepart(department);employee2.setName("emp name2");session.save(department);session.save(employee1);session.save(employee2);session.getTransaction().commit();session.close();}public static void main(String[] args) {ManyToOneTest manyToOneTest = new ManyToOneTest();manyToOneTest.add();}}4 Sql語句
5 數據庫結果
二 一對多關聯
1映射與原理分析
2例子結構圖
3 代碼
3.1? Department.java
package com.learning;import java.util.HashSet;
import java.util.Set;public class Department {private int id;private String name;private Set<Employee> emps = new HashSet<Employee>();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<Employee> getEmps() {return emps;}public void setEmps(Set<Employee> emps) {this.emps = emps;}}
3.2Employee.java
package com.learning;public class Employee {private int id;private String name;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;}}
3.3 Department.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.learning"><class table="department" name="Department"><id name="id"><generator class="native"/></id><property name="name"/><set name="emps"><key column="depart_id"/><one-to-many class="Employee"/></set></class></hibernate-mapping>
3.4 Employee.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.learning"><class table="employee" name="Employee"><id name="id"><generator class="native"/></id><property name="name"/></class></hibernate-mapping>
3.5 OneToManyTest.java
package com.test;import java.util.Date; import java.util.List;import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration;import com.learning.Department; import com.learning.Employee;public class OneToManyTest {private SessionFactory sessionFactory;{this.init();}private void init(){Configuration cfg = new Configuration();sessionFactory= cfg.configure().buildSessionFactory();}/*** 一對多測試* */private void add(){Session session = this.sessionFactory.openSession();session.beginTransaction();Department department = new Department();department.setName("depart name");Employee employee1 = new Employee();employee1.setName("emp name1");Employee employee2 = new Employee();employee2.setName("emp name2");department.getEmps().add(employee1);department.getEmps().add(employee2);session.save(employee1);session.save(employee2);session.save(department);session.getTransaction().commit();session.close();}public static void main(String[] args) {OneToManyTest oneToManyTest = new OneToManyTest();oneToManyTest.add();}}4 Sql語句
5數據庫結果
三 一對一關聯
1 映射與原理分析
2 例子結構圖
3 代碼
3.1IdCard.java
package com.learning;public class IdCard {private int id;private String name;private Person person;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 Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;}}
3.2 Person.java
package com.learning;public class Person {private int id;private String name;private IdCard idCard;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 IdCard getIdCard() {return idCard;}public void setIdCard(IdCard idCard) {this.idCard = idCard;}}
3.3 IdCard.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.learning"><class table="idCard" name="IdCard"><id name="id"> <!-- 一對一映射關鍵位置 --><generator class="foreign"><param name="property">person</param></generator></id><property name="name"/><one-to-one name="person"/></class></hibernate-mapping>
3.4 Person.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.learning"><class table="person" name="Person"><id name="id"><generator class="native"/></id><property name="name"/><one-to-one name="idCard"/></class></hibernate-mapping>
3.5 OneToOneTest.java
package com.test;import java.util.Date; import java.util.List;import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration;import com.learning.IdCard; import com.learning.Person;public class OneToOneTest {private SessionFactory sessionFactory;{this.init();}private void init(){Configuration cfg = new Configuration();sessionFactory= cfg.configure().buildSessionFactory();}/*** 一對一測試* */private void add(){Session session = this.sessionFactory.openSession();session.beginTransaction();IdCard idCard = new IdCard();idCard.setName("idCard name");Person person = new Person();person.setName("person name");person.setIdCard(idCard);idCard.setPerson(person);session.save(person);session.save(idCard);session.getTransaction().commit();session.close();}public static void main(String[] args) {OneToOneTest oneToOneTest = new OneToOneTest();oneToOneTest.add();}}4 Sql語句
5?數據庫記錄
四 多對多關聯
1映射與原理分析
2例子結構圖
3代碼
3.1 Student.java
package com.learning;import java.util.HashSet;
import java.util.Set;public class Student {private int id;private String name;private Set<Teacher> teachers = new HashSet<Teacher>();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<Teacher> getTeachers() {return teachers;}public void setTeachers(Set<Teacher> teachers) {this.teachers = teachers;}}
3.2 Teacher.java
package com.learning;import java.util.HashSet;
import java.util.Set;public class Teacher {private int id;private String name;private Set<Student> students = new HashSet<Student>();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<Student> getStudents() {return students;}public void setStudents(Set<Student> students) {this.students = students;}}
3.3 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.learning"><class table="student" name="Student"><id name="id"><generator class="native"/></id><property name="name"/><set name="teachers" table="teacher_student"><key column="student_id"/><many-to-many class="Teacher" column="teacher_id"/></set></class></hibernate-mapping>
3.4 Teacher.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.learning"><class table="teacher" name="Teacher"><id name="id"><generator class="native"/></id><property name="name"/><set name="students" table="teacher_student"><key column="teacher_id"/><many-to-many class="Student" column="student_id"/></set></class></hibernate-mapping>
3.5 ManyToManyTest.java
package com.test;import java.util.Date; import java.util.List;import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration;import com.learning.Student; import com.learning.Teacher;public class ManyToManyTest {private SessionFactory sessionFactory;{this.init();}private void init(){Configuration cfg = new Configuration();sessionFactory= cfg.configure().buildSessionFactory();}/*** 多對多測試* */private void add(){Session session = this.sessionFactory.openSession();session.beginTransaction();Student student1 =new Student();student1.setName("student1");Student student2 =new Student();student2.setName("student2");Teacher teacher1 = new Teacher();teacher1.setName("teacher1");Teacher teacher2 = new Teacher();teacher2.setName("teacher2");Teacher teacher3 = new Teacher();teacher3.setName("teacher3");Teacher teacher4 = new Teacher();teacher4.setName("teacher4");teacher1.getStudents().add(student1);teacher1.getStudents().add(student2);student1.getTeachers().add(teacher3);student1.getTeachers().add(teacher4);session.save(teacher3);session.save(teacher4);session.save(teacher1);session.save(teacher2);session.save(student1);session.save(student2);session.getTransaction().commit();session.close();}public static void main(String[] args) {ManyToManyTest manyToManyTest = new ManyToManyTest();manyToManyTest.add();}}4 Sql語句
5數據庫截圖
總結
以上是生活随笔為你收集整理的(5)hibernate多对一,一对多,一对一,多对多的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (4) hibernate增删查改+批量
- 下一篇: (6) Hibernate的集合映射