[英]jpa : how to use jpa in java se development
我正在使用java的java se项目进行工作,以使用数据库持久化数据。
现在,我为每个数据库操作获取一个新的实体管理器,并在函数调用结束时将其关闭。 喜欢
public void save(T entity){
em = getNewEntity();
em.persisty(entity);
em.close;
}
但是很难处理多对多关系。 例如
我有一个与B实体有多对多关系的A实体。 他们有CascadeType.MERGE。
一旦我创建A,我就创建B,并运行多个线程来为A和B生成信息。但是有时B保持A的过时,如果我合并B则A的数据将被清除。
例如 。 A是音乐,B是音乐专辑,因此一个B将具有A列表。 另一个线程将读取音乐元数据并获取音乐标签信息并更新A,当在FS中找到新的A时,B将更新。
由于实体管理器已关闭,因此B的A列表中的实体已过期,这意味着当A更新自身时,B不知道A更新了。 合并B后,jpa将帮助我们使用B的A列表中的实体合并A。
为了解决此问题,我决定使用一个实体管理器,并将所有数据库操作放到一个线程中。 然后出现了新问题。
当交易处于活动状态并且应该为实体之间的交易打开时
transaction.begin();
....
transaction.end();
但是,有许多线程正在运行,这些线程也可能会更改实体。
我的问题是:如何在Java SE开发中使用jpa? 谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.