听起来很疯狂,但这是故事。
背景:
当前架构:
AIR桌面的选项,请注意实体都标记为LAZY,我们正在考虑以下1个选项:
请给我们你的建议。感谢
答案 0 :(得分:1)
如果您有多个1-N关系,则返回的ResultSet将包含如此多的冗余数据,以至于根据我的经验,Hibernate处理速度太慢。
我会使用Hibernate或纯SQL来实现这一点。实际上,Hibernate可以通过使用@Fetch(FetchMode.SUBSELECT)注释你的关系来在一定程度上做到这一点。 例如,当您根据条件检索某些公司时,将运行以下SQL:
SELECT * FROM company WHERE condition
SELECT * FROM employee WHERE employee.company_id IN (SELECT id FROM company WHERE condition)
请注意,这仅适用于某些数据库。如果表现不佳,请考虑#3。
我在这种情况下尝试过BatchSize,它在一定程度上改善了性能,但选项#2更好。
归结为SQL运行。如果这是有效的,Hibernate通常不会增加太多开销(只是创建对象的开销,将所有对象保留在内存中等)。