Hibernate策略脱机获取多个表?
听起来很疯狂,但故事是这样的 背景:Hibernate策略脱机获取多个表?,hibernate,lazy-loading,parent-child,fetch,Hibernate,Lazy Loading,Parent Child,Fetch,听起来很疯狂,但故事是这样的 背景: 想象一下,我们的数据库是这样的:公司有n名员工,他们有配偶和孩子。员工也有带轮胎的汽车……等等 我们的应用程序同时提供Web和桌面UI。因此,用户希望从多个表加载数据,以便在桌面上脱机工作。例如:将大约1000家公司加载到桌面上进行工作 数据量很大,从数千条记录到数十万条记录不等。但是离线加载的数据并没有那么大,只有几千个 当前架构: 我们正在使用,非常类似于DAO,例如对于每个实体,我们都有一个汇编器。但是对Hibernate的访问非常有限 对于We
- 想象一下,我们的数据库是这样的:公司有n名员工,他们有配偶和孩子。员工也有带轮胎的汽车……等等
- 我们的应用程序同时提供Web和桌面UI。因此,用户希望从多个表加载数据,以便在桌面上脱机工作。例如:将大约1000家公司加载到桌面上进行工作
- 数据量很大,从数千条记录到数十万条记录不等。但是离线加载的数据并没有那么大,只有几千个
- 我们正在使用,非常类似于DAO,例如对于每个实体,我们都有一个汇编器。但是对Hibernate的访问非常有限
- 对于Web,我们使用延迟加载,到目前为止还不错
- 对于AIR desktop,我们正在尝试许多选项
SELECT * FROM company WHERE condition
SELECT * FROM employee WHERE employee.company_id IN (SELECT id FROM company WHERE condition)
但请注意,这只在某些数据库中有效。如果性能不好,考虑第3类。谢谢,我还在努力。我对你的答案很满意,但让我们看看其他人的想法经过多次测试,我们决定选择:@Fetch(FetchMode.SUBSELECT)它节省了很多性能。然后根据具体情况,它可以是懒惰的,也可以是渴望的。与#1结合使用是很好的。关于选项2,“一定程度”是什么意思?这是否意味着它在某些情况下不起作用?它肯定会起作用,但是它可能不会为特定数据库提供最佳性能(in子句with subquery并不总是快速的,取决于数据库)