BAEL-1713: Pessimistic Locking in JPA

Tests for the article.
This commit is contained in:
Patryk Kucharz
2018-04-30 16:33:50 +02:00
parent 7140229ca0
commit c0c319b13f
18 changed files with 906 additions and 26 deletions
@@ -0,0 +1,34 @@
package com.baeldung.eclipselink.springdata.pessimisticlocking;
import javax.persistence.Embeddable;
@Embeddable
public class Address {
private String country;
private String city;
public Address(String country, String city) {
this.country = country;
this.city = city;
}
public Address() {
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
@@ -0,0 +1,50 @@
package com.baeldung.eclipselink.springdata.pessimisticlocking;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
@Entity
public class Course {
@Id
private Long courseId;
private String name;
@ManyToOne
@JoinTable(name = "student_course")
private Student student;
public Course(Long courseId, String name, Student student) {
this.courseId = courseId;
this.name = name;
this.student = student;
}
public Course() {
}
public Long getCourseId() {
return courseId;
}
public void setCourseId(Long courseId) {
this.courseId = courseId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student getStudent() {
return student;
}
public void setStudent(Student students) {
this.student = students;
}
}
@@ -0,0 +1,61 @@
package com.baeldung.eclipselink.springdata.pessimisticlocking;
import javax.persistence.CollectionTable;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.List;
@Entity
public class Customer {
@Id
private Long customerId;
private String name;
private String lastName;
@ElementCollection
@CollectionTable(name = "customer_address")
private List<Address> addressList;
public Customer() {
}
public Customer(Long customerId, String name, String lastName, List<Address> addressList) {
this.customerId = customerId;
this.name = name;
this.lastName = lastName;
this.addressList = addressList;
}
public Long getCustomerId() {
return customerId;
}
public void setCustomerId(Long customerId) {
this.customerId = customerId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public List<Address> getAddressList() {
return addressList;
}
public void setAddressList(List<Address> addressList) {
this.addressList = addressList;
}
}
@@ -0,0 +1,27 @@
package com.baeldung.eclipselink.springdata.pessimisticlocking;
import javax.persistence.Entity;
import java.math.BigDecimal;
@Entity
public class Employee extends Individual {
private BigDecimal salary;
public Employee(Long id, String name, String lastName, BigDecimal salary) {
super(id, name, lastName);
this.salary = salary;
}
public Employee() {
super();
}
public BigDecimal getSalary() {
return salary;
}
public void setSalary(BigDecimal average) {
this.salary = average;
}
}
@@ -0,0 +1,49 @@
package com.baeldung.eclipselink.springdata.pessimisticlocking;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Individual {
@Id
private Long id;
private String name;
private String lastName;
public Individual(Long id, String name, String lastName) {
this.id = id;
this.name = name;
this.lastName = lastName;
}
public Individual() {
}
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 String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
@@ -0,0 +1,48 @@
package com.baeldung.eclipselink.springdata.pessimisticlocking;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import java.util.List;
@Entity
public class Student {
@Id
private Long id;
private String name;
@OneToMany(mappedBy = "student")
private List<Course> courses;
public Student(Long id, String name) {
this.id = id;
this.name = name;
}
public Student() {
}
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 List<Course> getCourses() {
return courses;
}
public void setCourses(List<Course> courses) {
this.courses = courses;
}
}
@@ -1,2 +1,2 @@
spring.datasource.url=jdbc:h2:mem:test
spring.datasource.url=jdbc:h2:mem:test;MVCC=FALSE;LOCK_TIMEOUT=100;
spring.jpa.show-sql=true