私は、インターネット上で一般的な 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
今、私は1つのDAOしか使用できません(オブジェクトのキャスト付き!)
また新クラス登場?問題なし:
NewClassApperedAgain newClassAppeared = (NewClassApperedAgain) FullGenericDao.getItemById(20, NewClassApperedAgain.class);
次の 2 つの質問が思い浮かびます。
1)「完全に汎用」になって実際にそのようなDAOを作成することさえ可能ですか?つまり、dao のすべてのメソッドに className を渡して、必要なキャストを実行しない理由がわかりません。保存 (オブジェクト、クラス名); 削除 (オブジェクト、クラス名); 等..
2) そのような練習の短所 (あると確信しています) は何ですか?
ありがとう!