サーバー側でJPA/Hibernate
というプロジェクトを使用しています。マッピングされたエンティティクラスは独自のライブラリプロジェクトにあり、注釈を使用してデータベースにマッピングされます。JPAのAndroidでの注釈
私はアンドロイド・プロジェクトでこれらのクラスを使用したい -
は標準のPOJOとしてこれらのクラスを使用するには、Androidの内の注釈を無視する方法はありますか?
サーバー側でJPA/Hibernate
というプロジェクトを使用しています。マッピングされたエンティティクラスは独自のライブラリプロジェクトにあり、注釈を使用してデータベースにマッピングされます。JPAのAndroidでの注釈
私はアンドロイド・プロジェクトでこれらのクラスを使用したい -
は標準のPOJOとしてこれらのクラスを使用するには、Androidの内の注釈を無視する方法はありますか?
コンパイラは、クラスパスにJPAアノテーションクラスを持つjarファイルがあれば気にしません。また、ランタイム・インスツルメンテーション・システム(Hibernateなど)が存在しない場合、注釈はそこにあるが使用されない単なる追加情報です。唯一の問題は、配布物にJPA jarを含めることです。
実際のJPAアノテーションは、休止状態ではなくJava SE 6の一部です。したがって、JPAアノテーション付きクラスを使用できるようにするために、Hibernate JARを持つ必要はありません。 あなたが必要とするのは、参照する注釈を宣言するクラス/インタフェースです。JPA APIのjarファイル全体が約50kです。
「Java EE 6」ではないですか? –
は、私はこの問題に走ったと私はアンドロイドのプロジェクトを構築するためのMavenを使用しているため、私は、この依存関係
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
を追加し、それが問題かもしれません。私は本当にすべての休止状態のJARをAndroid-Projectにバンドルしたくありません。 – dasmaze
必要なクラスをバンドルできない場合は、私が考えることができる唯一の解決策は、バイトコードから注釈を取り除くカスタムクラスローダーを使用することです。それは自明ではありませんが、実行可能です。 – alphazero
p.s.バイトコード変換は、ロード時に必ずしも実行する必要はありません。もう1つの選択肢は、サーバーライブラリ上でプロセスを実行し、新しいクラスファイルセットを生成してアンドロイド用にそれらをサニタイズすることです。 – alphazero