From ae62ff10e1a487bddc9938f631e5ea09f1d4e922 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Ko=C5=BEusznik?= <jan@kozusznik.cz> Date: Sun, 11 Apr 2021 22:44:16 +0200 Subject: [PATCH] Add tasks --- pom.xml | 9 ++ .../java/koz01/java2/lab10/BaseEntity.java | 21 +++ src/main/java/koz01/java2/lab10/Clas.java | 24 +++ .../java/koz01/java2/lab10/Department.java | 24 +++ src/main/java/koz01/java2/lab10/Employee.java | 35 ++++ .../koz01/java2/lab10/NonTeachingStaff.java | 8 +- src/main/java/koz01/java2/lab10/Staff.java | 16 +- src/main/java/koz01/java2/lab10/Teacher.java | 29 ++++ .../java/koz01/java2/lab10/TeachingStaff.java | 11 +- src/test/java/koz01/java2/lab10/DemoJPA.java | 151 ++++++++++++++++++ 10 files changed, 309 insertions(+), 19 deletions(-) create mode 100644 src/main/java/koz01/java2/lab10/BaseEntity.java create mode 100644 src/main/java/koz01/java2/lab10/Clas.java create mode 100644 src/main/java/koz01/java2/lab10/Department.java create mode 100644 src/main/java/koz01/java2/lab10/Employee.java create mode 100644 src/main/java/koz01/java2/lab10/Teacher.java diff --git a/pom.xml b/pom.xml index 6d8604e..d601a27 100644 --- a/pom.xml +++ b/pom.xml @@ -107,6 +107,15 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven.compiler.version}</version> + <configuration> + <annotationProcessorPaths> + <path> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <version>${lombok.version}</version> + </path> + </annotationProcessorPaths> + </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> diff --git a/src/main/java/koz01/java2/lab10/BaseEntity.java b/src/main/java/koz01/java2/lab10/BaseEntity.java new file mode 100644 index 0000000..b1ed9db --- /dev/null +++ b/src/main/java/koz01/java2/lab10/BaseEntity.java @@ -0,0 +1,21 @@ +package koz01.java2.lab10; + +import java.io.Serializable; + +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.MappedSuperclass; + +import lombok.EqualsAndHashCode; +import lombok.Getter; + +@MappedSuperclass +@EqualsAndHashCode +public class BaseEntity implements Serializable { + + @Getter + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; +} diff --git a/src/main/java/koz01/java2/lab10/Clas.java b/src/main/java/koz01/java2/lab10/Clas.java new file mode 100644 index 0000000..20993ff --- /dev/null +++ b/src/main/java/koz01/java2/lab10/Clas.java @@ -0,0 +1,24 @@ +package koz01.java2.lab10; + +import java.util.Set; + +import javax.persistence.Entity; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@AllArgsConstructor +@NoArgsConstructor +public class Clas extends BaseEntity { + + @Getter + @Setter + private String cname; + + @Getter + @Setter + private Set<Clas> clas; +} diff --git a/src/main/java/koz01/java2/lab10/Department.java b/src/main/java/koz01/java2/lab10/Department.java new file mode 100644 index 0000000..132b6ed --- /dev/null +++ b/src/main/java/koz01/java2/lab10/Department.java @@ -0,0 +1,24 @@ +package koz01.java2.lab10; + +import java.util.List; + +import javax.persistence.Entity; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@AllArgsConstructor +@NoArgsConstructor +public class Department extends BaseEntity { + + @Getter + @Setter + private String name; + + @Getter + @Setter + private List<Employee> employee; +} diff --git a/src/main/java/koz01/java2/lab10/Employee.java b/src/main/java/koz01/java2/lab10/Employee.java new file mode 100644 index 0000000..259c167 --- /dev/null +++ b/src/main/java/koz01/java2/lab10/Employee.java @@ -0,0 +1,35 @@ +package koz01.java2.lab10; + +import javax.persistence.Entity; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@AllArgsConstructor +@NoArgsConstructor +public class Employee extends BaseEntity { + + @Getter + @Setter + private int eid; + + @Getter + @Setter + private String ename; + + @Getter + @Setter + private double salary; + + @Getter + @Setter + private String deg; + + @Setter + @Getter + private Department department; + +} diff --git a/src/main/java/koz01/java2/lab10/NonTeachingStaff.java b/src/main/java/koz01/java2/lab10/NonTeachingStaff.java index 590ca24..59b164a 100644 --- a/src/main/java/koz01/java2/lab10/NonTeachingStaff.java +++ b/src/main/java/koz01/java2/lab10/NonTeachingStaff.java @@ -2,16 +2,16 @@ package koz01.java2.lab10; import javax.persistence.Entity; -import lombok.Data; -import lombok.EqualsAndHashCode; +import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.Setter; -@Data -@EqualsAndHashCode(callSuper = true) @Entity @NoArgsConstructor public class NonTeachingStaff extends Staff { + @Getter + @Setter private String areaexpertise; public NonTeachingStaff(String sname, String areaexpertise) { diff --git a/src/main/java/koz01/java2/lab10/Staff.java b/src/main/java/koz01/java2/lab10/Staff.java index 891118f..6f09a62 100644 --- a/src/main/java/koz01/java2/lab10/Staff.java +++ b/src/main/java/koz01/java2/lab10/Staff.java @@ -1,24 +1,18 @@ package koz01.java2.lab10; -import java.io.Serializable; - import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import lombok.Data; +import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.Setter; -@Data @Entity @NoArgsConstructor -public class Staff implements Serializable { +public class Staff extends BaseEntity { - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - private Integer id; + @Getter + @Setter private String sname; public Staff(String sname) { diff --git a/src/main/java/koz01/java2/lab10/Teacher.java b/src/main/java/koz01/java2/lab10/Teacher.java new file mode 100644 index 0000000..ee1c357 --- /dev/null +++ b/src/main/java/koz01/java2/lab10/Teacher.java @@ -0,0 +1,29 @@ + +package koz01.java2.lab10; + +import java.util.Set; + +import javax.persistence.Entity; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@AllArgsConstructor +@NoArgsConstructor +public class Teacher extends BaseEntity { + + @Getter + @Setter + private String tname; + + @Getter + @Setter + private String subject; + + @Getter + @Setter + private Set<Clas> clasSet; +} diff --git a/src/main/java/koz01/java2/lab10/TeachingStaff.java b/src/main/java/koz01/java2/lab10/TeachingStaff.java index 2ff0f36..7900ce4 100644 --- a/src/main/java/koz01/java2/lab10/TeachingStaff.java +++ b/src/main/java/koz01/java2/lab10/TeachingStaff.java @@ -2,17 +2,20 @@ package koz01.java2.lab10; import javax.persistence.Entity; -import lombok.Data; -import lombok.EqualsAndHashCode; +import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.Setter; -@Data -@EqualsAndHashCode(callSuper = true) @Entity @NoArgsConstructor public class TeachingStaff extends Staff { + @Getter + @Setter private String qualification; + + @Getter + @Setter private String subjectexpertise; public TeachingStaff(String sname, String qualification, diff --git a/src/test/java/koz01/java2/lab10/DemoJPA.java b/src/test/java/koz01/java2/lab10/DemoJPA.java index 1ca86ba..c48bb4e 100644 --- a/src/test/java/koz01/java2/lab10/DemoJPA.java +++ b/src/test/java/koz01/java2/lab10/DemoJPA.java @@ -1,5 +1,10 @@ package koz01.java2.lab10; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; @@ -33,4 +38,150 @@ public class DemoJPA { entitymanager.close(); emfactory.close(); } + + @Test + public void demostrateManyToOne() { + EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( + "Eclipselink_JPA"); + EntityManager entitymanager = emfactory.createEntityManager(); + entitymanager.getTransaction().begin(); + + // Create Department Entity + Department department = new Department(); + department.setName("Development"); + + // Store Department + entitymanager.persist(department); + + // Create Employee1 Entity + Employee employee1 = new Employee(); + employee1.setEname("Satish"); + employee1.setSalary(45000.0); + employee1.setDeg("Technical Writer"); + employee1.setDepartment(department); + + // Create Employee2 Entity + Employee employee2 = new Employee(); + employee2.setEname("Krishna"); + employee2.setSalary(45000.0); + employee2.setDeg("Technical Writer"); + employee2.setDepartment(department); + + // Create Employee3 Entity + Employee employee3 = new Employee(); + employee3.setEname("Masthanvali"); + employee3.setSalary(50000.0); + employee3.setDeg("Technical Writer"); + employee3.setDepartment(department); + + // Store Employees + entitymanager.persist(employee1); + entitymanager.persist(employee2); + entitymanager.persist(employee3); + + entitymanager.getTransaction().commit(); + entitymanager.close(); + emfactory.close(); + } + + @Test + public void demostrateOneToMany() { + EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( + "Eclipselink_JPA"); + EntityManager entitymanager = emfactory.createEntityManager(); + entitymanager.getTransaction().begin(); + + // Create Employee1 Entity + Employee employee1 = new Employee(); + employee1.setEname("Satish"); + employee1.setSalary(45000.0); + employee1.setDeg("Technical Writer"); + + // Create Employee2 Entity + Employee employee2 = new Employee(); + employee2.setEname("Krishna"); + employee2.setSalary(45000.0); + employee2.setDeg("Technical Writer"); + + // Create Employee3 Entity + Employee employee3 = new Employee(); + employee3.setEname("Masthanvali"); + employee3.setSalary(50000.0); + employee3.setDeg("Technical Writer"); + + // Store Employee + entitymanager.persist(employee1); + entitymanager.persist(employee2); + entitymanager.persist(employee3); + + // Create Employeelist + List<Employee> emplist = new ArrayList<>(); + emplist.add(employee1); + emplist.add(employee2); + emplist.add(employee3); + + // Create Department Entity + Department department = new Department(); + department.setName("Development"); + department.setEmployee(emplist); + + // Store Department + entitymanager.persist(department); + + entitymanager.getTransaction().commit(); + entitymanager.close(); + emfactory.close(); + } + + @Test + public void demostrateManyToMany() { + { + EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( + "Eclipselink_JPA"); + EntityManager entitymanager = emfactory.createEntityManager(); + entitymanager.getTransaction().begin(); + + // Create Clas Entity + Clas clas1 = new Clas("1st", null); + Clas clas2 = new Clas("2nd", null); + Clas clas3 = new Clas("3rd", null); + + // Store Clas + entitymanager.persist(clas1); + entitymanager.persist(clas2); + entitymanager.persist(clas3); + + // Create Clas Set1 + Set<Clas> classSet1 = new HashSet<>(); + classSet1.add(clas1); + classSet1.add(clas2); + classSet1.add(clas3); + + // Create Clas Set2 + Set<Clas> classSet2 = new HashSet<>(); + classSet2.add(clas3); + classSet2.add(clas1); + classSet2.add(clas2); + + // Create Clas Set3 + Set<Clas> classSet3 = new HashSet<>(); + classSet3.add(clas2); + classSet3.add(clas3); + classSet3.add(clas1); + + // Create Teacher Entity + Teacher teacher1 = new Teacher("Satish", "Java", classSet1); + Teacher teacher2 = new Teacher("Krishna", "Adv Java", classSet2); + Teacher teacher3 = new Teacher("Masthanvali", "DB2", classSet3); + + // Store Teacher + entitymanager.persist(teacher1); + entitymanager.persist(teacher2); + entitymanager.persist(teacher3); + + entitymanager.getTransaction().commit(); + entitymanager.close(); + emfactory.close(); + } + } } -- GitLab