Hibernate 3.5.x JPA 2.0

Architectures Logicielles Java(2)

Modérateurs : graffiop, jmdouin, agoncal, mlebihan

Edo
Messages : 29
Inscription : 18 oct. 2009 20:07

Hibernate 3.5.x JPA 2.0

Message par Edo » 24 juin 2010 11:32

Salut à tous,

Pour info, si vous voulez utilisez Hibernate comme provider JPA 2.0 sans Jboss AS 6, et que vous voulez utilisez les mappings xml (orm.xml ) en version 2.0 notamment pour les collections d'éléments.

Code : Tout sélectionner

<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
             version="2.0">
ben c'est mort! enfin non y a une astuce.



Il faut modifier dans le sous projet entity-manager le fichier org.hibernate.ejb.Ejb3Configuration.java à la ligne 705. Il faut remplacer orm_1_0.xsd par orm_2_0.xsd

Code : Tout sélectionner

saxReader.setProperty( "http://apache.org/xml/properties/schema/external-schemaLocation",
					"http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd");
sinon bon courage pour la recompilation avec Maven, il faut déclarer les plugins utilisé par le projet sinon c'est galère.

A priori c'à fonctionne pour moi.

@+
Edo...

fabszn
Messages : 23
Inscription : 14 oct. 2005 10:22
Contact :

Re: Hibernate 3.5.x JPA 2.0

Message par fabszn » 24 août 2010 17:53

Hello,

Pour rester dans les standards JPA, il faudrait peut être utiliser plutôt le fichier persistence.xml.

Sinon, l'utilisation de JPA n'a pas de sens, je pense

Cordialement,

Edo
Messages : 29
Inscription : 18 oct. 2009 20:07

Re: Hibernate 3.5.x JPA 2.0

Message par Edo » 26 août 2010 18:39

Salut,

pesistence.xml et orm.xml (mapping-file) font tout les deux partie du standard JPA, c'est le rôle des providers (Hibernate/toplink & co) de respecter le standard.
Hors JPA 2.0 comme JPA 1.0 déclare comme étant "standard" la possibilité de déclarer les mappings par annotations et/ou par déclarations xml.

Le fichier orm.xml est très utile pour mapper une classe dont tu n'as pas les sources par exemple (@Embedded). Il permet aussi de surcharger les annotations en fonction de la base de donnée. Même si JPA simplifie grandement le dev, et que ton appli est compatible Mysql et Oracle par exemple, il est fortement recommandé d'optimiser certains points de la config. (auto increment pour MySQL et sequence pour Oracle)

Comment mapper avec des annotations 2 persistence_unit qui utilises les même classes et dans la même base de données mais avec des tables différentes ex :

class User
pu1 -> table "users" avec annotations
pu2 -> table "user2" avec surcharge via orm.xml

C'est un peu "tricky" mais il y en à qui ont une base de données "Legacy". Et comme JPA 1 ou 2 ne permet pas de mapper une même classe 2 fois dans la même PU, c'est mort... Hibernate le fait, mais ce n'est pas dans le standard JPA, enfin pas encore ;-).

@+
Edo...

fabszn
Messages : 23
Inscription : 14 oct. 2005 10:22
Contact :

Re: Hibernate 3.5.x JPA 2.0

Message par fabszn » 26 août 2010 19:59

Hello,

Merci pour ces précisions... Je ne savais pas que orm.xml faisait partie de la spec JPA..

Et le point sur la surcharge est très intéressant!


@++
fabszn

Répondre