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. 连接对象管理
数据库连接对象属于重要的共享资源,为解决其频繁分配与释放所带来的性能问题,引入了连接池;
连接池的核心理念:在系统初始化时,依据配置创建连接并放入连接池内,此后所使用的连接均从该池内获取,以实现连接的高效复用;