连接池在建立连接后用关闭连接吗?
我现在想用连接池技术连接数据库我发现,建立连接的代码为
Context ctx=new InitialContext();
DataSource ods=(DataSource)ctx.lookup("java:comp/env/jdbc/bookstore");
conn = ods.getConnection();
书上没有关闭连接的代码,不用关闭连接吗?
那是不是每一次建立连接都用相同的代码呢?
连接自己会断开么?
还是csdn好啊,javaeye想问个问题没有积分都问不成
------解决方案--------------------连接池应该是不要关闭的,即使关闭连接,数据库连接并没关闭,只是连接回到连接池成为了空闲的连接。
------解决方案--------------------连接池中的连接不需要关闭, 如果手动关闭就失去了连接池的意义,连接池的作用就是存储可用的连接对象,从而下次用客户端连接上来, 系统就不需要花时间建立新的连接,而是直接从连接池中取出可用连接, 因为省去了创建新连接的时间,这样就极大的提高的系统的效率。
------解决方案--------------------程序中要关闭,关闭连接后此次的数据库连接才会在连接池中变成可用连接,不然会一直处于连接状态直到超时。
------解决方案-------------------- 多看看连接池的属性配置和作用 比如 连接池里的属性“maxCount"限制一个上限,超过此树不能连接, 连接池他是多个连接的组合,配置多个连接是为了提高连接的速度,你只需要对连接进行控制。
连接池一般不会断开除非服务器或是数据库挂了
------解决方案--------------------虽然可以调用close()方法关闭!
但是实际上是把连接池中的连接"关闭"指的是把连接又放到了连接池中,供下一次使用!
而不是真正意义上的关闭!
------解决方案--------------------连接池的作用就是存储可用的连接对象,从而下次用客户端连接上来, 系统就不需要花时间建立新的连接,而是直接从连接池中取出可用连接, 因为省去了创建新连接的时间,这样就极大的提高的系统的效率。可以参考连接池创建的参数:
XML code
<Resource
name="jdbc/jspdev"
type="javax.sql.DataSource"
password="bn"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="2"
maxWait="5000"
username="bn"
url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev"
maxActive="4"/
------解决方案--------------------
使用完就关闭,不要一直占着,以便别人使用
------解决方案--------------------
------解决方案--------------------
你在程序中一定要手动关闭,因为这个关闭的方法被重写掉了,他不是关闭了和数据库的通讯,而是将连接放回连接池中。
------解决方案--------------------
------解决方案--------------------
连接池的不需要关,但你程序里必须要关,要不你就一直占着那个连接,直到失效
------解决方案--------------------
个人认为:关闭同不关闭结果一样!
------解决方案--------------------
一般连接池的关闭并不是真正的关闭,而是为了复用连接,使连接重新回到连接池。
------解决方案--------------------
你用的是数据源
不需要关闭连接
------解决方案--------------------
不关闭,只是变为空闲状态,这样再有用户请求连接的时候就不用重新建立连接,节约资源,节约时间。
------解决方案--------------------
应该还是需要close()的,书上是这么写的,嘿嘿
------解决方案--------------------
必须调用close()不然占用系统资源
------解决方案--------------------
Connection要关的,这样就把这个连接释放到连接池里面去了。如果不关只能等到连接池的超时机制强制关闭连接,这样一来很容易导致有些应用得不到连接资源,会出现等待连接“假死”情况
------解决方案--------------------