0

私は、インターネット上で一般的な 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) そのような練習の短所 (あると確信しています) は何ですか?

ありがとう!

4

1 に答える 1