2012-03-18 5 views
0

私は試して要約します。 (実際には関係ありません)ORMのHibernateフレームワークを使用してJava継承設計のアイデア - アドバイスが必要です

  • ここ

が私の考えです:私が欲しい

  • 純粋/フィールドに設定し、取得を表す含むすべての私のモデルクラス(私のテーブル内)を空の親クラスから継承する

  • 多くのmethを含むレコードの検索/保存用の単一のデータベースクラスこれらのためのods、その方法。コレクションを返すメソッドの場合、それらは親オブジェクトのタイプを返し、検索時に正しいクラス型にキャストされる

小さな例

親クラス(親オブジェクト)

public class DataModel { 

} 

子クラス

public class A extends DataModel { 

    private String name; 
    private String message; 


    public A (String name) { 
     this.name = name; 
    } 

    public String getMessage() { 
     return message; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

} 
私はA.に似た12クラスの合計を持っているつもりです

データベースクラス

public class Database { 

    public DataModel returnSingleRecord() { 



//eventually have an enum as a param to determine what type of child object of DataModel they would like returned 


     //data retrieval here etc 
     A a = new A("ashley"); 
     return a; 

    } 

} 

使用例

public class MainController { 


    public static void main(String[] args) { 

     Database r = new Database(); 


     A a = (A) r.returnSingleRecord(); 

     System.out.println(a.getName()); 

    } 
} 

は最終的に私の計画は、列挙型クラスを構築することで、コレクションを返す各メソッドはEnum値を受け入れます。メソッド内のswitchステートメントは、A、B、Cなど返されるオブジェクトを決定します。

これは良い考えですか?正直なところ、冗長コードを大幅に削減し、このプロジェクトではすべてのデータベースメソッドを10未満にするという良い方法のようです。ちょうど答えが十分であるように思えるはいは、あまりにも真実であるように思えます:)。

EDIT:データをストレージメソッドに渡す場合は、DataModelを型とinstanceofとして使用してクラスの型を判断する必要があります。これはメソッドで行うことができます。アイディア。

EDIT2:特定の情報を返すためには良いアイデアだと結論づけてください。日付の間に、データベースを拡張するいくつかのクラスが最適なオプションになります。

答えて

1

はい、これは良い考えだと思います。私たちは私のクラスの1つのデータベースを使って大きなプロジェクトをやっています。私たちのモデルにはトップクラスの親クラスがあります。これはid(GUID)、alreadyInDatabaseのブール値(saveオブジェクトがデータベース内のものと異なるかどうかを知るために、ブール値をtrueに設定します。これは非常に有用であることが証明されています。また、データベースに出入りするための、本当に便利で汎用的なデータアクセスオブジェクトをプログラミングしました。とにかく、あなたの計画は私にはうれしいです:)

関連する問題