Java Tutorial/JPA/EntityListener

Материал из Java эксперт
Перейти к: навигация, поиск

Add Entity Listeners To subclasses

File: EmployeeDebugListener.java



   <source lang="java">

import javax.persistence.PostLoad; import javax.persistence.PrePersist; import javax.persistence.PreRemove; import javax.persistence.PreUpdate; public class EmployeeDebugListener {

 @PostLoad
 public void postLoad(Employee emp) {
   System.out.println("EmployeeDebugListener.Load called on employee id: " + emp.getId());
 }

}</source>





Entity Listener: PostLoad

File: EmployeeDebugListener.java



   <source lang="java">

import javax.persistence.PostLoad; import javax.persistence.PrePersist; import javax.persistence.PreRemove; import javax.persistence.PreUpdate; public class EmployeeDebugListener {

 @PostLoad
 public void postLoad(Employee emp) {
   System.out.println("EmployeeDebugListener.Load called on employee id: " + emp.getId());
 }

}</source>





Entity Listener: PreRemove

File: Employee.java



   <source lang="java">

import javax.persistence.Entity; import javax.persistence.EntityListeners; import javax.persistence.Id; import javax.persistence.PostLoad; import javax.persistence.PostPersist; import javax.persistence.PostUpdate; import javax.persistence.PrePersist; import javax.persistence.PreRemove; import javax.persistence.PreUpdate; import javax.persistence.Transient; @Entity @EntityListeners({EmployeeDebugListener.class}) public class Employee {

   @Id private int id;
   private String name;
   @Transient private long syncTime;
   @PostPersist 
   @PostUpdate
   @PostLoad 
   private void resetSyncTime() {
       syncTime = System.currentTimeMillis(); 
       System.out.println("Employee.resetSyncTime called on employee id: " + getId());
   }
   public long getCachedAge() {
       return System.currentTimeMillis() - syncTime; 
   }
   public int getId() {
       return id;
   }
   
   public void setId(int id) {
       this.id = id;
   }
   public String toString() {
       return "Employee id: " + getId() ;
   }

}</source>





Entity Listener: PreUpdate

File: EmployeeDebugListener.java



   <source lang="java">

import javax.persistence.PostLoad; import javax.persistence.PrePersist; import javax.persistence.PreRemove; import javax.persistence.PreUpdate; public class EmployeeDebugListener {

 @PreUpdate
 public void preUpdate(Employee emp) {
   System.out.println("EmployeeDebugListener.Update called on employee id: " + emp.getId());
 }

}</source>





Entity Listeners PrePersist

File: Employee.java



   <source lang="java">

import javax.persistence.Entity; import javax.persistence.EntityListeners; import javax.persistence.Id; import javax.persistence.PostLoad; import javax.persistence.PostPersist; import javax.persistence.PostUpdate; import javax.persistence.PrePersist; import javax.persistence.PreRemove; import javax.persistence.PreUpdate; import javax.persistence.Transient; @Entity @EntityListeners({EmployeeDebugListener.class, NameValidator.class}) public class Employee {

   @Id private int id;
   private String name;
   @Transient private long syncTime;
   @PostPersist 
   @PostUpdate
   @PostLoad 
   private void resetSyncTime() {
       syncTime = System.currentTimeMillis(); 
       System.out.println("Employee.resetSyncTime called on employee id: " + getId());
   }
   public long getCachedAge() {
       return System.currentTimeMillis() - syncTime; 
   }
   public int getId() {
       return id;
   }
   
   public void setId(int id) {
       this.id = id;
   }
   public String toString() {
       return "Employee id: " + getId() ;
   }

}</source>





Exclude Super class Listeners In Super Class

File: EmployeeDebugListener.java



   <source lang="java">

import javax.persistence.PostLoad; import javax.persistence.PrePersist; import javax.persistence.PreRemove; import javax.persistence.PreUpdate; public class EmployeeDebugListener {

 @PostLoad
 public void postLoad(Employee emp) {
   System.out.println("EmployeeDebugListener.Load called on employee id: " + emp.getId());
 }

}</source>





One Entity With Two Listeners

File: EmployeeDebugListener.java



   <source lang="java">

import javax.persistence.PostLoad; import javax.persistence.PrePersist; import javax.persistence.PreRemove; import javax.persistence.PreUpdate; public class EmployeeDebugListener {

 @PrePersist
 public void prePersist(Employee emp) {
   System.out.println("EmployeeDebugListener.Persist called on employee id: " + emp.getId());
 }

}</source>