我开始着手我的第一个 Java EE 项目。 现在我阅读了一些文档并对更新的性能或风格有疑问。什么更好:
@Override
public void updateBook(BookTO to) {
BookEJB book = new BookEJB(to.getISBN());
book.setFinishedReading(to.getFinishedReading());
book.setRating(to.getRating());
entityManager.merge(book);
}
或
@Override
public void updateBook(BookTO to) {
BookEJB book = entityManager.find(BookEJB.class, to.getISBN());
book.setFinishedReading(to.getFinishedReading());
book.setRating(to.getRating());
}
你怎么看?
最佳答案
entityManager.merge()
不仅仅是一个更新操作。它是一个更新或插入
操作,因为 merge()
将插入一个如果数据库中没有这本书的记录,也记录一下。
第二种方式是更新JPA中现有记录的正确方式。但请注意,在更新其属性之前,应检查从 entityManager.find()
返回的 book
对象是否为 null。如果在数据库中找不到这本书的记录,将返回null,此时你将得到NPE
。
关于Java EE,如何正确实现更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18888814/