2011-12-28 56 views
0

我正在使用jndi来访问dbcp数据源。我应该将JDBC连接绑定到servlet线程吗?

在每次调用static_dataSource.getConnection()返回新连接的一个servlet请求的范围内。

在休眠中有一个功能getCurrentSession()。据我了解绑定到当前线程的这个函数返回连接。我应该将jdbc连接绑定到线程吗?

我的目标是在一个事务的范围内调用复杂的业务逻辑,该事务包含许多DAO调用,每个http请求。就像在Spring中一样,我可以用@Transactional注释整个服务类。

回答

1

我建议你不要将JDBC连接绑定到线程。使用连接池并尽可能以最短时间挂接连接:从池中获取,执行操作,关闭连接,返回池。

您的持久性代码应该完全独立于Web层。您应该能够独立于Web层测试和使用它。任何你将两者联系在一起的做法都会降低持久层的有效性。

+0

但我想要的是在包含许多DAO调用的一个事务的范围中调用复杂的业务逻辑。就像在Spring中一样,我可以用@Transactional注释整个服务类。 – 2011-12-28 22:02:55

+0

那你为什么不用Spring呢?这些想法应该通过翻译 - 让拥有用例/事务的对象和业务逻辑所需的所有DAO获取连接并使其可供所有需要它的DAO使用。然后关闭它并将其返回到游泳池。每个线程的一个连接不会很好地扩展。 – duffymo 2011-12-28 22:31:27

相关问题