我需要休眠来生成这样的sql INSERT INTO table_a (a_id, a_name) VALUES (5, 'a5'),(6, 'a6');
。
使用这样的 sql,您可以使用 1 条语句添加 2 行。我可以得到
a_id, a_name
------------------
5 a5
6 a6
在休眠时,当您保存一组一对多关系时,休眠将插入多个插入语句。如果您使用 HQL 将 1000 行插入到 1 个表中,这将导致如下结果:
INSERT INTO scoring.table_a (`a_id`, `a_name`) VALUES (1, 'a');
INSERT INTO scoring.table_a (`a_id`, `a_name`) VALUES (2, 'a');
....
...
..
INSERT INTO scoring.table_a (`a_id`, `a_name`) VALUES (1000, 'a');
经过的时间是:
Executed 1,000 queries; elapsed time (seconds) - Total: 0.78, SQL query: 0.78, Building output: 0
当我使用相同的值进行测试时,使用 SQLINSERT INTO table_a (a_id, a_name) VALUES (5, 'a'),(6, 'a'),(),...,...,(1000, 'a');
将导致经过的时间如下:
Query 1 of 1, Rows read: 0, Elapsed time (seconds) - Total: 0.02, SQL query: 0.02, Building output: 0
我的测试结果是,1 条 1000 值(0.02 秒)的语句将比 1000 条插入语句快大约 39 倍,每个语句都有 1 值(0.78 秒),就像休眠一样。那么有没有一种方法可以让 HQL 生成类似用于插入或更新的 SQL。或者这意味着我们必须覆盖休眠方言?
感谢您的任何提示