Thursday, October 12, 2006

Hyperjaxb progress

A lot has been done last weeks.

I've release Hyperjaxb2 0.6.0 which became quite mature. I'm looking to make an 1.0.0 release in two weeks. Actually, the only thing to be done is the documentation. It's a bit obsolete so I have to refresh few sections. Promotial material. Nice presentations. Just to let people know.

Other than that, Hyperjaxb2 is very nice right now. I've added sample projects (for Ant and Maven) - make it really easy to use.

I've also worked on Hyperjaxb3. Well, this will be a killer. "Unschlagbar" as germans say.
It seems like I'll have three main parts there: Hibernate, EJB3 and JDO.

Hibernate part is just Hyperjaxb2 ported onto JAXB2. It generates *.hbm.xml and *.cfg.xml, that's it.
This part work already. I've just deployed four test scenarios (out of 24) and they work and I see no reason the other 20 woul fail. I just have to deploy them. So this is ready to be released quite soon.

As for EJB3 - I've been experimenting and achieve some progress.
My first task was to write a roundtrip test case. I had to learn how to use the whole thing, how to package and so on. It's far from being trivial, and I was finally glad when i could roundtrip my XML in the frame of a unit test.

After that I wrote a small ejb3 add-on for JAXB2. It adds EJB3 and Hibernate annotations to the classes generated by JAXB. And, finally, the "po" examle worked! Of course it's just the beginning, the test scenario is trivial, but it works.

However I'm a bit upset with EJB3 spec. I think it's simply immature.
What I'm missing is:

  • Support for collections of simple type. Without that you can't persist things like List. And it's not unusual to have that in classes.

  • Custom types. EJB3 supports only a iminimal set of types. Just when you're a little bit above usual with the types you have in your classes, you're stuck. You can't persist things like URL or XMLGregorianCalendar and so on.

  • No custom accessors. Just field or property.



So the problem with EJB3 is that I can't use just EJB3 with JAXB. I need more and this means I have to become vendor-specific. I can surely imagine a vendor-independent solution but with a lot of additional code to cover all these "missing" cases. I think I'll start with Hibernate Entity Manager then TopLink Essentials then Kodo JDO...

Today I've also made some experiments with JDO. I've taken a JPOX sample and made it work with Maven2. JDO seems to be pretty cool, I really liked that I could make a unit test run in less that 15 minutes. I liked so much that I'll surely support this in Hyperjaxb3. I even think I'll make the po test scenario run on JDO before I go on with further EJB3 implementations.

3 Comments:

Blogger Scott Allan said...

I created primitive JAXB2 ejb3 plugin a while ago but I am interested in trying out your project. Does it create ejbs yet? I looked at the test/po sample and couldn't tell how it would know the difference between a regular java class and an ejb.

11:28 AM  
Blogger Scott Allan said...

This comment has been removed by a blog administrator.

11:28 AM  
Blogger jason dwyer said...

hi there,

i'm new to hyperjaxb, and have found it after a bit of research coming in to a project already using jaxb (2.x), with a goal of persisting jaxb generated objects to database vi hibernate.

voila! hyperjaxb3 is for me!

anyway, it looks like the last activity is a couple of months old now, just wondering what the project status is?

cheers,

jd

7:29 PM  

Post a Comment

<< Home