Spring的数据访问
Spring的目标之一就是允许我们在开发应用程序时,能够遵循面向对象原则中的“针对接口编程”,对数据访问的支持也不例外。为了避免持久化的逻辑分散到应用的各个组件中,最好将数据访问的功能放到一个或多个专注于此项任务的组件中,这样的组件通常称为数据访问对象(data access object, DAO)或Repository。
为了避免应用与特定的数据访问策略耦合在一起,编写良好的DAO应该以接口的方式暴露功能。设计数据访问层的合理方式是:服务对象本身并不会处理数据访问,而是将数据访问委托给DAO,DAO接口确保其与服务对象的松耦合。这样的好处有:第一,使得服务对象易于测试;第二,数据访问层是以持久化技术无关的方式来进行访问的,切换持久化框架对应用程序其他部分带来的影响最小。
在Java中,JDBC是与关系型数据库交互的最基本方式。JDBC抛出SQLException的常见问题包括:应用程序无法连接数据库;要执行的查询存在语法错误;查询中所使用的表和/或列不存在;试图插入或更新的数据违反了数据库约束。与其他技术相比,使用JDBC能够很好地对数据访问的性能进行调优,JDBC允许使用数据库的所有特性,而这是其他框架不支持甚至禁止的。相对于持久层框架,JDBC能够让我们在更低的层次上处理数据,我们可以完全控制应用程序如何读取和管理数据,包括访问和管理数据库中单独的列。这种细粒度的数据访问方式在很多应用程序中是很方便的。