听起来很疯狂,但这是故事。
背景:
- 想象一下我们的数据库看起来像:公司有 n 个员工,有配偶和孩子。员工也有带轮胎的汽车......等等......
- 我们的应用程序提供 Web 和桌面 UI。因此,用户希望从多个表中加载数据,以便在桌面上离线工作。例如:将大约 1000 个公司加载到桌面上工作。
- 数据量很大,从数千条记录到有时十万条记录不等。但是离线加载的数据并没有那么大,只有几千。
当前架构:
- 我们使用的是来自 Adobe ADEP4.6 的 HibernateAssembler,与 DAO 非常相似,例如,对于每个实体,我们都有一个 Assembler。但是对 Hibernate 的访问是非常有限的。
- 对于 Web,我们使用 LAZY Loading,到目前为止一切顺利。
- 对于 AIR 桌面,我们正在尝试多种选择
AIR 桌面的选项,注意 Entity 都标记为 LAZY,我们正在考虑以下选项之一:
- 在命名的 hql 中使用“fetch join”:在一个 hql 中同时加载公司、员工、汽车、轮胎
- 单独加载每个表,然后手动匹配它们。
- 将 EAGER FETCH 与 BatchSize 一起使用?!!难以控制
- 放弃 Hibernate 并返回到庞大的 JDBC 查询。
请给我们您的建议。谢谢