[Java Spring Data] JPA Example with unit test
domain/Course.java
package com.example.university.domain;
import javax.persistence.*;
/**
* JPA Entity for a Course offered at the University.
* <p>
* Created by maryellenbowman.
*/
@Entity
@Table(name = "COURSE")
public class Course {
@Id
@GeneratedValue
private Integer id;
@Column
private String name;
@ManyToOne
@JoinColumn
private Department department;
public Course(String name, Department department) {
this.name = name;
this.department = department;
}
protected Course() {
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public void setDepartment(Department department) {
this.department = department;
}
@Override
public String toString() {
return "Course{" +
"id=" + id + ", name='" + name + '\'' + ", department=" + department.getName() + '}';
}
}
domain/Department.java
package com.example.university.domain;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
/**
* JPA Entity for a Department of study at the University.
* <p>
* Created by maryellenbowman
*/
@Entity
@Table(name = "Department")
public class Department {
@Id
@GeneratedValue
private Integer id;
@Column
private String name;
@OneToMany(mappedBy = "department", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Course> courses = new ArrayList<>();
public Department(String name) {
this.name = name;
}
protected Department() {
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public void addCourse(Course course) {
courses.add(course);
}
@Override
public String toString() {
return "Department{" + "id=" + id + ", name='" + name + '\'' +
", courses=" + courses + '}';
}
}
domain/Person.java
package com.example.university.domain;
import javax.persistence.Column;
import javax.persistence.Embeddable;
/**
* Person encapsulates an individual's first and last name.
* <p>
* Created by maryellenbowman
*/
@Embeddable
public class Person {
@Column
private String firstName;
@Column
private String lastName;
public Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
protected Person() {
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
@Override
public String toString() {
return " firstName='" + firstName + '\'' +
", lastname='" + lastName + "\' ";
}
}
domain/Student.java
package com.example.university.domain; import javax.persistence.*; import java.util.ArrayList; import java.util.List; /** * JPA Entity representing a student at the University. * <p> * Created by maryellenbowman */ @Entity @Table(name = "STUDENT") public class Student { @Id @GeneratedValue private Integer studentId; @Column private boolean fullTime; @Column private Integer age; @Embedded private Person attendee; @OneToMany private List<Course> courses = new ArrayList<>(); public Student(Person attendee, boolean fullTime, Integer age) { this.attendee = attendee; this.fullTime = fullTime; this.age = age; courses = new ArrayList<>(); } protected Student() { } public Integer getStudentId() { return studentId; } public Person getAttendee() { return attendee; } public void setAge(Integer age) { this.age = age; } public boolean isFullTime() { return fullTime; } public Integer getAge() { return age; } public List<Course> getCourses() { return courses; } @Override public String toString() { return "Student{" + "studentId=" + studentId + ", " + attendee + ", fullTime=" + fullTime + ", age=" + age + "}\n"; } }
repo/StudentRepository.java
package com.example.university.repo; import com.example.university.domain.Student; import org.springframework.data.repository.CrudRepository; /** * DataSource Management for the Students at the University. * * Created by maryellenbowman */ public interface StudentRepository extends CrudRepository<Student, Integer>{ }
test:
package com.example.university;
import com.example.university.domain.Person;
import com.example.university.domain.Student;
import com.example.university.repo.StudentRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* Demonstrate Creation, Reading, Updating, and Deletion of Students with StudentRepository
* <p>
* Created by maryellenbowman
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class CrudRepositoryDemo {
@Autowired
StudentRepository studentRepository;
/**
* Exercise CrudRepository methods.
*/
@Test
public void simpleStudentCrudExample() {
boolean fullTime = true;
studentRepository.save(new Student(new Person("jane", "doe"), fullTime, 20));
studentRepository.save(new Student(new Person("john", "doe"), fullTime, 22));
studentRepository.save(new Student(new Person("mike", "smith"), fullTime, 18));
studentRepository.save(new Student(new Person("ally", "kim"), !fullTime, 19));
System.out.println("\n*************Original Students*************");
studentRepository.findAll().forEach(System.out::println);
//age up the students
studentRepository.findAll().forEach(student -> {
student.setAge(student.getAge() + 1);
studentRepository.save(student);
});
System.out.println("\n*************Students a year older*************");
studentRepository.findAll().forEach(System.out::println);
studentRepository.deleteAll();
System.out.println("\n*************Students removed*************");
studentRepository.findAll().forEach(System.out::println);
}
}

浙公网安备 33010602011771号