【发布时间】:2012-01-25 19:13:54
【问题描述】:
我有一个简单的应用程序,它通过 Hibernate 从 db (MySQL 5.1) 上的一个表中获取一些数据并显示内容。使用的主要框架是 Spring 3.0。查询在 @Transactional(read-only) (+第二缓存级别)中正确运行。 问题出现在针对同一页面运行一些具有 20/30 请求的并发测试。一些页面请求返回 500 而不是 200。我想这是由于 @Transactional 不管理多线程访问(如果我错了,请纠正我)。
在控制器中我有这样的东西:
List<String> names = usersService.getUserNames(); // this executes query in @Transactional env
doSomething(names);
日志说“doSomething”会抛出一些 NullPointerException,因为列表中没有传递的数据。
有没有办法用 Spring+Hibernate 实现一个多线程访问管理器来管理对 db 的并发请求?
【问题讨论】:
-
对不起,我已经编辑了问题
-
你的日志揭示了关于 500 的哪些信息
标签: database multithreading hibernate spring transactional