Java 中利用泛型和反射机制抽象DAO的实例
Java 中利用泛型和反射机制抽象DAO的实例
一般的DAO都有CRUD操作,在每个实体DAO接口中重复定义这些方法,不如提供一个通用的DAO接口,具体的实体DAO可以扩展这个通用DAO以提供特殊的操作,从而将DAO抽象到另一层次,令代码质量有很好的提升
1.通用接口
import java.io.Serializable; import java.util.List; public interface BaseDao<T> { T get(Serializable id); List<T> getAll(); // List<T> find(String hql,); void save(Object o); void remove(Object o); void update(Object o); }
2.DAO基类
import java.io.Serializable; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; public class HibernateBaseDao<T> extends HibernateDaoSupport implements BaseDao<T>{ private Class<T> entityClass; public HibernateBaseDao() { Type genType = getClass().getGenericSuperclass(); Type[] params = ((ParameterizedType) genType).getActualTypeArguments(); entityClass = (Class)params[0]; } public T get(Serializable id) { return (T)getHibernateTemplate().load(entityClass, id); } public List<T> getAll() { return getHibernateTemplate().loadAll(entityClass); } public void save(Object o) { getHibernateTemplate().saveOrUpdate(o); } public void remove(Object o) { getHibernateTemplate().delete(o); } public void update(Object o) { getHibernateTemplate().update(o); } }
这里利用反射机制获取泛型对应的实体类的类型
3.实体DAO类
import java.util.Iterator; import java.util.List; import com.baobaotao.dao.ForumDao; import com.baobaotao.dao.HibernateBaseDao; import com.baobaotao.domain.Forum; public class ForumHibernateDao2 extends HibernateBaseDao<Forum> implements ForumDao{ public long getForumNum() { Iterator iter = getHibernateTemplate().iterate( "select count(f.forumId) from Forum f"); return ((Long)iter.next()); } }
通过扩展泛型DAO基类,就自动拥有基类的数据操作功能,只要提供特殊的功能即可,实体DAO的编码生产率得到了极大的提高
以上就是Java 中利用泛型和反射机制抽象DAO的实例的讲解,大家如果对泛型及反射机制有不明白的可以查询本站的相关文章或者留言交流,到社区提问,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关文章
解决Spring Security升级到5.5.7、5.6.4及以上启动报错出现版本不兼容的问题
这篇文章主要介绍了解决Spring Security升级到5.5.7、5.6.4及以上启动报错出现版本不兼容的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-08-08一不小心就让Java开发踩坑的fail-fast是个什么鬼?(推荐)
这篇文章主要介绍了Java fail-fast,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-04-04Spring Security整合KeyCloak保护Rest API实现详解
这篇文章主要为大家介绍了Spring Security整合KeyCloak保护Rest API实现实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-11-11
最新评论