问题描述
[size=xx-large]大环境是这样的,程序获取的是应用服务器(如TOMCAT)提供的数据源的数据库连接。现在的程序有个疑惑,望大家帮我解答,最好能详细说明。比如程序的登陆,需要做A,B,C,D,E5件事情,这5件事情就写了5个方法,每个方法都从数据库取数。那么现在的问题是,这5个方法,只获取一个连接,然后不断把连接作为参数传递的办法好?还是每个方法自己内部新建数据库连接好?最好给答案的时候,能给出解释,谢谢了[/size] 问题补充:wangyu1221 写道
解决方案
我先说一下,ThreadLocal的方式就像你说的,效果上来说和"作为方法参数传递下去"的效果一样,这两种方法都没有返回连接池,都需要你手动来关闭,但是用传递的方式一个是增加了程序的耦合,同时也增加了复杂度,而且放在ThreadLocal还有一个好处就是你可以用动态代理来实现自动的事务处理,也就是说关闭连接也可以做到
解决方案二:
两种办法都不好,建议1(未使用spring):使用ThreadLocal来保存Connection建议2(有使用):使用jdbcTemplate加事务管理
解决方案三:
完全可以使用数据库连接池啊,在你获取数据库连接的时候,获取到的就是池里面的连接,你完全不需要管数据库连接是如何创建如何维护如何销毁的。
时间: 2024-09-29 03:01:21