在Spring Hibernate中,實體關系映射是通過注解或XML配置文件來實現的。這里我們主要介紹使用注解的方式來映射實體關系。
實體關系主要有以下幾種類型:
下面我們通過具體的例子來說明如何映射這些關系。
假設我們有兩個實體類:User和Profile,每個用戶只能有一個用戶配置文件,每個用戶配置文件也只能屬于一個用戶。這是一個典型的一對一關系。
首先,在User實體類中,使用@OneToOne
注解來表示與Profile的關系:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
@OneToOne
@JoinColumn(name = "profile_id")
private Profile profile;
}
然后,在Profile實體類中,使用@OneToOne
注解來表示與User的關系:
@Entity
public class Profile {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String address;
@OneToOne(mappedBy = "profile")
private User user;
}
假設我們有兩個實體類:Department和Employee,一個部門可以有多個員工,但每個員工只能屬于一個部門。這是一個典型的一對多關系。
首先,在Department實體類中,使用@OneToMany
注解來表示與Employee的關系:
@Entity
public class Department {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "department")
private List<Employee> employees;
}
然后,在Employee實體類中,使用@ManyToOne
注解來表示與Department的關系:
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne
@JoinColumn(name = "department_id")
private Department department;
}
假設我們有兩個實體類:Student和Course,一個學生可以選多門課程,一門課程也可以被多個學生選。這是一個典型的多對多關系。
首先,創建一個中間表(例如:student_course),用于存儲學生和課程之間的關系。然后,在Student實體類中,使用@ManyToMany
注解來表示與Course的關系:
@Entity
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToMany
@JoinTable(name = "student_course",
joinColumns = @JoinColumn(name = "student_id"),
inverseJoinColumns = @JoinColumn(name = "course_id")
)
private List<Course> courses;
}
接著,在Course實體類中,使用@ManyToMany
注解來表示與Student的關系:
@Entity
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToMany(mappedBy = "courses")
private List<Student> students;
}
通過以上示例,我們可以看到如何在Spring Hibernate中使用注解來映射實體關系。當然,實際項目中可能會有更復雜的關系映射,但基本的映射原理是相同的。