【发布时间】:2011-02-11 06:09:38
【问题描述】:
我有 5 个 MySQL InnoDB 表:Test,InputInvoice,InputLine,OutputInvoice,OutputLine,每个表都在 Hibernate 中映射和运行。我使用过 StatelessSession/Session 和 JDBC 批量大小。我已经删除了任何生成器类以让 MySQL 处理 id 生成 - 但它的执行速度仍然很慢。
这些表中的每一个都在一个 java 类中表示,并相应地映射到 hibernate 中。目前,当需要写出数据时,我会遍历对象并执行session.save(Object) 或session.insert(Object)(如果我使用的是StatelessSession)。当我的行数达到最大 jdbc 批处理大小 (50) 时,我还会进行刷新和清除(使用 Session 时)。
- 如果我将这些放在一个包含对象的“父”类中并执行
session.save(master)而不是每个对象,会更快吗? - 如果我将它们放在主/容器类中,我将如何在 hibernate 中映射它以反映这种关系?容器类实际上并不是它自己的表,而是一个全部基于两个索引 run_id (int) 和 line (int) 的关系。
- 另一个方向是:如何让 Hibernate 进行多行插入?
【问题讨论】:
-
我忘了说每个表都有很多列
标签: java mysql performance hibernate orm