Spring Data JPA注解

一,基本注解

Spring Data JPA注解
[email protected]
Spring Data JPA注解
[email protected]&@IdClass
Spring Data JPA注解
Spring Data JPA注解
[email protected]
Spring Data JPA注解
[email protected]
Spring Data JPA注解
[email protected]
Spring Data JPA注解

二,关联关系注解

Spring Data JPA注解
1.一对多
Spring Data JPA注解
2.多对多
Spring Data JPA注解
关系只由一方维护,学生为维护方,学生决定选课内容
Spring Data JPA注解
创建新表保存两表的id值
全部代码如下:
Teacher代码

import java.util.List;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "teacher")
public class Teacher {

	@Id()
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private int id;

	@Column(name = "teacherName", nullable = false, length = 64)
	private String teacherName;

	@Basic
	private String sex;

	@Column(name = "tel", nullable = false, length = 18)
	private String tel;

	@OneToMany(mappedBy = "teacher", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
	//拥有mappedBy注解的实体类为关系被维护端
    //mappedBy="teacher"中的teacher是Student中的teacher属性
	private List<Student> stus;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getTeacherName() {
		return teacherName;
	}

	public void setTeacherName(String teacherName) {
		this.teacherName = teacherName;
	}

	public String getTel() {
		return tel;
	}

	public void setTel(String tel) {
		this.tel = tel;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public List<Student> getStus() {
		return stus;
	}

	public void setStus(List<Student> stus) {
		this.stus = stus;
	}

}

Student代码

import java.util.List;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "student")
public class Student {

	@Id()
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private int id;
	
	@Column(name = "stuName", nullable = false, length = 64)
	private String stuName;
	
	@Basic
	private String sex;
	
	@Column(name = "email", nullable = true, length = 64)
	private String email;
	
	//可选属性optional=false,表示teacher不能为空。删除学生,不影响老师
	@ManyToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH},optional=false)
	@JoinColumn(name="teacher_id")
	private Teacher teacher;
	
	@ManyToMany(fetch=FetchType.EAGER)
	@JoinTable(name = "student_course",joinColumns = @JoinColumn(name = "stu_id"),
			    inverseJoinColumns = @JoinColumn(name = "course_id"))
	private List<Course> course;
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getStuName() {
		return stuName;
	}

	public void setStuName(String stuName) {
		this.stuName = stuName;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Teacher getTeacher() {
		return teacher;
	}

	public void setTeacher(Teacher teacher) {
		this.teacher = teacher;
	}

	public List<Course> getCourse() {
		return course;
	}

	public void setCourse(List<Course> course) {
		this.course = course;
	}

}

Course代码:

import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@Entity
@Table(name = "course")
public class Course {

	@Id()
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private int id;
	
	@Column(name = "courseName", nullable = false, length = 64)
	private String courseName;
	
	@Column(name = "courseDesc", nullable = false, length = 64)
	private String courseDesc;

	@ManyToMany(mappedBy = "course")
	//拥有mappedBy注解的实体类为关系被维护端
    //mappedBy="course"中的course是Student中的course属性
	private List<Student> student;
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getCourseName() {
		return courseName;
	}

	public void setCourseName(String courseName) {
		this.courseName = courseName;
	}

	public String getCourseDesc() {
		return courseDesc;
	}

	public void setCourseDesc(String courseDesc) {
		this.courseDesc = courseDesc;
	}

	public List<Student> getStudent() {
		return student;
	}

	public void setStudent(List<Student> student) {
		this.student = student;
	}
	
}