2009-10-27 13 views
8

Abbiamo un progetto che utilizza JPA/Hibernate sul lato server, le classi di entità mappate si trovano nel proprio Progetto di libreria e utilizzano Annotazioni per essere associate al database.Annotazioni JPA in Android

voglio usare queste classi in un Android-Project -

Esiste un modo di ignorare le annotazioni all'interno di Android, di utilizzare queste classi come standard, POJO?

risposta

6

Il compilatore non si preoccuperà se si dispone del jar con le classi di annotazione JPA nel classpath. E se un sistema di strumentazione runtime (come Hibernate) non è presente, le annotazioni sono solo informazioni extra che sono lì ma non usate. L'unico problema è assicurare l'inclusione del jar JPA nella tua distribuzione.

+3

E questo potrebbe essere un problema. Non voglio davvero raggruppare tutti i JAR in letargo nel progetto Android. – dasmaze

+0

Se non è possibile raggruppare le classi richieste, allora l'unica soluzione che mi viene in mente sta usando un caricatore di classe personalizzata che mette a nudo le annotazioni dal bytecode. È un compito non banale ma fattibile. – alphazero

+0

p.s. La trasformazione bytecode non deve necessariamente avvenire sul carico. L'altra opzione consiste nell'eseguire un processo sulle librerie del server e sanitarle per Android generando un nuovo set di classfile. – alphazero

5

Le annotazioni attuali JPA sono parte di Java SE 6, vanno in letargo. Quindi non è necessario avere il JAR Hibernate per poter usare le classi annotate JPA. Tutto ciò che serve è la classi/interfacce che dichiarano le annotazioni vostro fa riferimento, se lo può permettere il barattolo pieno api APP è di circa 50k.

+0

Non è 'Java EE 6'? –

0

Ho appena incontrato questo problema e dato che io uso Maven per costruire il mio progetto androide ho aggiunto questa dipendenza

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