请问一个Connection在close()之后,如何重新打开?
重新打开之后,原来设置的一个参数会不会保留?比如setAutoCommit()。
------解决方案--------------------
不会。
CLOSE会清空参数,释放资源
如果想用的话,必须保存在一介质中
------解决方案--------------------
简单点的就是传递
public void userAddAction(HttpServletRequest request,....){
userManager(User user);
}
public void userManager(User user){
创建一个Connection conn = ....;
//传递
userManager.save(conn,userBean);
finally{
//关闭conn
}
}
public void save(Connection conn,UserBean user){
//直接使用conn 但不需要关闭conn
//可以再次传递..
}
还有一种高效的方式.. 也是我们真正项目中必用的 那就是pool的概念 大体的思路是 在我们的ManagerUser 业务逻辑类/持久类里面 获得的Connection 在调用 close()时不会真的从内存中把此次的连接清理/关闭而是 重新放回pool中..
而pool会对connection加上一些标记 如当前的conn是否正在使用/空闲
------解决方案--------------------
楼上的,你说的放到pool是什么意思?你们自己开发的一个pool?那与原来的连接池是不是有功能上的重合?
------解决方案--------------------
pool就是连接池。
另造了个轮子吧?
------解决方案--------------------
maybe floor3 == floor4.......
j2ee pools are creating when application startups,
and are alive in memory through the application,
connection.close() releases the connection to pool, but the parameters don't exist now.
so you can put some parameters you want used in sth , such as request, session , file and so on.
When you want to use next , you look up a connection in pool first , then put the parameters into it and can use it again.