【笔记-软考】层次式架构-数据访问层设计

Author:赵志乾
Date:2024-07-27
Declaration:All Right Reserved!!!

1. 数据访问模式

  • 在线访问:占用一个连接,通过该连接与数据源进行交互;
  • DAO(Data Acess Object):将数据访问操作与高层业务逻辑分离,其一般包含DAO接口、DAO接口的实现类、DAO工厂类以及数据传输对象,并将访问数据源的逻辑封装至DAO接口的实现类;
  • DTO(Data Transfer Object):本身是一组对象或是数据的容器,用于跨进程或网络边界的数据传输,此类对象不应包含具体的业务逻辑,以便于序列化后跨网络传输;
  • 离线数据模式:从数据源获取数据后,按照预定义结构存放于系统中,作为应用的中心;
  • ORM(Object/Relation Mapping):作为工具或平台,完成应用程序内的对象数据与数据库关系型数据间的相互转化;

2. 工厂模式的应用

        工厂模式定义一个用于创建对象的接口,让子类决定实例化哪一个类,从而将实例化操作延迟到子类中;在数据访问层中,为实现对多种数据库的操作,需先定义一个数据库操纵接口,然后根据数据库的不同,由类工厂决定实例化哪个类;

3. 事务处理

        数据库事务服从ACID原则:

  • 原子性(Atomicity): 事务内的操作要么全部成功,要么全部失败;
  • 一致性(Consistency): 事务执行失败时,被该事务影响的数据都应恢复到事务执行前的状态;
  • 隔离性(Isolation): 事务执行过程中对数据的修改,在事务提交前对其他事务不可见;
  • 持久性(Durability):  已提交的数据在系统崩溃的情况下,依然保持生效;

        J2EE应用服务器一般支持JDBC事务、JTA(Java Transaction API)事务、容器管理事务;

  • JDBC事务:Connection默认为自动提交,其需要先更改为非自动提交模式,在SQL语句均执行完成后进行事务提交,最后再将Connection改为自动提交模式,以便回到初始默认状态;
  • JTA事务:有3个核心接口:UserTransaction、TransactionManager、Transaction;应用程序调用UserTransaction.begin()方法开始一个事务,该事务会与当前线程相关联,调用UserTransaction.commit()方法终止与当前线程关联的事务,调用UserTransaction.rollback()方法将放弃与当前线程关联的当前事务;

4. 连接对象管理 

        数据库连接对象属于重要的共享资源,为解决其频繁分配与释放所带来的性能问题,引入了连接池;

        连接池的核心理念:在系统初始化时,依据配置创建连接并放入连接池内,此后所使用的连接均从该池内获取,以实现连接的高效复用;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫白小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值