java - 我是否必须为 Spring/Hibernate 双向关联编写实用程序方法?
问题描述
我阅读了Thorben Janssen关于 Hibernate 和 JPA 的多对多关联的最佳实践的主题。
在那里,Janssen 说双向关联需要实用方法,如下所示:
@Entity
public class Author {
@ManyToMany(mappedBy = "authors")
private Set<Book> books = new HashSet<Book>();
...
public void addBook(Book book) {
this.books.add(book);
book.getAuthors().add(this);
}
public void removeBook(Book book) {
this.books.remove(book);
book.getAuthors().remove(this);
}
}
Spring/Hibernate 是否提供任何 @Annotation 来自动解决此问题?
顺便看看Thorben Janssen 的话题。
解决方案
简短回答:对此没有注释。如果你愿意,你可以自己写这样一个注解。但是,手动添加代码时性能会更好,因为这样的注解可能需要反射 API。
“实用方法的必要性”:这些实用方法有助于同步关系的双方,即如果您将 an 添加Author
到 a Book
,您还必须将 添加Book
到Author
. 您不需要拥有这些实用方法,您可以手动将对象相互添加。然而,这些实用方法避免了失败,因为同步是自动发生的。
推荐阅读
- architecture - 网关架构设计最佳实践
- javascript - 为什么我的 Node.js Socket.IO 服务器会发出多条消息,尽管它只运行一次?
- php - 使用 PHP 将部分 HTML 添加到文件中
- visual-studio-code - 如何从 Visual Studio Code 关闭(或打开)声音?
- reactjs - 反应 setState 没有正确更新
- c++ - 在 WSL 中使用 Visual Studio 时出现“找不到文件或目录”
- excel - 如何在 Excel 中列出/生成所有可能的组合
- javascript - JS 文件得到一个 net::ERR_ABORTED 404 (Not Found)
- nullpointerexception - JavaFX 切换 fxml 文件:线程中的异常 ... InvocationTargetException
- python - 在 Django 中,我的定义(循环)在其他页面上不起作用