Optimization fWork(1395568819)——线程(线程[main,5,main])——恢复 工作单位[EL FIEST]:2012-09-18 11:55:56.572——工作单元(1395568819)——线程(线程[main,5,main])——执行 query ReadAllQuery(referenceClass=AuditTable sql=“选择 审核表ID、审核创建、审核删除、审核读取、审核更新、, 创建人、创建人、上次更新人、上次更新人、表名 来自审计表格,其中(表格名称=?)”[EL Fine]:2012-09-18 11:55:56.572--客户端会话(1625102195)--连接(1572163248)--线程(线程[main,5,main])--选择 审核表ID、审核创建、审核删除、审核读取、审核更新、, 创建人、创建人、上次更新人、上次更新人、表名 来自审计\表,其中(表\名称=?)绑定=>[路由器\数量] [EL Finer]:2012-09-18 11:55:56.575——工作单元(1395568819)——线程(线程[main,5,main])——开始 工作单位提交[EL Finer]:2012-09-18 11:55:56.576--客户端会话(1625102195)--连接(1572163248)--线程(线程[main,5,main])--提交 交易[EL FIEST]:2012-09-18 11:55:56.611--服务器会话(598639019)--连接(1572163248)--线程(线程[main,5,main])--连接 已释放到连接池[默认]
从日志中看,每个对象似乎都在使用一个新事务来持久化每个对象,因此每个对象都被插入到一个单独的事务和单独的批处理中 您需要首先开始一个事务并保存事务中的所有对象Optimization fWork(1395568819)——线程(线程[main,5,main])——恢复 工作单位[EL FIEST]:2012-09-18 11:55:56.572——工作单元(1395568819)——线程(线程[main,5,main])——执行 query ReadAllQuery(referenceClass=AuditTable sql=“选择 审核表ID、审核创建、审核删除、审核读取、审核更新、, 创建人、创建人、上次更新人、上次更新人、表名 来自审计表格,其中(表格名称=?)”[EL Fine]:2012-09-18 11:55:56.572--客户端会话(1625102195)--连接(1572163248)--线程(线程[main,5,main])--选择 审核表ID、审核创建、审核删除、审核读取、审核更新、, 创建人、创建人、上次更新人、上次更新人、表名 来自审计\表,其中(表\名称=?)绑定=>[路由器\数量] [EL Finer]:2012-09-18 11:55:56.575——工作单元(1395568819)——线程(线程[main,5,main])——开始 工作单位提交[EL Finer]:2012-09-18 11:55:56.576--客户端会话(1625102195)--连接(1572163248)--线程(线程[main,5,main])--提交 交易[EL FIEST]:2012-09-18 11:55:56.611--服务器会话(598639019)--连接(1572163248)--线程(线程[main,5,main])--连接 已释放到连接池[默认],optimization,jpa,eclipselink,batch-processing,Optimization,Jpa,Eclipselink,Batch Processing,从日志中看,每个对象似乎都在使用一个新事务来持久化每个对象,因此每个对象都被插入到一个单独的事务和单独的批处理中 您需要首先开始一个事务并保存事务中的所有对象 您还通过执行查询审核导致刷新,因此要避免这种情况,请确保您不会在插入之间进行查询,或者将EntityManager上的flushMode设置为COMMIT。我看不到错误放置的事务切入点。此外,删除审核内容对启用批处理也很有用。谢谢 @Test public void test_batchCreateRouters(){
您还通过执行查询审核导致刷新,因此要避免这种情况,请确保您不会在插入之间进行查询,或者将EntityManager上的flushMode设置为COMMIT。我看不到错误放置的事务切入点。此外,删除审核内容对启用批处理也很有用。谢谢
@Test
public void test_batchCreateRouters(){
List<RouterDTO> routerDTOList = new ArrayList<RouterDTO>();
IRouterService iRouterService = (IRouterService) ctx.getBean("routerService");
build_DTO("Test8",routerDTOList);
build_DTO("Test2",routerDTOList);
build_DTO("Test3",routerDTOList);
build_DTO("Test4",routerDTOList);
build_DTO("Test5",routerDTOList);
build_DTO("Test6",routerDTOList);
build_DTO("Test7",routerDTOList);
for(RouterDTO routerDTO:routerDTOList) {
iRouterService.createRouter(routerDTO);
}
}
try {
getJpaTemplate().persist(entity);
} catch (RuntimeException re) {
throw re;}.