[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.rt.eclipselink] orm.xml vs Annotations

I am in the process or doing some refactoring of one of my services libraries (representing the object model of a stamp collection). In the past I had annotated the classes with JPA annotations, and this time I have chosen to go with orm.xml for my persistence descriptors.

What is the communities opinion on the use of orm.xml vs. annotations?

One downside I saw (I had some unit tests fail) was that since my entity's didn't have a @Entity annotation, my utility method to extract the identity of an object (if it was a JPA entity) failed since the case of ".isAnnotationPresent(Entity.class)" no longer existed.

Of coures the benefit of an orm.xml is I can reference eclipselink classes without having a compile tme dependency on eclipselink (ie. just the javax_persistence_1.0.0.jar). It is also "one stop shopping" to see the relationships. While most of the annotations are javax.persistence but some functionality might be provider specific (I know when I used to use Hibernate I had some old ForeignKey annotations). Another benefit of orm.xml (as I see it) is I can add query hints directly to the NamedQueries rather than doing it programmatically by provider at runtime. Again the lack of compile dependency.

Finally, I have to admit getting orm.xml working without Dali would be a royal pain. Whereas using annotations was easy (I have it is non-dali enabled project today). One Dali comment is that it doesn't seem to work well with one or the other. ie. when you view the java class it wants to add annotations, when you are in orm.xml it deals with XML. It'd be nice if you state that bean X is to be managed by orm.xml to be able to manage the JPA properties from the java class injecting the info into orm.xml.

Looking forward to reading everyone's opinions.