我在互联网上看到了很多通用 dao 的用法。你一定会喜欢它:
public interface GenericDao <T, PK extends Serializable> {}
public class GenericDaoHibernateImpl <T, PK extends Serializable>
implements GenericDao<T, PK>
新班级出现了?没问题:
public interface NewClassDao extends GenericDao<NewClass, Long>
我们都准备好了。
现在,如果我去“全通用”并做类似的事情有多糟糕:
public interface FullGenericDao
public class FullGenericDaoHibernateImpl
现在我只能使用一个 DAO(带有强制转换的对象!)
新班级又出现了?没问题:
NewClassApperedAgain newClassAppeared = (NewClassApperedAgain) FullGenericDao.getItemById(20, NewClassApperedAgain.class);
想到两个问题:
1) 是否有可能“完全通用”并实际创建这样的 DAO?我的意思是我不明白为什么不为 dao 的每个方法传递 className 而只是进行必要的强制转换?保存(对象,类名);删除(对象,类名);ETC..
2)这种做法的缺点(我敢肯定有)是什么?
谢谢!