Spring学习笔记(二)---Spring对数据访问层的支持

本文主要探讨Spring在数据访问层的角色,包括Spring的JDBC支持,如何结合Hibernate等ORM框架,以及如何通过Spring启用事务。通过使用Spring,可以减少传统JDBC的繁琐操作,提高代码的可维护性和事务管理的便捷性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:在上一篇《Spring学习笔记(一)---Spring概述》中,我们初识了Spring框架,了解到Spring其实是一个用于配置和管理bean的容器框架,在Web应用中纵跨了Web层,业务逻辑层和持久层。在本篇文章中我们就来看看Spring在数据访问层中起到的作用。本篇以实践为主,并不涉及到源码的深入分析。


一、什么是数据访问层/持久层/DAO层?

在Web应用中,为了降低系统的耦合度,我们会将应用分层。数据访问层负责与数据库交互,执行与数据库CRUD有关的操作,ORM映射等操作。简而言之就是负责读写数据库的操作。


二、传统的数据访问层是如何实现的?

在学习Java的时候,我们有时候会看到JDBC的章节,里面阐述的基本上就是传统的数据库访问的实现,JDBC的在Web应用中的定位如图。具体的已经在《利用JDBC访问MySQL数据库》中做了详细的讨论,已经了解的可以跳过。


分析:这种传统的使用JDBC API的数据访问层有什么不足呢?大体上可以归为(但不限于)以下四点:

  • 循环模式,也就是只要业务代码中有需要访问数据库的地方,我们都需要重复这一套步骤进行数据库的访问。这将造成维护的困难。
  • 数据库访问的代码和业务代码强耦合在一起,不利于维护。
  • 不适当的SQL异常处理操作。有时候程序员并不清楚如何处理SQL异常但又不能忽略(checked异常会强制抛给程序员处理)
  • 没有对SQL进行完全的抽象。也即是我们需要编写特定JDBC供应商的SQL语句,不利于应用的迁移。

三、Spring支持的JDBC

为了初步解决上面的问题,我们在项目中引入Spring框架,并且使用其对JDBC的支持和增强功能。下面直接从代码入手,讲解引入Spring之后的便利。(篇幅原因,数据库的创建请自行尝试。)
业务层接口:
public interface StudentService {

    /**
     * 通过学号查找学生信息
     * @param number
     * @return
     */
    public Student getStudentInfosByNumber(String number);

    /**
     * 添加学生
     * @param student
     * @return
     */
    public boolean addStudent(Student student);

}
业务层实现,可以看到业务层这里是直接将工作交由给DAO层处理的。
@Service("studentService")
public class StudentServiceImpl implements StudentService{

    @Resource
    private StudentDAO studentDAO;

    public Student getStudentInfosByNumber(String number) {
        return studentDAO.getStudentInfosByNumber(number);
    }

    public boolean addStudent(Student student) {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值