現時点では、私はMVCに基づく小さなWebアプリケーションの作業を開始します。 DAOパターンを使用してモデルレイアウト用のメインクラスを実装しようとしました。だから、Java Generics。私の場合、どんなメリットがありますか?
、私は(例えば)2つのエンティティクラスの作成すべての最初:クラスのことを、私は見、次のステップに
package myProject.model.entity;
import java.io.Serializable;
public class Book implements Serializable {
private static final long serialVersionUID = 7177014660621405534L;
private long id;
private String title;
private String description;
public Book() {
}
// getter and setter methods here
}
:著者や書籍:
package myProject.model.entity;
import java.io.Serializable;
public class Author implements Serializable {
private static final long serialVersionUID = 7177014660621405534L;
private long id;
private String firstName;
private String lastName;
public Author() {
}
// getter and setter methods here
}
とBookクラスを本と著者はともにgetId()
とsetId()
です。 ので、私は私のエンティティクラスのインタフェースPersistent
を作成します。
package myProject.model.entity;
public interface Persistent {
public long getId();
public void setId(long id);
}
だから、最初の私の質問:
それはmodel
パッケージの正しい実装ですか?
次の手順では、パッケージdao
のクラスの実装を開始します。
package myProject.model.dao;
import java.util.List;
import myProject.model.entity.Persistent;
public interface Dao {
Persistent get(long id);
void save(Persistent persistent);
void delete(long id);
}
次のステップ:ベースDAO interface Dao
を拡張インターフェースAuthorDao
とBookDao
を作成しかし、両方のインタフェース:AuthorDaoとBookDao - 現時点で空。 あなたはどう思いますか?それは普通ですが、インターフェースは空ですか?それは私の2番目の質問です。
最後のステップでは、パッケージmodel.dao.hibernate
を作成し、AuthorDaoHibernateクラスとBookDaoHibernateクラスにパッケージに追加します。両方のクラスがAuthorDaoとBookDaoインターフェイスを実装します。
そして今、私の主な質問:オブジェクトと
私のインターフェースDao
仕事はPersistent
を入力し、私はジェネリックを使用してはいけません。そしてすべての大丈夫といい。
何を考えているん - I再作業Dao
インターフェースウィットジェネリック場合、私は、持っているものの利点:
package myProject.model.dao;
import java.util.List;
import myProject.model.entity.Persistent;
public interface Dao<Persistent> {
T get(long id);
List<T> getAll();
void save(T persistent);
void delete(long id);
}
マイダオクラスは永続エンティティでのみ動作します - いいえ、他のオブジェクトタイプを...
私の場合、Genericsを使用する理由はありますか?
BaseEntity - 抽象的であるか、または非必須である必要がありますか? – user471011
@ user471011いいえ、抽象である必要はありません。エンティティとして注釈されておらず、単純な 'BaseEntity'インスタンスを永続化することはできません。 'BaseEntity'と' BaseDAO'抽象化するのは意味がありますが、簡潔にするためには省略しました。 – Thomas
詳細についてこれについて議論できますか? via mailまたはskype経由ですか?あなたにとっては難しいでしょうか? – user471011