Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用threadpool进行hibernate的最佳实践是什么?对分离对象的关注?一对多和其他_Hibernate_Jpa - Fatal编程技术网

使用threadpool进行hibernate的最佳实践是什么?对分离对象的关注?一对多和其他

使用threadpool进行hibernate的最佳实践是什么?对分离对象的关注?一对多和其他,hibernate,jpa,Hibernate,Jpa,我的应用程序大量使用线程池,甚至一个类的方法也可能使用aspectj advice在另一个线程中执行 这给我带来了一个如何使用Hibernate JPA实现设计数据库实体的问题,特别是一对多、多对多等等。问题是我的应用程序使用了EntityManager存储在ThreadLocal中的每线程会话模式,因此在一个线程中获得的实体经常被传递给另一个线程。如果我在实体中有任何一对多的类似映射,那么延迟抓取将不起作用,因为实体没有持久性 我看到的解决方法是调用merge()在访问延迟获取实体之前将实体附

我的应用程序大量使用线程池,甚至一个类的方法也可能使用aspectj advice在另一个线程中执行

这给我带来了一个如何使用Hibernate JPA实现设计数据库实体的问题,特别是一对多、多对多等等。问题是我的应用程序使用了EntityManager存储在ThreadLocal中的每线程会话模式,因此在一个线程中获得的实体经常被传递给另一个线程。如果我在实体中有任何一对多的类似映射,那么延迟抓取将不起作用,因为实体没有持久性

我看到的解决方法是调用merge()在访问延迟获取实体之前将实体附加到线程的实体管理器,这还需要为实体创建一个包装类,该类在关联实体的每个getter中调用merge()。这有一个缺点,即如果我更改了实体的一些字段,但现在不想合并到持久性,那么调用getter会出错

我做了一些研究,但没有找到更好的解决办法。我想这应该是面向线程池的应用程序的常见做法。必须有一个最佳实践模式

另一种方法是从不使用这样的一对多功能,但这会带来很多枯燥的编码负担

有人有更好的主意吗