首先声明我的资料大我来自javaeye,先谢谢各位.
但因本人理解能力不足,现把我对通用DAO的引用贴出,望大家指点.
1.BaseDAO 接口
public interface BaseDAO<T, ID extends Serializable> {
public void save(T entity);
public void delete(T entity);
public T findById(Class<T> entityClass, ID id);
}
2.BaseDAO 的实现
public class BaseHibernateDAO<T, ID extends Serializable> extends HibernateDaoSupport implements BaseDAO<T,ID> {
private static final Logger logger = Logger.getLogger(BaseHibernateDAO.class);
public void save(T entity) {
try {
getHibernateTemplate().save(entity);
} catch (RuntimeException e) {
logger.error("保存实体异常", e);
throw e;
}
}
public void delete(T entity) {
try {
getHibernateTemplate().delete(entity);
} catch (RuntimeException e) {
logger.error("删除实体异常", e);
throw e;
}
}
public void saveOrUpdate(T entity) {
try {
getHibernateTemplate().saveOrUpdate(entity);
} catch (RuntimeException e) {
logger.error("更新或保存实体异常", e);
throw e;
}
}
@SuppressWarnings("unchecked")
public T findById(Class<T> entityClass, ID id) {
try {
return (T) getHibernateTemplate().get(entityClass, id);
} catch (RuntimeException e) {
logger.error("查找指定ID实体异常,ID:" + id, e);
throw e;
}
}
3.一个实体DAO接口extends BaseDAO
public interface ProductDAO extends BaseDAO<Product,Integer>{
//如添加
public void productInsert(Product entity);
public void findById(Product entityClass, Integer id)
//如除crud外Product自己的业务的方法
public void myProductDelete(class clz,Serializable pk);
......
}
4.实体DAO的实现
public class ProductDAOImpl extends BaseHibernateDAO<Product,Integer> implements
ProductDAO {
public void productInsert(Product entity) {
save(entity);
}
public void findById(Class<T> entityClass, ID id) {
findById(entityClass,id);
}
public void myProductDelete(class clz,Serializable pk){
Object object = this.getHibernateTemplate().get(clazz, pk);
this.getHibernateTemplate().delete(object);
}
........
}
5.service层 实体接口
public interface ProductService {
// 添加
public void productInsert(Product entity) throws ProductException;
public void save(Product entity) throws ProductException;
public void delete(Product entity) throws ProductException;
public Product findById(Product entityClass, Integer) throws ProductException;
}
6.service层 实体service实现
public class ProductServiceImpl implements ProductService {
private ProductDAO productDAOImpl;
public void delete(int id) throws ProductException {
try{
productDAOImpl.Delete(productDAOImpl.findproductByPrimaryKey(id));
}catch(Exception e ){
e.printStackTrace();
throw new ProductException(this.getClass().getName()+"Product Delete 删除失败");
}
}
public void save(Product product) throws ProductException {
try{
productDAOImpl.save(product);
}catch(Exception e){
e.printStackTrace();
throw new ProductException(this.getClass().getName()+"Product Insert 添加失败");
}
.......
}
请大家帮我看看我这个通用baseDAO的设计是否合理?
具体如:
1.dao的设计有没错?
2.T Class<T>等泛型,反射有没错?
3.service层的传值有没错?
4.这样的异常处理合理吗?
5.就这样的写法是否存在不合理的的写法,而我又不知道的?
各位拍砖吧,至少知道那里不足,继续学习..........
分享到:
相关推荐
C#特性标签实现通用Dao层C#特性标签实现通用Dao层C#特性标签实现通用Dao层
自己写的泛型通用DAO,可以很简化DAO层的代码,但是目前只能支持单表的增,删,查,改。可以充分的理解jdk5.0的泛型和反射机制。希望大家指正不足之处!
java的基于泛型+反射的通用DAO例子,原创,没事写着玩的,请多指教哈。。。
java ssh通用DAO另类实现示例 java ssh通用DAO另类实现示例
自定义通用DAO实现基本的CRUD,比如: public interface BaseDao<T> { int insert(T obj) throws Exception; int update(T obj) throws Exception; int deleteByPrimaryKey(Object key) throws Exception; int ...
一款封装了数据库DAO操作的源代码,可以直接拿来用,或者学习
通用dao,简单全面,所有dao都可以继承这个dao.
Spring-springMVC-Mybatis通用Dao框架,附带sql文件,下载导入开发工具可直接运行查看效果
HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao ...
Java源代码 一个简单的通用DAO实现 (基于hibernate)面向应用层按POJO类缓存hibernate的session对象.使用举例: DAO dao = DAOFactory.getDAO(POJO.class);//获得一个全局类单例的DAO实例 dao.save(pojo); 你也可以...
这个是不同类型的表单通用的dao模式,简洁明了,注释清楚,可移植性很强
spring集成hibernate通用dao,泛型,server都可以调用
NULL 博文链接:https://azure2a.iteye.com/blog/1128097
Java通用连接DAO有JDBC连接和JNDI 两种,含源代码。
NULL 博文链接:https://peak1992.iteye.com/blog/2356992
基本上可以在SSH中通用的dao组件 sd fs fs df sd
DAo.hibernate3不是泛型的通用DAo我在网上找了好多都是泛型的,需要继承才能用,本人比较懒,找了好久才找到了这么个,不需要继承可以直接用的hibernate dao
mybatis 通用dao的简单实现 简单的增 删 改 查 复杂功能未实现
自己写的一个JDBC通用DAO 有几点需要注意: 1.数据库命明目前只支持没下血杠命名(_) 2.表ID字段名取名有2种方式 (1)ID (2)TableName + ID 例如:user表 则取名为 id 或者 userid 因为没有用xml来映射表结构确定哪一个...
欢迎大家指正 -_- 虚心求教 代码层次: bean-->dao-->service-->action 技术概述:1.继承 继承是利用现有的类创建新类的过程,现有的类称作基类(或父类),创建的新类称作派生类(子类)。继承其实就是自动地...