一对多的关系
public class Department {
private Integer id;
private String departmentName;
private Set<Employee> employees=new HashSet<Employee>();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
public Set<Employee> getEmployees() {
return employees;
}
public void setEmployees(Set<Employee> employees) {
this.employees = employees;
}
@Override
public String toString() {
return "Department [departmentName=" + departmentName + ", id=" + id + "]";
}
}
public class Employee {
private Integer id;
private String name;
private Department department;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
@Override
public String toString() {
return "Employee [ id=" + id + ", name="
+ name + "]";
}
}
<!-- 配置映射的包名,一般和对象对应 -->
<hibernate-mapping package="com.hibernate.reflection">
<!-- 配置数据库的表名 -->
<class name="Department" table="department">
<!-- 配置字段 -->
<id name="id" type="int" column="id">
<!-- 表示使用mysql自带的方法 -->
<generator class="native"/>
</id>
<property name="departmentName" column="departmentName"/>
<set name="employees" >
<key column="departmentID"></key>
<one-to-many class="Employee"/>
</set>
</class>
</hibernate-mapping>
<!-- 配置映射的包名,一般和对象对应 -->
<hibernate-mapping package="com.hibernate.reflection">
<!-- 配置数据库的表名 -->
<class name="Employee" table="employee">
<!-- 配置字段 -->
<id name="id" type="int" column="id">
<!-- 表示使用mysql自带的方法 -->
<generator class="native"/>
</id>
<property name="name"/>
<many-to-one name="department" class="Department" column="departmentID"></many-to-one>
</class>
</hibernate-mapping>
基于外键的一对一关联
public class Person {
private Integer id;
private String name;
private IdCard idcard;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + "]";
}
public IdCard getIdcard() {
return idcard;
}
public void setIdcard(IdCard idcard) {
this.idcard = idcard;
}
}
public class IdCard {
private Integer id;
private String number;
private Person person;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
@Override
public String toString() {
return "IdCard [id=" + id + ", number=" + number + "]";
}
}
<!-- 配置映射的包名,一般和对象对应 -->
<hibernate-mapping package="com.hibernate.reflection">
<!-- 配置数据库的表名 -->
<class name="Person" table="person">
<!-- 配置字段 -->
<id name="id" type="int" column="id">
<!-- 表示使用mysql自带的方法 -->
<generator class="native"/>
</id>
<property name="name"/>
<one-to-one name="idcard" class="IdCard" property-ref="person"></one-to-one>
</class>
</hibernate-mapping>
<!-- 配置映射的包名,一般和对象对应 -->
<hibernate-mapping package="com.hibernate.reflection">
<!-- 配置数据库的表名 -->
<class name="IdCard" table="idCard">
<!-- 配置字段 -->
<id name="id" type="int" column="id">
<!-- 表示使用mysql自带的方法 -->
<generator class="native"/>
</id>
<property name="number"/>
<many-to-one name="person" class="Person" column="person_Id" unique="true"></many-to-one>
</class>
</hibernate-mapping>
基于主键的一对一
IdCard.hbm.xml映射文件
[html] view plain
copy
<?xmlversion="1.0"?>
<!DOCTYPE hibernate-mappingPUBLIC
<hibernate-mapping>
</hibernate-mapping>
Person.hbm.xml映射文件
[html] view plain
copy
<?xmlversion="1.0"?>
<!DOCTYPE hibernate-mappingPUBLIC
<hibernate-mapping>
</hibernate-mapping>
多对多关联:
public class Student {
private Long id;
private String name;
private Set<Teacher> teachers=new HashSet<Teacher>();
public Long getId() {
return id;
}
public void setId(Long 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;
}
@Override
public String toString() {
return "Student [name=" + name + ", studentId=" + id + "]";
}
}
public class Teacher {
private Long id;
private String name;
private Set<Student> students=new HashSet<Student>();
@Override
public String toString() {
return "Teacher [name=" + name + ", teacherId=" + id + "]";
}
public Long getId() {
return id;
}
public void setId(Long 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;
}
}
<!-- 配置映射的包名,一般和对象对应 -->
<hibernate-mapping package="com.hibernate.reflection">
<!-- 配置数据库的表名 -->
<class name="Student" table="student">
<!-- 配置字段 -->
<id name="id">
<generator class="native"></generator>
</id>
<property name="name" column="name"/>
<!-- <set name="teachers" table="teacher_student">
键值是表示外键的那一列的列名
<key column="studentId"></key>
<many-to-many class="Teacher" column="teacherId"></many-to-many>
</set>
-->
<!-- 表示学生记住老师 -->
<set name="teachers" table="teacher_student" inverse="false">
<key column="studentId"></key>
<many-to-many class="Teacher" column="teacherId"></many-to-many>
</set>
</class>
</hibernate-mapping>
<!-- 配置映射的包名,一般和对象对应 -->
<hibernate-mapping package="com.hibernate.reflection">
<!-- 配置数据库的表名 -->
<class name="Teacher" table="teacher">
<!-- 配置字段 -->
<id name="id">
<generator class="native"></generator>
</id>
<property name="name" column="name"/>
<!-- <set name="students" table="teacher_student">
<key column="teacherId"></key>
<many-to-many class="Student" column="studentId"></many-to-many>
</set>
-->
<set name="students" table="teacher_student" inverse="true" >
<key column="teacherId"></key>
<many-to-many class="Student" column="studentId"></many-to-many>
</set>
</class>
</hibernate-mapping>