2016-03-21 5 views
0

私はすでにデータベースに作成されたテーブルを持っています。Javaでテーブル構造をハードコードしていないORMはありますか?

I.e.データベースが最初です。

データベース構造を変更することができます。

私はこの構造体のORMフィールドを自分自身に書き換えたくありません。私は、HibernateやJPAツールのようなツールを使ってマッピングを再生成したくありません。

I.e.実行時にデータベースリフレクションを行う必要があります。

この場合、Spring Data JPA、Hibernate、jOOQなどのORMライブラリのメリットはありますか?

私はまだ

public void set(String fieldName, Object fieldValue); 

これは、例えば、Apache's DynaBeanで実装されているような

public Object get(String fieldName); 

とセッターのようないくつかのゲッターを好むだろう。

同時に、Active Record、つまりオブジェクトインスタンスのデータベースレコードを表示したいと考えています。

これは可能ですか?

+0

http://www.jooq.org/doc/latest/manual/getting-started/use-cases/jooq-as-a-standalone-sql-builder

create.select(field("BOOK.TITLE"), field("AUTHOR.FIRST_NAME"), field("AUTHOR.LAST_NAME")) .from(table("BOOK")) .join(table("AUTHOR")) .on(field("BOOK.AUTHOR_ID").equal(field("AUTHOR.ID"))) .where(field("BOOK.PUBLISHED_IN").equal(1948)) .fetch(); 

結果の記録は、その後Stringフォームで列名を使用して操作することができます:「プレーンSQL」テーブルとカラムでjOOQ使用するための例はここに手動で見ることができます「Javaでテーブル構造をハードコーディングしない」とはどういう意味ですか?注釈を使用したくないですか? –

+0

オプションです。私が望むなら、私は財産を宣言し、それに注釈をつけるでしょう。しかし、そうでなければ、私は動的な特性を持つことができるはずです。データベースから読み取られたレコードには、動的getterでアクセス可能なすべてのフィールドが含まれている必要があります。 – Dims

+0

"動的プロパティ"、 "動的getters"?レコードに標準のPOJOクラスを使用しませんか? –

答えて

0

エンティティを手動で作成する代わりに、JPAツールを使用してeclipseでデータベーステーブルからエンティティを生成する方法があります。

その後、これらのエンティティクラスをスプリングデータに使用することもできます。

link eclipseヘルプドキュメントを参照してください。

0

あなたは異なるORMのコンテキストで回答を探していたので、私はjOOQの観点から回答します。 jOOQはテーブル/カラム用に生成されたコードで最も効果的ですが、これはオプションです。

Object value = record.getValue("TITLE"); 
関連する問題