,但有一些IDE 工具也可以生成基本的CRUD方法。使用DAO 接口的原因是:避免业务逻辑组件与特定的DAO组件藕合。由于DAO 组件中的方法不是开始就设计出来的,其中的很多方法可能会随着业务逻辑的需求而增加,但以下几个方法是通用
的。
? get: 根据主键加载持久化实例。
? saveor update: 保存或更新持久化实例。
? remove: 删除持久化实例。
上面涉及了7个PO,这样我们必须设计7个对应的PODao
7个Dao必须继承BaseDao 这个BaseDao 有对接口的一些基本的CURD操作。7个Dao 如下。LinksDao ,BlogDao、FeedBackDao、ArticleDao、MessageDao、SortDao、PictureDao。这7个Dao 分别封装对自己的持久化对象的一些操作。
5.2.4 实现DAO组件
借助于Spring的DAO支持,可以很方便地实现DAO类。Spring 为Hibernate 的整合提供了很好的支持, Spring 的DAO 支持类是:HiberanteDaoSupport ,该类只需要传入一个SessionFactory 引用,即可得到一个HibernateTemplate 实例,该实例功能非常强大,数据库的大部分操作也很容易实现。所有的DAO 类都继承HibernateDaoSupport,并实现相应的DAO 接口。而业务逻辑对象则面向接口编程,无须关心DAO 的实现细节。通过这种方式,可以让应用在不同的持久化技术之间切换。LinksDaoHiberante ,BlogDaoHiberante、FeedBackDaoHiberante、ArticleDaoHiberante、MessageDaoHiberante、SortDaoHiberante、PictureDaoHiberante分别是LinksDao ,BlogDao、FeedBackDao、ArticleDao、MessageDao、SortDao、PictureDao的实现类,并继承HibernateDaoSupport ,并通过Spring IoC容器向7个Dao 实现类注入SessionFactroy ,在7个Dao 的实现类就可以通过HibernateTemplate对PO持久化操作。并借助于Spring 提供的两个工具类: HibernateDaoSupport和HibernateTemplate,可以很容易地实现DAO 组件。这种简单的实现较之传统的JDBC 持久化访问,简直不可同日而语。比如我现在要得到所有Blog对象我只需一句 return getHibernateTemplate() .find("from Blog");则返回一个Blog对象的
列表。
5.2.5 部署DAO 层
HibernateDaoSupport类只需要一个SessionFactory 属性,即可完成数据库访问。SessionFactroy创建Session,而数据库的CRUD操作都是有Session 完成,并将
查询结果保存在一级缓存中,每次用户提交一次会话,可能需要Session完成一些数据库的操作而实际的数据库访问由模板类HibernateTemplate完成,该模板类提供了大量便捷的方法,简化了数据库的访问。
5.2.5.1 DAO 组件运行的基础
应用的DAO 组件以Hibernate和Spring 为基础,由Spring 容器负责生成并管理DAO组件。Spring 容器负责为DAO 组件注入