2009-10-27 10 views
8

Wir haben ein Projekt, das JPA/Hibernate auf der Serverseite verwendet, die zugeordneten Entitätsklassen sind in einem eigenen Bibliotheksprojekt und verwenden Annotationen, die der Datenbank zugeordnet werden.JPA-Anmerkungen in Android

ich diese Klassen in einem Android-Projekt verwenden möchten -

Gibt es eine Möglichkeit die Anmerkungen im Android, zu ignorieren diese Klassen als Standard POJOs zu benutzen?

Antwort

6

Der Compiler ist nicht wichtig, solange Sie das Jar mit den JPA-Annotation-Klassen in Ihrem Klassenpfad haben. Wenn ein Laufzeit-Instrumentierungssystem (z. B. Hibernate) nicht vorhanden ist, handelt es sich bei den Anmerkungen nur um zusätzliche Informationen, die vorhanden sind, aber nicht verwendet werden. Das einzige Problem besteht darin, sicherzustellen, dass das JPA-Jar in Ihre Distribution aufgenommen wird.

+3

Und das könnte ein Problem sein. Ich möchte nicht wirklich alle Hibernate-JARs in das Android-Projekt einbinden. – dasmaze

+0

Wenn Sie die erforderlichen Klassen nicht bündeln können, ist die einzige Lösung, die ich mir vorstellen kann, die Verwendung eines benutzerdefinierten Klassenladeprogramms, das die Anmerkungen aus dem Bytecode entfernt. Es ist eine nicht-triviale Aufgabe, aber machbar. – alphazero

+0

p.s. Die Bytecode-Transformation muss nicht unbedingt beim Laden erfolgen. Die andere Option besteht darin, einen Prozess über die Serverbibliotheken auszuführen und sie für Android zu bereinigen, indem eine neue Gruppe von Klassendateien generiert wird. – alphazero

5

Die tatsächlichen JPA Anmerkungen Teil von Java SE 6, Ruhezustand nicht. Sie müssen also die Hibernate-JAR nicht verwenden, um JPA-Klassen mit Annotationen verwenden zu können. Alles, was Sie brauchen, ist die Klassen/Schnittstellen, die die Anmerkungen erklären, die Sie referenzieren, wenn Sie es sich leisten können, ist das volle JPA-API-Glas ungefähr 50k.

+0

Ist es nicht Java EE 6? –

0

Ich lief in dieses Problem und da ich Maven für mein Android-Projekt Aufbau habe ich diese Abhängigkeit

<dependency> 
    <groupId>org.hibernate.javax.persistence</groupId> 
    <artifactId>hibernate-jpa-2.0-api</artifactId> 
    <version>1.0.1.Final</version> 
    </dependency> 
Verwandte Themen