2009-10-27 9 views
8

サーバー側でJPA/Hibernateというプロジェクトを使用しています。マッピングされたエンティティクラスは独自のライブラリプロジェクトにあり、注釈を使用してデータベースにマッピングされます。JPAのAndroidでの注釈

私はアンドロイド・プロジェクトでこれらのクラスを使用したい -

は標準のPOJOとしてこれらのクラスを使用するには、Androidの内の注釈を無視する方法はありますか?

答えて

6

コンパイラは、クラスパスにJPAアノテーションクラスを持つjarファイルがあれば気にしません。また、ランタイム・インスツルメンテーション・システム(Hibernateなど)が存在しない場合、注釈はそこにあるが使用されない単なる追加情報です。唯一の問題は、配布物にJPA jarを含めることです。

+3

を追加し、それが問題かもしれません。私は本当にすべての休止状態のJARをAndroid-Projectにバンドルしたくありません。 – dasmaze

+0

必要なクラスをバンドルできない場合は、私が考えることができる唯一の解決策は、バイトコードから注釈を取り除くカスタムクラスローダーを使用することです。それは自明ではありませんが、実行可能です。 – alphazero

+0

p.s.バイトコード変換は、ロード時に必ずしも実行する必要はありません。もう1つの選択肢は、サーバーライブラリ上でプロセスを実行し、新しいクラスファイルセットを生成してアンドロイド用にそれらをサニタイズすることです。 – alphazero

5

実際のJPAアノテーションは、休止状態ではなくJava SE 6の一部です。したがって、JPAアノテーション付きクラスを使用できるようにするために、Hibernate JARを持つ必要はありません。 あなたが必要とするのは、参照する注釈を宣言するクラス/インタフェースです。JPA APIのjarファイル全体が約50kです。

+0

「Java EE 6」ではないですか? –

0

は、私はこの問題に走ったと私はアンドロイドのプロジェクトを構築するためのMavenを使用しているため、私は、この依存関係

<dependency> 
    <groupId>org.hibernate.javax.persistence</groupId> 
    <artifactId>hibernate-jpa-2.0-api</artifactId> 
    <version>1.0.1.Final</version> 
    </dependency> 
関連する問題