我在互聯網上看到了通用dao的使用方法。 你一定要喜歡它:通用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的每個方法,只是做鑄造需求? save(object,className); delete(object,className);
2)這種做法有哪些缺點(我確定有)?
謝謝!