我是 Hibernate 新手。我正在使用 Java 和 Hibernate 开发后端服务。
我有一个 Student
实体,它与 Group
实体具有多对多关系。在数据库中,我有一个 student
表和一个 group
表:
@Entity
@Table(name = "student")
public class Student {
private int student_id; //primary key
@ManyToMany(mappedBy = "students")
private Set<Group> groups = new HashSet<Group>();
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name="student_group",
joinColumns={@JoinColumn(name="student_id")},
inverseJoinColumns={@JoinColumn(name="group_id")})
public Set<Group> getGroups() {
return groups;
}
public void setGroups(Set<Group> groups) {
this.groups = groups;
}
//Setter & Getter for student_id
...
}
正如你在上面的hibernate注释中看到的,数据库中有一个连接表student_group
。我想要实现的是,当客户端的请求到达我的后端服务(带有学生ID)时,我想知道student_group
是否连接数据库 已更新该学生,例如是否插入新行(新组)(分配给该学生)或是否已更新现有行的值。如果有这样的更新/更改,我会通知客户。
使用hibernate,如何实现这种监听器来监听数据库表中的更改/更新?
最佳答案
您可以通过编写插入和更新触发器来实现这一点。
可以在表级别创建触发器。它们与您使用的 ORM 框架无关。插入触发器可以配置为在插入之前触发。更新触发器可以配置为在更新之前或之后执行。以下链接提供了有关触发器的简要说明:
http://docs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_tr.htm
关于mysql - 监听数据库表更新/更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20634944/