Hibernate入门
一、基于外键关联的一对多映射(annotation)
1.1一的代码
@Entity
@Table(name="tb_cclass")
publicclass Classes {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
privateintid;
@Column(name="name")
private String name;
/**
* oneToMany默认产生连接表,如果用JoinColumn表示外键关联,不产生连接表
*/
@OneToMany
@JoinColumn(name="classId")
private Set<Student> students;
publicint getId() {
returnid;
}
publicvoid setId(int id) {
this.id = id;
}
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
public Set<Student> getStudents() {
returnstudents;
}
publicvoid setStudents(Set<Student> students) {
this.students = students;
}
}
1.2 多的代码
@Entity
@Table(name="tb_cstudent")
publicclass Student {
@Id
@GeneratedValue
privateintid;
@Column(name="name")
private String name;
@Column(name="age")
privateintage;
publicint getId() {
returnid;
}
publicvoid setId(int id) {
this.id = id;
}
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
publicint getAge() {
returnage;
}
publicvoid setAge(int age) {
this.age = age;
}
}
二、基于连接表的单向一对多
2.1一端的映射
@Entity
@Table(name="tb_cclass")
publicclass Classes {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
privateintid;
@Column(name="name")
private String name;
/**
* oneToMany默认产生连接表*/
@OneToMany
@JoinTable(name="tb_classes_student",
joinColumns=@JoinColumn(name="class_id"),
inverseJoinColumns=@JoinColumn(name="student_id"))
private Set<Student> students;
publicint getId() {
returnid;
}
publicvoid setId(int id) {
this.id = id;
}
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
public Set<Student> getStudents() {
returnstudents;
}
publicvoid setStudents(Set<Student> students) {
this.students = students;
}
}
三、基于连接表的双向一对多,关系有多的一方来维护
3.1一方
@Entity
@Table(name="tb_cclass2")
publicclass Classes2 {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
privateintid;
@Column(name="name")
private String name;
/**
* oneToMany默认产生连接表,如果用JoinColumn表示外键关联,不产生连接表
*/
@OneToMany(mappedBy="classes2")
private Set<Student2> students;
publicint getId() {
returnid;
}
publicvoid setId(int id) {
this.id = id;
}
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
public Set<Student2> getStudents() {
returnstudents;
}
publicvoid setStudents(Set<Student2> students) {
this.students = students;
}
}
3.2多方
@Entity
@Table(name="tb_cstudent2")
publicclass Student2 {
@Id
@GeneratedValue
privateintid;
@Column(name="name")
private String name;
@Column(name="age")
privateintage;
@ManyToOne
@JoinTable(name="tb_classes_student2",
joinColumns=@JoinColumn(name="student_id"),
inverseJoinColumns=@JoinColumn(name="class_id"))
private Classes2 classes2;
publicint getId() {
returnid;
}
publicvoid setId(int id) {
this.id = id;
}
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
publicint getAge() {
returnage;
}
publicvoid setAge(int age) {
this.age = age;
}
}