In my company, we are using Oracle DB and Weblogic application server. So in the process to upgrade or switch to new ORM, we shortlisted two options - Hibernate and Eclip开发者_开发百科seLink.
I gathered following summary regarding both ORMs -
Hibernate:
- When you need to train people, like we are going to do next week – most of the companies have Hibernate experts.
- When you hire new developers, most of them come with specific Hibernate experience.
- When you need to consult with experts, both in the internet or consultants, you have LOTS of options. Endless forums and communities all regarding Hibernate.
- Hibernate is an open source which has a huge community. This means that it will be improved all the time and will push the ORM market forward.
- Hibernate is an open source which means you have the code to handle, and in case needed, fit it to your needs.
- There are lots of plugins to Hibernate, such as validations tool, audit tools, etc. These becomes standard as well and dismiss you from impl. things yourself.
- One most important thing with ORM tool, is to configure it according to your application’s needs. Usually the default setting doesn’t fit to your needs. For that sake, when the market has a huge experience with the tool’s configuration, and lots of experts (see point 1 and 3) – most of chances you will find similar cases and lots of knowledge about how to configure the tool and thus – your application.
EclipseLink:
- Fully supported by Oracle. Hibernate no. In case of pb, it could be cumbersome to prove that it is a pure Weblogic one. Concretely, we will have to prove it (waste of time and complexity).
- Eclipse link is developed by Oracle and the preferred ORM in the Weblogic /Oracle DB world.
- Even if at a certain time EclipseLink was a bit late compared to Hibernate (feature), EclipseLink evolved very fast and we can consider now that they close the gap.
- No additional fee as soon as you have Weblogic license. You will need to pays additional fee if you want some professional support on Hibernate.
- We are currently relying on Hibernate for our legacy offer and are facing pb in second level cache (JGroups). Today, we are riding off this part!. Consequences are limitation in clustering approach (perf)
- On EclipseLink side we do succeed to manage first and second level cache in a clustering approach.
- Indeed Hibernate is open source, so you can imagine handling it. In reality, the code is so complex that it is nearly impossible to modify it. Moreover as it is LGPL, you need to feedback all the modified sources to the community systematically.
- All tests performed by Oracle concerning Weblogic are using EclipseLink. Moreover, Oracle says that some specific optimizations are done to manage Oracle DB.
- Hibernate comes from JBoss community.
Right now we are preferring Hibernate but there are concerns/reasons like EclipseLink developed by Oracle and preferred ORM in Webogic/ Oracle DB world (compatibility of ORM with DB and App. server), support comparison with both ORM, which are preventing to finalize the decision.
Please help me with you views and opinions and share you experience with us as which one is better and why so that we can make a perfect decision.
If you want you can also reply to me @ yogesh.golande@gmail.com.
Thanks.
Disclosure: I work for Red Hat, the company that supports Hibernate development.
My short answer: use whatever JPA provider your Application Server bundles. The logic is that your App Server was tested with that JPA provider in mind.
Long answer: There are some things from your answer which are not exactly correct. So, allow me to correct them, as well as to provide some comments for other items.
"Fully supported by Oracle. Hibernate no. In case of pb, it could be cumbersome to prove that it is a pure Weblogic one. Concretely, we will have to prove it (waste of time and complexity)."
I'd say that Red Hat support is very helpful, and they won't try to say "it's a weblogic problem" (unless it really is). The support guys are not trained to first dismiss your claim. If it's indeed a problem in Hibernate, they'll quickly find this out and get it solved.
We are currently relying on Hibernate for our legacy offer and are facing pb in second level cache (JGroups). Today, we are riding off this part!. Consequences are limitation in clustering approach (perf)
If you have a JBoss Subscription (I believe that any subscription provides entitlement for Hibernate support), you could ask Red Hat about this. But I'll say that Hibernate and JBoss Cache were well tested to work together, and that it indeed works in clustered environments. But if it's a limitation in JBoss Cache, you can use another one (Infinispan, for instance). Not sure it's currently supported, but you can give it a try.
Indeed Hibernate is open source, so you can imagine handling it. In reality, the code is so complex that it is nearly impossible to modify it. Moreover as it is LGPL, you need to feedback all the modified sources to the community systematically.
Hibernate is indeed complex, but most of it is not that complex. Also, IANAL, but I believe that you need to feedback the modified sources only if you redistribute your "new" binary.
Hibernate comes from JBoss community.
I don't understand why this is a point for EclipseLink, but note that JBoss is part of Red Hat. While the community is independent (like Fedora), Red Hat funds it's development.
Defently EclipseLinks has the best support for ORacle and it's the most suitable ORM for Oracle/WebLogic usage. As you said Fully supported by Oracle and It has a lot of pretty useful features for working with Oracle, f.e. sql hints and etc. See more here http://simpletoad.blogspot.com/2012/11/what-u-must-know-about-eclipselink-orm.html#links
精彩评论