9

以前に他の言語で同様の永続化ライブラリを使用したことがありますが、Hibernate の経験はほとんどありません。テキスト構成ファイルで (MVC の意味で) 「モデル」を定義し、データベース テーブルを自動的に生成し、(理想的には) データベース バックエンドに依存しない方法を必要とする Java プロジェクトに取り組んでいます。簡単なグーグル検索からわかる限り、Hibernate は広く使用されている唯一のバックエンドに依存しない Java データベース ライブラリです。モデル システムと複数の DB バックエンドの間に独自の互換性レイヤーを作成することもできますが、これは可能であれば避けたいデバッグ作業です。

私の質問は: Hibernate を使用して、その構造を説明する構成オブジェクトを含む HashMap など、注釈付きの Java クラス ファイル以外の方法で構造が表されるデータを格納できますか? そうでない場合、この機能を提供できる比較的安定した Java データベース ライブラリは他にありますか?

編集:これは、私が達成しようとしていることのより明確な説明です:

私はデータモデリングライブラリを書いています。ライブラリの特定のメソッドが呼び出され、(テキスト ファイルから読み込まれた) 構成オブジェクトが渡されると、新しい「モデル」が作成され、必要に応じてそのモデルのデータベース テーブルが作成されます。ライブラリは、モデルのフィールドを含む HashMaps を返す必要があるこのモデルのアイテムを照会できます。また、HashMap の構造が構成ファイルと一致していれば、HashMap をデータベースに保存できるようにする必要があります。これらのモデルは、実際にコンパイルされた Java クラスで表す必要はありません。

4

3 に答える 3

4

JPA が提供する @MapKey アノテーションを使用できると思います (Hibernate の @MapKey アノテーションではなく、かなり異なります!)。

@javax.persistence.OneToMany(cascade = CascadeType.ALL)
@javax.persistence.MapKey(name = "name")
private Map<String, Configuration> configurationMap = new HashMap<String, Configuration>();
于 2012-12-19T06:26:00.397 に答える
1

Hibernate で Map を @Entity として使用できるとは思えませんが、map フィールドを含むカスタム クラスを使用できるようになります。

@Entity
public class Customer {
    @Id @GeneratedValue public Integer getId() { return id; }
    public void setId(Integer id) { this.id = id; }
    private Integer id;

    @OneToMany @JoinTable(name="Cust_Order")
    @MapKeyColumn(name"orders_number")
    public Map<String,Order> getOrders() { return orders; }
    public void setOrders(Map<String,Order> orders) { this.orders = orders; }
    private Map<String,Order> orders;
}

(Hibernate docs の例)

さらに、注釈を使用する必要はありません (回避しようとしている場合): Hibernate の関係は xml ファイルを介して記述でき、必要な Java pojo を自動的に生成できるユーティリティ (maven プラグインなど) があります。 xml。

モデルにはリレーショナル データベースが必要ですか? JSON で表現できる任意のオブジェクトを格納する Mongo のようなデータベースを検討することもできます。

于 2012-12-19T06:27:13.887 に答える
0

エンティティクラス(テーブルにリンクされたBean)なしで動作するように休止状態を構成できます。1.これにはxml構成を使用する必要があります。class使用の代わりに、使用entity-nameの代わりに。<property name="something"<property node="something"

  1. entiy-mode をマップとして hibernate セッションを作成します。

マップを使用して、データベースから情報を保存および取得できます。マップを使用しているため、2 方向のマッピングには問題があることを忘れないでください (これは 3.3 の時点であり、後のリリースで修正されたかどうかは不明です)。

于 2012-12-19T06:32:58.177 に答える