1

テーブル名と各列の値に関する情報を持つオブジェクトからデータベースに挿入する必要があるという要件があります。Hibernate でこれを実装する最善の方法について提案をお願いします。

Java クラス

public class InsertDataDetails {
  public String tableName;
  public List ColumnDetails> columnDetails;
}

public class ColumnDetails {
  public String columnName;
  public String columnValue;
}

現在ネイティブクエリを作成し、Session.executeクエリで実行しようと考えています。ただし、DTO クラスと休止機能を使用できるより良い設計を探しています。

4

2 に答える 2

1

あなたの質問はSpringについて言及していませんが、 Spring Dataプロジェクトを呼び出す価値があると思います.

これにより、インターフェイスを宣言する以外の実装を必要とせずに、永続化のための非常に強力なリポジトリが提供されます。

例えば:

 public interface UserRepository extends JpaRepository<User,Long> {}

User次のようなメソッドを使用して、sに対して完全に機能する DAO のようなオブジェクトを提供します。

List<User> findAll();
User findOne(Long id);
User save(User entity);

ただし、これを使用するには、@Duffymo のアドバイスに従い、永続性ではなく、オブジェクトが表すオブジェクトを中心にクラスをモデル化する必要があります。

于 2012-11-25T21:32:54.600 に答える
0

これらの提案はすべて、リレーショナル中心で単純すぎます。このアプローチを放棄することをお勧めします。

永続性ではなく、解決しようとしている問題の観点からオブジェクトについて考える必要があります。Hibernate を使用する場合、問題の OO 表現をリレーショナル スキーマにマッピングできます。

また、Martin Fowler のPatterns of Enterprise Application Architectureを読んで、永続性の問題がオブジェクトの観点から一般的にどのように解決されるかを確認することをお勧めします。

データ アクセス オブジェクトの Google。以下は、Hibernate で簡単に実装して拡張できる単純な一般的なものです。

package persistence;

public interface GenericDao<K, V> {
    V find(K id);
    List<V> find();
    K insert(V value);
    void update(V value);
    void delete(V value);
}

オブジェクトに関する永続性は、可能な限り何度も解決されてきました。あなたが提案したことは、最先端技術に対する意味のある改善を表すものではありません。

于 2012-11-25T20:40:54.103 に答える