• Spring 4 官方文档学习(十)数据访问之DAO支持


    1、介绍

    Spring 中 Data Access Object (DAO)支持 的目标是以一种一致的方式更简单的使用JDBC、Hibernate、JPA或JDO等数据访问技术。可以在前面说的几种数据访问技术之间随意切换,也不必担心彼此的异常捕获工作。

    2、一致的异常层级

    Spring将特定技术独有的异常如SQLException等翻译成了Spring自己的异常类层级 -- 根异常是 DataAccessException 。这些异常封装了原有的异常。

    除了JDBC异常,Spring还封装了Hibernate独有的异常,将它们转成一组运行时异常 -- 还有JDO和JPA异常。这样可以处理大多数的持久层异常 -- 不必担心各种catch-and-throw模块和异常声明!(当然,你仍然可以使用独有的异常)

    DataAccessException

    3、用于配置DAO或Repository类的注解

    最佳方式是使用@Repository注解,这样可以不必配置XML。

    @Repository
    public class SomeMovieFinder implements MovieFinder {
        // ...
    }

    任何DAO或Repository实现都需要依赖持久层技术来访问持久层资源,如JDBC DataSource、EntityManager等。最简单的办法就是使用@Autowired、@Inject、@Resource或@PersistenceContext来注入。例如,针对JPA repository:

    @Repository
    public class JpaMovieFinder implements MovieFinder {
    
        @PersistenceContext
        private EntityManager entityManager;
    
        // ...
    
    }

    如果使用经典的Hibernate APIs,可以注入SessionFactory:

    @Repository
    public class HibernateMovieFinder implements MovieFinder {
    
        private SessionFactory sessionFactory;
    
        @Autowired
        public void setSessionFactory(SessionFactory sessionFactory) {
            this.sessionFactory = sessionFactory;
        }
    
        // ...
    
    }

    典型的JDBC支持。可以初始化时注入DataSource,就可以初始化一个JdbcTemplate:

    @Repository
    public class JdbcMovieFinder implements MovieFinder {
    
        private JdbcTemplate jdbcTemplate;
    
        @Autowired
        public void init(DataSource dataSource) {
            this.jdbcTemplate = new JdbcTemplate(dataSource);
        }
    
        // ...
    
    }
  • 相关阅读:
    Redis 主从复制与哨兵
    前端面试中让你困惑的闭包、原型、原型链究竟是什么?
    Chrome V8系列--浅析Chrome V8引擎中的垃圾回收机制和内存泄露优化策略[转]
    nodejs 制作项目目录树代码
    nprogress页面加载进度条
    koa2 从入门到进阶之路 (一)
    原生js 封装好了的ajax 带钩子版本 可封装成对象
    JS
    Javascript面向对象编程(三):非构造函数的继承
    Java 内部类
  • 原文地址:https://www.cnblogs.com/larryzeal/p/5996523.html
Copyright © 2020-2023  润新知