相信目前所有的IT公司网站在设计WEB项目的时候都含有持久层,同样地使用过Hibernate的程序员都应该看过或者了解过Hibernate根据数据库反向生成持久层代码的模板。对于Hibernate生成的这个通用型的模板,可以看一下了解Hibernate是怎么处理这一层的。笔者来到公司作为开发的时候,项目已经有了一个比较成型的Dao层代码。当然这个层级代码是用C#+NHibernate写的。在这里刚好用了泛型把整个代码改成使用Java+Hibernate去实现。

   首先,先大致阐述下整个通用Dao层是怎么设计的。

    具体的类图如下:

                泛型理解及应用(二):使用泛型编写通用型Dao层

   大致的设计思路:

  1. 工厂类:用来注册Dao层里面的每一个接口,通过HibernateFactory获取到每个具体Dao的实例;实现面向接口式编程。

  2. 抽象层:使用泛型抽象出一个Dao层面的接口,使得每个具体的类操作都有自己的Dao实例进行操作。

  3. 使用虚拟类对抽象层进行重写,没必要为每个Dao编写一次重复的代码。

  对于这套模板,大部分的都是概念性的东西,说白了这个设计里面最重要的就是AbstractDao<T>这个类,因为所有的代码基本都囊括在这里面了。下面,来贴下这个类里面的代码。

 1 package com.template.dao.interfaces;
 2 
 3 import java.io.Serializable;
 4 import java.util.List;
 5 
 6 /**
 7  * @Author: Travelsky_CLSUN
 8  * @Date: Created on 17-5-18 
 9  * @Description: 抽象一个Dao层级内容,含有基本的增删改查功能
10  */
11 public interface IDao<T>
12 {
13 
14     void add(T t);
15 
16     void delete(Serializable id);
17 
18     void update(T t);
19 
20     T findById(Serializable id);
21 
22     List<T> findAll();
23 
24 }
IDao定义

相关文章: