Close

JPA - Lifecycle Callback Listener Annotations

JPA JAVA EE 

import javax.persistence.*;

@Entity
public class MyEntity {
@Id
@GeneratedValue
private int id;
private String msg;

public MyEntity() { }

public MyEntity(String msg) {
this.msg = msg;
}

@PrePersist
void onPrePersist() {
System.out.println("MyEntity.onPrePersist()");
}

@PostPersist
void onPostPersist() {
System.out.println("MyEntity.onPostPersist()");
}

@PostLoad
void onPostLoad() {
System.out.println("MyEntity.onPostLoad()");
}

@PreUpdate
void onPreUpdate() {
System.out.println("MyEntity.onPreUpdate()");
}

@PostUpdate
void onPostUpdate() {
System.out.println("MyEntity.onPostUpdate()");
}

@PreRemove
void onPreRemove() {
System.out.println("MyEntity.onPreRemove()");
}

@PostRemove
void onPostRemove() {
System.out.println("MyEntity.onPostRemove()");
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public int getId() {
return id;
}

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




import javax.persistence.*;
import java.sql.Timestamp;
import java.time.Instant;

@Entity
public class Article {
@Id
@GeneratedValue
private int id;
private String content;
private Timestamp dateCreated;
private Timestamp lastUpdated;

@PrePersist
void preCreate() {
dateCreated = Timestamp.from(Instant.now());
lastUpdated = Timestamp.from(Instant.now());
}

@PreUpdate
void preUpdate() {
lastUpdated = Timestamp.from(Instant.now());
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}

@Override
public String toString() {
return "Article{" +
"id=" + id +
", content='" + content + '\'' +
", dateCreated=" + dateCreated +
", lastUpdated=" + lastUpdated +
'}';
}
}
Original Post




import javax.persistence.*;

public class MyEntityListener {
@PrePersist
void onPrePersist(MyEntity myEntity) {
System.out.println("MyEntityListener.onPrePersist(): " + myEntity);
}

@PostPersist
void onPostPersist(MyEntity myEntity) {
System.out.println("MyEntityListener.onPostPersist(): " + myEntity);
}

@PostLoad
void onPostLoad(MyEntity myEntity) {
System.out.println("MyEntityListener.onPostLoad(): " + myEntity);
}

@PreUpdate
void onPreUpdate(MyEntity myEntity) {
System.out.println("MyEntityListener.onPreUpdate(): " + myEntity);
}

@PostUpdate
void onPostUpdate(MyEntity myEntity) {
System.out.println("MyEntityListener.onPostUpdate(): " + myEntity);
}

@PreRemove
void onPreRemove(MyEntity myEntity) {
System.out.println("MyEntityListener.onPreRemove(): " + myEntity);
}

@PostRemove
void onPostRemove(MyEntity myEntity) {
System.out.println("MyEntityListener.onPostRemove(): " + myEntity);
}
}
Original Post




import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import java.sql.Timestamp;
import java.time.Instant;

public class AuditableListener {
@PrePersist
void preCreate(Auditable auditable) {
Timestamp now = Timestamp.from(Instant.now());
auditable.setDateCreated(now);
auditable.setLastUpdated(now);
}

@PreUpdate
void preUpdate(Auditable auditable) {
Timestamp now = Timestamp.from(Instant.now());
auditable.setLastUpdated(now);
}
}
Original Post




See Also