【发布时间】:2012-09-10 16:36:31
【问题描述】:
我正在尝试实现批量写入以提高特定代码段的性能。 现在我已经编写了测试用例,看看当我打开 eclipse 链接中的批处理写入时会发生什么。 从日志看来,正在为每个插入语句创建批处理,这不是我所期望的。 下面是测试用例
@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);
}
}
build_DTO 只是填充 DTO 并将其添加到列表中 createRouter 会做一些验证并执行下面的代码:
try {
getJpaTemplate().persist(entity);
} catch (RuntimeException re) {
throw re;}.
但是当我检查日志时,我得到如下所示,它表明对于每个插入,都会创建新批次。 有人对此有任何想法或可以将我带到正确的地方。
[EL 最佳]: 2012-09-18 11:55:56.218--ServerSession(598639019)--Connection(1572163248)--Thread(Thread[main,5,main])--Connection 从连接池获取[默认]。 [EL更佳]:2012-09-18 11:55:56.218--ClientSession(1274943796)--Connection(1572163248)--Thread(Thread[main,5,main])--开始 交易[EL Finer]:2012-09-18 11:55:56.219--ClientSession(1274943796)--Connection(1572163248)--Thread(Thread[main,5,main])--开始 批处理语句[EL Fine]:2012-09-18 11:55:56.22--ClientSession(1274943796)--Connection(1572163248)--Thread(Thread[main,5,main])--INSERT INTO ROUTER_QUANTITY (ROUTER_QUANTITY_ID, ROUTER_PERIOD_ID, COMMENTS, CONTRACT_ID、COUNTER_PARTY、CREATED_BY、CREATED_ON、 FACILITY_COMPONENT_ID,LAST_UPDATED_BY,LAST_UPDATED_ON,修改, QUANTITY、QUANTITY_TEMPLATE_ID、SERVICE_ID、SOURCE、STATUS) 值 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [EL Fine]: 2012-09-18 11:55:56.221--ClientSession(1274943796)--Connection(1572163248)--Thread(Thread[main,5,main])--绑定 => [Test8, 1, Test, 1, Test, user1, 2012-09-18 11:55:56.003, PIMTEST, user1, 2012-09-18 11:55:56.003, Test, 100.1, FM_RES, INJ, Test , 测试] [EL更佳]:2012-09-18 11:55:56.221--ClientSession(1274943796)--Connection(1572163248)--Thread(Thread[main,5,main])--End 批处理报表 [EL Finer]: 2012-09-18 11:55:56.435--UnitOfWork(233788733)--线程(线程[main,5,main])--结束 工作单位冲洗[EL Finer]:2012-09-18 11:55:56.436--UnitOfWork(233788733)--Thread(Thread[main,5,main])--恢复 工作单位【EL Finest】:2012-09-18 11:55:56.436--UnitOfWork(233788733)--Thread(Thread[main,5,main])--执行 查询 ReadAllQuery(referenceClass=AuditTable sql="SELECT AUDIT_TABLE_ID、AUDIT_CREATE、AUDIT_DELETE、AUDIT_READ、AUDIT_UPDATE、 CREATED_BY、CREATED_ON、LAST_UPDATED_BY、LAST_UPDATED_ON、TABLE_NAME FROM AUDIT_TABLE WHERE (TABLE_NAME = ?)") [EL Fine]: 2012-09-18 11:55:56.44--ClientSession(1274943796)--Connection(1572163248)--Thread(Thread[main,5,main])--SELECT AUDIT_TABLE_ID、AUDIT_CREATE、AUDIT_DELETE、AUDIT_READ、AUDIT_UPDATE、 CREATED_BY、CREATED_ON、LAST_UPDATED_BY、LAST_UPDATED_ON、TABLE_NAME FROM AUDIT_TABLE WHERE (TABLE_NAME = ?) bind => [ROUTER_QUANTITY] [EL更佳]:2012-09-18 11:55:56.468--UnitOfWork(233788733)--Thread(Thread[main,5,main])--开始 工作单位提交[EL Finer]:2012-09-18 11:55:56.469--ClientSession(1274943796)--Connection(1572163248)--Thread(Thread[main,5,main])--提交 交易【EL Finest】:2012-09-18 11:55:56.5--ServerSession(598639019)--Connection(1572163248)--Thread(Thread[main,5,main])--Connection 释放到连接池 [默认]。 [EL更佳]:2012-09-18 11:55:56.5--UnitOfWork(233788733)--线程(线程[main,5,main])--结束 工作单位提交[EL Finer]:2012-09-18 11:55:56.5--UnitOfWork(233788733)--Thread(Thread[main,5,main])--恢复 工作单位【EL Finer】:2012-09-18 11:55:56.501--UnitOfWork(233788733)--Thread(Thread[main,5,main])--release 工作单位【EL Finer】:2012-09-18 11:55:56.501--ClientSession(1274943796)--Thread(Thread[main,5,main])--客户端发布[EL Finer]: 2012-09-18 11:55:56.502--ServerSession(598639019)--Thread(Thread[main,5,main])--client 收购:1625102195 [EL Finer]:2012-09-18 11:55:56.502--ClientSession(1625102195)--Thread(Thread[main,5,main])--获取工作单元:1395568819 [EL Finest]:2012-09-18 11:55:56.563--UnitOfWork(1395568819)--Thread(Thread[main,5,main])--persist() 操作调用: fm.am.integration.dao.jpa.allocationquantity.AllocationQuantity@23597cac。 [EL更佳]:2012-09-18 11:55:56.563--UnitOfWork(1395568819)--Thread(Thread[main,5,main])--开始 工作单位冲洗[EL Finest]:2012-09-18 11:55:56.564--UnitOfWork(1395568819)--Thread(Thread[main,5,main])--执行 询问 InsertObjectQuery(fm.am.integration.dao.jpa.allocationquantity.AllocationQuantity@23597cac) [EL最好]:2012-09-18 11:55:56.564--ServerSession(598639019)--Connection(1572163248)--Thread(Thread[main,5,main])--Connection 从连接池获取[默认]。 [EL更佳]:2012-09-18 11:55:56.568--ClientSession(1625102195)--Connection(1572163248)--Thread(Thread[main,5,main])--开始 交易[EL Finer]:2012-09-18 11:55:56.569--ClientSession(1625102195)--Connection(1572163248)--Thread(Thread[main,5,main])--开始 批处理语句[EL Fine]:2012-09-18 11:55:56.569--ClientSession(1625102195)--Connection(1572163248)--Thread(Thread[main,5,main])--INSERT INTO ROUTER_QUANTITY (ROUTER_QUANTITY_ID, ROUTER_PERIOD_ID, COMMENTS, CONTRACT_ID、COUNTER_PARTY、CREATED_BY、CREATED_ON、 FACILITY_COMPONENT_ID,LAST_UPDATED_BY,LAST_UPDATED_ON,修改, QUANTITY、QUANTITY_TEMPLATE_ID、SERVICE_ID、SOURCE、STATUS) 值 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [EL Fine]: 2012-09-18 11:55:56.57--ClientSession(1625102195)--Connection(1572163248)--Thread(Thread[main,5,main])--绑定 => [Test2, 1, Test, 1, Test, user1, 2012-09-18 11:55:56.563, PIMTEST, user1, 2012-09-18 11:55:56.563, Test, 100.1, FM_RES, INJ, Test , 测试] [EL更佳]:2012-09-18 11:55:56.57--ClientSession(1625102195)--Connection(1572163248)--Thread(Thread[main,5,main])--End 批处理报表 [EL Finer]: 2012-09-18 11:55:56.571--UnitOfWork(1395568819)--线程(线程[main,5,main])--结束 工作单位冲洗[EL Finer]:2012-09-18 11:55:56.572--UnitOfWork(1395568819)--Thread(Thread[main,5,main])--恢复 工作单位【EL Finest】:2012-09-18 11:55:56.572--UnitOfWork(1395568819)--Thread(Thread[main,5,main])--执行 查询 ReadAllQuery(referenceClass=AuditTable sql="SELECT AUDIT_TABLE_ID、AUDIT_CREATE、AUDIT_DELETE、AUDIT_READ、AUDIT_UPDATE、 CREATED_BY、CREATED_ON、LAST_UPDATED_BY、LAST_UPDATED_ON、TABLE_NAME FROM AUDIT_TABLE WHERE (TABLE_NAME = ?)") [EL Fine]: 2012-09-18 11:55:56.572--ClientSession(1625102195)--Connection(1572163248)--Thread(Thread[main,5,main])--SELECT AUDIT_TABLE_ID、AUDIT_CREATE、AUDIT_DELETE、AUDIT_READ、AUDIT_UPDATE、 CREATED_BY、CREATED_ON、LAST_UPDATED_BY、LAST_UPDATED_ON、TABLE_NAME FROM AUDIT_TABLE WHERE (TABLE_NAME = ?) bind => [ROUTER_QUANTITY] [EL更佳]:2012-09-18 11:55:56.575--UnitOfWork(1395568819)--Thread(Thread[main,5,main])--开始 工作单位提交[EL Finer]:2012-09-18 11:55:56.576--ClientSession(1625102195)--Connection(1572163248)--Thread(Thread[main,5,main])--提交 交易【EL Finest】:2012-09-18 11:55:56.611--ServerSession(598639019)--Connection(1572163248)--Thread(Thread[main,5,main])--Connection 释放到连接池 [默认]。
【问题讨论】:
标签: optimization jpa eclipselink batch-processing