Spring整合Hibernate
1.Spring提供的DAO支持
(1)DAO模式是一种标准的JavaEE设计模式,DAO模式的核心思想是,所有数据库访问都通过DAO组件完成,DAO组件封装了数据库的增、删、改等原子操作。业务逻辑组件依赖于DAO组件提供的书苦苦原子操作,完成系统业务逻辑的实现;
(2)JavaEE应用大致上可分为如下三层:
1)表现层
2)业务逻辑层
3)数据持久层
(3)轻量级JavaEE应用架构:
2.管理Hibernate的SessionFactory
(1)Spring的IoC提供用声明式的方式管理SessionFactory,还能为SessionFactory注入数据源引用;
(2)一旦在Spring的IoC容器中配置了SessionFactory Bean,它将随应用的启动而加载,并可以利用IoC容器的功能,将SessionFactory注入任何Bean中,比如DAO组件。一旦DAO组件获得了SessionFactory Bean的引用,它就可以完成实际的数据库访问;
(3)配置:
org.hibernate.dialect.MySQL5InnoDBDialect true true update
3.实现DAO组件的基类
(1)使用Spring管理SessionFactory后就可以将SessionFactory注入应用的DAO组件中,Spring推荐使用SessionFactory的getCurrentSession()方法获取Hibernate Session,其余的持久化操作与直接使用Hiberntate持久化操作的代码基本相同;
(2)为了简化应用中各DAO组件的设计,程序考虑将所有的DAO组件都需要提供的方法提取出来,由一个BaseDap来实现,这样应用中的其他DAO组件只要继承BaseDao即可;
(3)通常来说所有的DAO组件都应该提供如下方法:
1)根据ID加载持久化实体;
2)保存持久化实体;
3)更新持久化实体;
4)删除持久化实体,以及根据ID删除持久化实体;
5)获取所有的持久化实体;
6)其他一些查询方法;
(4)BaseDao接口代码:
import java.io.Serializable;import java.util.List;public interface BaseDao{ //根据ID加载实体 T get(Class entityClazz,Serializable id); //保存实体 Serializable save(T entity); //更新实体 void update(T entity); //删除实体 void delete(T entity); //根据ID删除实体 void delete(T entity,Serializable id); //获取所有实体 List findAll(Class entityClazz); //获取实体总数 long findCount(Class enetityClazz);}
(5)BaseDao实现类:BaseDaoImpl
4.传统的HibernateTemplate和HibernateDaoSupport
5.实现Dao组件
6.使用IoC容器组装各种组件
7.使用声明式事务