나는 스프링 부트 + hibernate 응용 프로그램을 가지고 있으며 이제는 debezium을 사용하여 날짜 변경을 캡처하려고합니다. 내가 Article
개체를 새로 만들 경우, 지금삭제 된 기록을 누가 언제 기록하는지 보여주는 debezium 솔루션은 무엇입니까?
@Entity
@Table(name = "app_user")
public class User {
@Id @GeneratedValue
@Column(name = "id")
private long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String firstName;
// getters and setters are omitted for brevity
}
@Entity
@Table(name = "app_article")
public class Article {
@Id @GeneratedValue
@Column(name = "id")
private long id;
@Column(name = "title")
private String title;
@Column(name = "category")
private String category;
@ManyToOne
@JoinColumn(name = "created_by")
private User createdBy;
@ManyToOne
@JoinColumn(name = "updated_by")
private User updatedBy;
@Column(name = "created_date")
private Date createdDate;
@Column(name = "updated_date")
private Date updatedDate;
// getters and setters are omitted for brevity
}
및 코드 같은 것을 그것을 계속 :
Article article = new Article();
article.setId(1);
article.setTitle("Introduction to Debezium");
article.setCategory("auditing");
article.setCreatedBy(Utils.getCurrentUser());
article.setUpdatedBy(Utils.getCurrentUser());
article.setCreatedDate(new Date());
article.setUpdatedDate(new Date());
entityManager.persist(article);
그런 다음 다시로드 변화 이 클래스 내 POJO 엔티티 클래스 중 하나 있다고 가정
Article art = entityManager.load(Article.class, 1);
art.setTitle("Introduction to Debezium for beginners");
art.setCategory("auditing and cdc");
art.setCreatedBy(Utils.getCurrentUser());
art.setUpdatedBy(Utils.getCurrentUser());
art.setCreatedDate(new Date());
art.setUpdatedDate(new Date());
entityManager.persist(art);
을 다음 삭제 : 일부 필드와 그것을 지속
,entityManager.delete(Article.class, 1);
나는 각 단계에서 이와 같은 로그를 볼 수 있습니다 : 위에서 볼 수 있듯이
// create
{
"payload" : {
"before" : null,
"after" : {
"id" : 1,
"title" : "Introduction to Debezium",
"category" : "auditing",
"created_by" : 1,
"updated_by" : 1,
"created_date" : "11/29/2017",
"updated_date" : "11/29/2017"
},
"source" : {
"name" : "dbserver1",
"server_id" : 223344,
"ts_sec" : 1500369632,
"gtid" : null,
"file" : "mysql-bin.000003",
"pos" : 364,
"row" : 0,
"snapshot" : null,
"thread" : 13,
"db" : "app",
"table" : "app_article"
},
"op" : "c",
"ts_ms" : 1500369632095
}
}
// update
{
"payload" : {
"before" : {
"id" : 1,
"title" : "Introduction to Debezium",
"category" : "auditing",
"created_by" : 1,
"updated_by" : 1,
"created_date" : "11/29/2017",
"updated_date" : "11/29/2017"
}
"after" : {
"id" : 1,
"title" : "Introduction to Debezium for beginners",
"category" : "auditing and cdc",
"created_by" : 1,
"updated_by" : 1,
"created_date" : "11/29/2017",
"updated_date" : "11/29/2017"
},
"source" : {
"name" : "dbserver1",
"server_id" : 223344,
"ts_sec" : 1500369632,
"gtid" : null,
"file" : "mysql-bin.000003",
"pos" : 364,
"row" : 0,
"snapshot" : null,
"thread" : 13,
"db" : "app",
"table" : "app_article"
},
"op" : "u",
"ts_ms" : 1500369632095
}
}
// delete
{
"payload" : {
"before" : {
"id" : 1,
"title" : "Introduction to Debezium for beginners",
"category" : "auditing and cdc",
"created_by" : 1,
"updated_by" : 1,
"created_date" : "11/29/2017",
"updated_date" : "11/29/2017"
},
"after": null,
"source" : {
"name" : "dbserver1",
"server_id" : 223344,
"ts_sec" : 1500369632,
"gtid" : null,
"file" : "mysql-bin.000003",
"pos" : 364,
"row" : 0,
"snapshot" : null,
"thread" : 13,
"db" : "app",
"table" : "app_article"
},
"op" : "d",
"ts_ms" : 1500369632095
}
}
, 난 데이터베이스에서 레코드를 삭제하는 방법을 검색 할 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까? 나는 이것을 최대 절전 모드 Enver 와 같이 사용해야합니까?