您的位置:首页 > 编程语言 > Java开发

JDBC高级应用 - DAO模式与JavaBean

2015-05-19 19:32 423 查看

DAO模式与JavaBean

DAO数据库操作对象(Data Access Object):负责连接数据库,通过集合获取数据库中的数据,对数据进行CRUD的操作。

DAO出现之前,操作数据库的代码与业务代码都出现在JSP或Servlet中,不利于业务代码的分离。DAO出现后改变了这一情况,所有与数据库相关的操作都被拿到了DAO层实现,Servlet或JSP中只操作JavaBean与DAO层,而DAO只操作数据库。

事务实例:转账

张三转200元到李四的银行账户,李四要买英雄联盟皮肤。

要分两个步骤:

一:从张三账户中减去200元

二:在李四账户中加上200元

一个无事务的方法(步骤正常)

一个无事务的方法(步骤异常:后面的步骤有错,断电)

一个有事务的方法(步骤正常)

一个无事务的方法(步骤异常:后面的步骤有错,断电)

代码:

getConnection();
conn.setAutoCommit(false);   //停用自动提交事务
...
int result2 = pStmt.executeUpdate();
System.out.println(“李四账户存入200元,结果:"+(result2==1?"成功":"失败"));

if(result1==1 && result2==1){   //扣款、充值都成功
conn.commit();
System.out.println("转账成功,事务提交。");
}else{
conn.rollback();
System.out.println("转账失败,事务回滚。");
}


抛出异常自动回滚

设置自动提交为false后,事务的提交必须执行conn.commit(),而事务的回滚不一定要显示的执行conn.rollback(),如果程序最后没有执行conn.commit(),事务也会回滚,一般是要直接抛出异常,终止本段程序的正常运行。

如下:

if(result1!=1 || result2!=1){
throw new  Exception("数据更新失败。");
}
conn.commit();


数据源(连接池)

在先前的JDBC编程中,每操作一次数据库,都要经过下面的过程:创建Connection、创建Statement对象、获取ResultSet、销毁ResultSet、销毁Statement、断开Connection。即每操作一次数据库,都会创建连接、断开连接。

在实际的使用中,创建和断开Connection都会消耗一定的时间、IO资源,在大量的并发访问时尤其明显 。而企业级的开发需要高效快速的连接处理。为避免频繁的创建、断开数据库连接,可以使用数据源技术。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: