简单DAO与servlet调用如何避免重复的数据库连接.现在都说框架,我今天发个不说框架的,作为入门讨论(包括我及其他初学者需要)。
写DAO往往是这样的(网上的视频教程,纸类教材,网上教程等貌似都是这样教的…):
Java代码





- class DAO类名 {
- //增加操作
- public void add (vo对象) {
- //1、获取一个数据库连接
- //2、执行insert sql语句
- //3、关闭数据库连接及其他清理操作
- }
- //删除操作
- public void delete (vo对象) {
- //1、获取一个数据库连接
- //2、执行delete sql语句
- //3、关闭数据库连接及其他清理操作
- }
- … …//其他类似操作
- }
class DAO类名 { //增加操作 public void add (vo对象) { //1、获取一个数据库连接 //2、执行insert sql语句 //3、关闭数据库连接及其他清理操作 } //删除操作 public void delete (vo对象) { //1、获取一个数据库连接 //2、执行delete sql语句 //3、关闭数据库连接及其他清理操作 } ... ...//其他类似操作 }
那么问题就来了,如果我在一个servlet中的doGet 或 doPost 中同时调用了 DAO.add() 和 DAO.delete() 这两个方法,那么每个方法都会打开并关闭数据库连接一次,显然是影响性能的。
如何在打开一次数据库连接中完成两次操作呢?
我想到的处理方法就类似与Hibernate session里的操作,使用transaction.begin()开始,transaction.commit()结束;
那么DAO类修改如下:
Java代码





- class DAO类名 {
- //增加新的方法begin();
- public void begin() {
- // 获取一个数据库连接
- ……
- }
- //增加新的方法commit();
- public void begin() {
- // 关闭数据库连接及其他清理
- ……
- }
- //增加操作
- public void add (vo对象) {
- //执行insert sql语句
- }
- //删除操作
- public void delete (vo对象) {
- //2、执行delete sql语句
- }
- … …//其他类似操作
- }
class DAO类名 { //增加新的方法begin(); public void begin() { // 获取一个数据库连接 ...... } //增加新的方法commit(); public void begin() { // 关闭数据库连接及其他清理 ...... } //增加操作 public void add (vo对象) { //执行insert sql语句 } //删除操作 public void delete (vo对象) { //2、执行delete sql语句 } ... ...//其他类似操作 }
DAO这样写以后,servlet中调用就写为:
Java代码





- …
- DAO dao = new DAO() ;
- dao.begin();
- dao.add(vo);
- dao.delete(vo);
- dao.commit();
- …
... DAO dao = new DAO() ; dao.begin(); dao.add(vo); dao.delete(vo); dao.commit(); ...
这里说的简单的例子,复杂的也该是以此为基础。不知道大家在实际使用中是如何处理的?欢迎大家指点。
被误了N久啊。要是这样去找工作,谁敢要?! 问题补充: 貌似偶要发讨论意向,居然就成问题贴了,动不动就框架,没框架怎么办?偶也没进过什么公司,没团体合作过,完全自学,哪来那么好的处理方法?苦啊,继续摸索。
什么时候会发生一次连接,多次操作呢?比如:分页时,即要获取当前页的数据,又要获取总数。