一 多对一关联
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数据库截图