zoukankan      html  css  js  c++  java
  • 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);
        }
    
        // ...
    
    }
  • 相关阅读:
    重定向管道
    系统安全
    Linux启动流程
    压缩解压
    Vim
    ssh
    sudo
    Raid
    rsync
    quota
  • 原文地址:https://www.cnblogs.com/larryzeal/p/5996523.html
Copyright © 2011-2022 走看看