Spring持久化
数据访问解决方案
1、使用标准java直接在SQL层面上进行操作,即使用JDBC API,用于以基于SQL的方式访问关系型数据库,JDBC能够以很高的性能执行基于数据集的操作,这时SQL非常强大且易用。
JDBC的目标不是要给关系型数据库提供一个面向对象的视图,也不会牺牲目标数据库专有的强大功能。如果需要使用目标数据库的某种专有特性或是存储过程,JDBC仍旧是首选的好工具--这时使用O/R映射层会非常困难。
然而JDBC是一个低级的API,直接使用会相当麻烦,必须用大量容易出错的try/catch/finally代码块确保资源和异常得到很好的处理。
2、Ibatis SQL映射
即在SQL的层面上进行持久化操作,将使用JDBC的细节全部抽象隔离起来。
不提供透明持久化,即不会对取出的对象进行变更侦测。SQL映射仅仅关注如何映射输入参数和结果值。与高级的透明持久化相比,SQL层面上的映射有以下优点:
* 保持SQL的全部能力,可以完全掌握相关语句的一切细节
* 使用基于数据集的更新和删除高效地处理多行数据
* 可以毫无限制地使用统计函数(例如avg、sum、max和count等)
* 将领域对象映射到多张表的字段,可以使用任何粒度的映射
* 显示更新被修改的对象
* 将应用层面的值转换成数据库兼容的值
Ibatis SQL映射是一种很有吸引力的关系数据库访问途径,它以声明性的方式定义SQL语句,并且允许基于数据集的访问,从简单的值到JavaBean都可以映射,因此它不仅可以映射统计值,也可以映射领域对象。
与Hibernate之类完善的透明持久化工具不同,SQL映射没有实现工作单元或身份对应表,因此它也不那么复杂。SQL映射只是借助简便的“语句映射”来进行SQL层面上的工作--很适合用于实现简单的需求,以及需要充分控制数据库访问的业务
透明持久化
复杂的数据映射产品可以自动侦测所取出对象的修改,并在事务提交时自动将修改后
的状态持久化到数据库
Spring进行数据访问
1、spring的bean工厂和应用上下文容器使得应用程序中的各种对象能够轻松装配起来
2、Spring有一个清晰的事务模型
3、提供一个通用的数据库访问异常体系
4、对各种持久化方式,用形式统一的模板机制解决了关闭连接、处理异常等问题