I had some experience working with Oracle Toplink i am planning to migrate all my stuff to Hiberbate I dont how it is going to be , but i want to know if they Both the ORM technoligies are similar or completely different has any one done this before ?
Originally posted by Mike Keith: They are both ORM products that provide similar features. Why would you want to migrate, though? I usually see people migrating the other way so I can't tell you much ;-)
Do you turn the other way when someone goes the other direction?
I have done this. Although I didn't so much port form TopLink to Hibernate as replace TopLink with Hibernate.
In my case I inherited an awful mess of a project that used TopLink. The database, TopLink files, and Java classes had all been created from a code generator that made for some real ugliness. I was already very familiar with Hibernate and knew it was much, much simpler and better that what I was dealing with here. This is not an shot at TopLink - I'm not sure if what I inherited was such a mess due to TopLink or maybe just the way the code generator worked or maybe the original programmers didn't use the code generator properly.
Anyway, after dealing with the mess for a few weeks I blew away the TopLink stuff completely, and created Hibernate files by hand. It didn't take that long and things worked much better. I also was able to get rid of ValueObject (or something close to that) interfaces that some of the generated Java classes used in order to make TopLink happy. My POJOs became true POJOs instead of almost POJOs.
In my case I knew Hibernate reasonably well (and didn't know TopLink at all) so my learning curve was probably less than yours, but it really wasn't that difficult. Basically the same as starting with no ORM layer since I didn't really port.
I know Debbie already pointed this out, but it sounds like the programmer was at fault and not TopLink. Since both Toplink and Hibernate implement JPA, and you code to the JPA implementation the code should actually look pretty much Identical, if not identical. At least that is what specs are for, so your code doesn't have to change if the underneath implementation vendor is changed.