TopLink versus Hibernate?

Hello, everyone:
We're in the midst of deciding between Hibernate (which we
currently use) and TopLink (which looks very good).
I've checked Google, but I did not find a great deal of
useful information. Can anyone point me to a good link?
Thanks!
Regards,
Oswald

Hello, everyone:
We're in the midst of deciding between Hibernate (which we
currently use) and TopLink (which looks very good).
I've checked Google, but I did not find a great deal of
useful information. Can anyone point me to a good link?
Thanks!
Regards,
Oswald

Similar Messages

  • TopLink vs Hibernate... revisited... again :)

    Would it be possible to get a Toplink versus Hibernate (or other ORM frameworks) going here?
    It seems like the explosive adoption of Hibernate and the associated popularity contest in the industry has put some of us in a position where we're constantly trying to sell the-right-tool-for-the-right-job which, at least for me, seems to disqualify hibernate a lot of times, esp when scalable persistence is a requirement. It seems to be really difficult to convince folks that the popularity of hibernate doesnt mean it's by default the right option.
    I've seen at least two threads on theserverside.com about hibernate versus cayenne, and despite the amount of noise in the threads, there were a few folks making some decent points. The TopLink folks were very quiet on the threads, but I know they were reading :)
    So, anyone out there have any experience comparing TopLink and Hibernate? What do you all see as the shortcomings of each, esp from a technical architecture standpoint? Are GUI tools as overrated as Gavin claims? Where's annotation support for TopLink? Is TopLink overpriced? Is Hibernate's multi-tier non-integrated caching biting anyone on big projects where persistence needs to scale, or is integrated caching overrated? Is Hibernate3 really going to fix shortcomings that TopLink already addresses in current releases? What do you all think the Hibernate crew is doing right that the TopLink crew is doing wrong and vice versa? I'm not assuming any of these questions even merit answer but just interested in some objective discussion in a forum where TopLink guys might have a stronger voice.
    Take care!

    Well, I've only got a few minutes, but I could go on for hours.
    I'll start by saying that I've been doing ORM for longer than many people knew that you could. I had been a previous TOPLink user but went for about two years without having to do any ORM.
    Then, last year I started a new project for a client who insisted we use SqlServer and was hesitant to pay for any software unless it was absolutely necessary. (This is common these days, as the fact that there is so much free software out there encourages folks to try out the free stuff before paying for something that may or may not be better). Comparing the feature list of Hibernate to TOPLink and doing a little checking seemed to indicate that going with Hibernate would be a perfectly reasonable thing to do.
    I will state, uncategorically, that this was the worst technical decision I have ever made in my life... twenty-plus years of Software Application Developing, most of it with object-oriented languages (Smalltalk and Java).
    NOTE: I must couch that statement with the caveat that part of this was due to my naivete about the architectural assumptions I made about Hibernate before including it in my application. If I would have merely learned about Hibernate's architectural assumptions (though this was not easy due to their poor documentation) and allowed these assumptions to drive my development, it would not have been nearly as painful, just yucky. Also, if my objects were much simpler/flatter and I didn't need caching to speed things up, Hibernate could have worked just fine out of the box. Problem is, I had a complex system, needed caching, and Hibernate gave me nightmares as I tried to navigate through it.
    As a test-first developer, I don't care about the GUI tools, as I'm happy to write tests to verify I can store and retrieve objects, then write the mappings and find out if it passes. What I would like is the ability to allow two threads to read the same object and not have to bring two copies of the object into memory or read the database twice. Call me crazy, but it just seems like object identity is a useful thing... perhaps my twenty years of developing object-oriented software has skewed my reasoning and I need to think like folks who haven't been programming as long.
    Hibernate's poor documentation did make it clear that it did not want me to think this way, but it also suggested that, if I wanted to think this way, it could cache objects for me so it wouldn't hit the database twice. And, I'm sure it could have cached objects in some form, but not the form I wanted. Though I thought I followed the instructions on how to set up my cache, I found that reading the same object twice didn't always get the same (as in "==") object back.
    To try to figure out why not (or why other things that an experienced object-oriented software developer couldn't figure out by reading the documentation), I had to dive into the code. This felt like diving into a water source in hopes of finding some gems, but discovering that I was swimming in a sewer full of, well, stuff that you'd find in a sewer.
    Although Hibernate advertises itself as a framework, it is much more of a blackbox framework than a whitebox. Most of the methods and many of the classes are private or protected final. There are very few places to extend what's there. And there are virtually none that allow you to override their architectural assumptions.
    The biggest architectural assumption I found to be problematic was that application developers can't be trusted to know which objects they intended to read and which they intended to write. Therefore, Hibernate "protects" you from having two sessions refer to (that's right, refer to, not modify) a collection of objects.
    In the end, we ended up having to open up the source code and make some modifications in order to make our application run with reasonable performance. We had a lot of fairly deep objects (objects that contained objects that contained objects...) and the idea of not caching the ones that were not being modified across sessions just didn't cut it for us.
    Additionally, we've spent the last few months supporting the app that we finally got into production, and greater than 75% of our bug fixing time has been due to the fact that Hibernate actually reads in objects from several places and it is difficult to tap into THE place an object is read in... because there isn't one. It goes through all sorts of intermediate states and we found out that having one process that is reading objects while another is trying to write the same object can cause some unfortunate side effects, even if you put synchronization locks in the obvious places.
    We ended up with many person months of effort and a lot of special classes getting Hibernate to do what we wanted it to do, and had to open the source code (which will make it hard to ever upgrade to the next version).
    Just recently we started a new project (where Oracle was the corporate standard DB) and decided we'd try to use TOPLink. Having not used it for several years, I had hoped it was going to be much cleaner than Hibernate to hook into our persistence layer. It was a piece of cake. In a few days we were doing what took us months to do with Hibernate, and we didn't have to perform any unnatural acts to get there.
    I would recommend Hibernate to anyone who didn't know how to build a reasonably factored object-oriented system and didn't mind forcing their system architecture to fit Hibernate's architectural assumptions. But, if you think you might have reason to define your own architecture or modify Hibernate's default behavior, TOPLink is well worth the licensing fees. Not to mention the cost of your sanity.
    Is Hibernate really free? Only if you don't value your time. I also found that you can buy outrageously priced support from JBoss to make up for their poor documentation on their poorly architected ORM blackbox framework. The documentation for TOPLink is far superior, and the simplicity of doing simple customizations and tweaks is like night and day.

  • JPA: Toplink vs Hibernate

    I am using netbeans 5.5 and I want to use JPA. I am in favor of hibernate, but why does the netbeans has toplink being the default persistence library of JPA? What are the difference between toplink and hibernate if I'll be using JPA?
    By the way, I've seen an article "Using JPA in tomcat" and I would really like to use JPA in tomcat as I think it is much faster and lighter than Glassfish. But the article also uses toplink as the persistence library? Could someone guide me in using hibernate?

    This is an video from NetBeans site. Take a look.
    It will open your eyes about Hibernate and TopLink and JPA after you checking the codes that will be generated on your own system application.
    http://www.netbeans.org/download/flash/netbeans_6_gui_builder/netbeans_6_gui_builder.html

  • Toplink vs hibernate

    hi
    who can i determine which technology is better to use with oracle. Toplink or hybernate
    mostly we use hybernate but I want to know why toplink is better than hybernate
    thanks
    Message was edited by:
    Doug Clarke

    One of the key differences between TopLink and Hibernate is the caching implementation. TopLink provides an object cache where instances can be shared across the application, client, or transaction controlled by mapping metadata and application usage. The benefits of the shared cache are clear where read-only and read-mostly objects can be shared to avoid creating many copies of the objects unnecessarily (performance costs and extra garbage creation).
    If you have more volatile or data types that are not shared you can configure TopLink's caching to be isolated and therefore only cache the objects per client or transaction.
    If you have use cases where you need to ensure you get a transactionally isolated instance of an object you have configured to be held in the shared cache you can access the object within a UnitOfWork. This will make a read-repeatable copy of the object within the 'transaction' that will not be changed by concurrent writes from other committing UnitOfWork.
    Ultimately we work hard to offer TopLink/EclipseLink developers a solution with configurable and flexible options to address a wide variety of requirements. Understanding and leveraging our cache is a key success factor in any application development with TopLink.
    As far as the duplicate SQL comment goes I have reviewed the support request we recently received on this and the issue appears to be that if you change the existence-checking from its default of check-cache to check-database we have a bug where we incorrectly check the database for each registered new instance with a zero PK value. When we see an object with a zero primary key and sequencing configured it should be assumed to be new without requiring the select. We are working with support to get this issue addressed.
    Doug

  • Demo Application to Compare Toplink, JDBC, Hibernate

    Hi
    I Need a Demo Application which is implemented Using Toplink, JDBC, Hibernate to compare the overhead of using Toplink, Hibernate to Using JDBC.
    I got a link to Spring PetClinic Demo which is Implemented using Toplink, JDBC, Hibernate from Google but the spring site has removed this application.
    Please help to get this application or some other demo Application which can be used
    Excuse me for my bad english
    Thanks,
    Raghavendra

    PeClinic Demo Application is included in the Spring Frame work Dowload

  • Can I implement the ORM task without TopLink and Hibernate?

    Can I implement the ORM (Objest/Relational Mapping) task without TopLink and Hibernate tools?

    Any opinions are welcome.

  • Toplink vs. hibernate getReference implementation

    Hello,
    hibernate implement EntityManager getReference() to save you a database roundtrip if you do nothing but create an association, with the proxied instance in managed state.
    How toplink implement EntityManager getReference() ?
    Regards

    Note that the only time that returning a "hollow" entity from getReference() will even make any difference is when all three of the following are true:
    a) you are setting a unidirectional 1-1 or m-1
    b) you already know a priori the identifier of the target entity
    c) you have not loaded it recently or plan on loading it any time soon

  • Article comparing TopLink and Hibernate

    I recently had a chance to develop two very similar J2EE applications. In one application I used TopLink. In the other application I used the open-source Hibernate persistence framework.
    I wrote a brief high-level article documenting my experiences. The URL is:
    http://www.calextech.com/articles/HibernateToplink.pdf
    I'd appreciate any comments.

    Hello, I was wondering if you have any idea on how to use JDeveloper IDE effectively while working with HIBERNATE.
    Or is the notion that most of the 'HIBERNATE stuff', like generating mapping files, etc are well done outside the scope of the IDE.
    We are currently evaluating HIBERNATE, and will really appreciate your help in this regard.

  • EJB annotations are not documented , versus Hibernate and JBoss seam do

    I have an application that contains EJB3 annotations, Hibernate Annotations and JBoss Seam annotations in the java code.
    When I generate the javadoc, the Hibernate and JBoss Seam annotations show by the side of the members and methods who has them, like, for example
    @Name(value="authenticator")
    @Scope(value=SESSION)
    @AutoCreate
    public class AuthenticatorImpl
    <dt>extends java.lang.Object </dt><dt>implements </dt>
    or, another example,
    h3. facesContext{noformat}@In(value="org.jboss.seam.faces.facesContext",
    create=true)
    private javax.faces.context.FacesContext facesContext{noformat}
    However, none of the EJB3 annotations included in the code are being dieplayed in the javadocs.
    Does someone knows if there is any reason why this should happen?
    This is my javadoc command:
    javadoc -version -d doc2 -sourcepath src\model;src\action -classpath "lib/core.jar;lib/jboss-embedded-api.jar;lib/jsr250-api.jar;classes/test;lib/hibernate.jar;lib/log4j.jar;lib/testng.jar;lib/ojdbc14.jar;lib/hibernate-commons-annotations.jar;lib/hibernate-search.jar;lib/hibernate-entitymanager.jar;lib/drools-compiler.jar;lib/richfaces-impl.jar;lib/jboss-cache.jar;lib/jboss-seam.jar;lib/janino.jar;lib/hibernate-annotations.jar;lib/richfaces-api.jar;lib/ejb-api.jar;lib/mvel14.jar;lib/jbosssx.jar;bootstrap;lib/jbpm-jpdl.jar;lib/commons-beanutils.jar;lib/lucene-core.jar;lib/jgroups.jar;lib/jsf-api.jar;lib/jboss-el.jar;lib/el-api.jar;lib/antlr-runtime.jar;lib/jstl.jar;classes/model;lib/antlr.jar;lib/persistence-api.jar;lib/jsf-facelets.jar;classes/action;lib/richfaces-ui.jar;lib/mail.jar;lib/drools-core.jar;lib/jboss-seam-debug.jar;lib/hibernate-validator.jar;lib/servlet-api.jar;lib/jta.jar" -private mil.navy.med.rota.model mil.navy.med.rota.security mil.navy.med.rota.action.util mil.navy.med.rota.action.util.mpd mil.navy.med.rota.action.mpd mil.navy.med.rota.action.referrals mil.navy.med.rota.model.referrals mil.navy.med.rota.action.trainman mil.navy.med.rota.model.trainman -use -version -author -splitindex
    The version of javadoc used is
    Standard Doclet 1.6.0.0_3
    Aticipated thanks!

    Nevermind, the issue was that my persistence.xml did not contain the following property:
    <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
    Therefore, the tables were not being created upon deployment.
    Still, I would expect to see entity beans listed in the WebLogic console.

  • EJB versus Hibernate

    Hi Everyone,
    I heard that ejb is not the final solution for all your database opertions in all cases. Sometimes, you need to use JDo or Hibernate.
    Can anyone compare theses three technologies and the predict future market for them please.
    Thanks and regards,
    Girtish Varde

    Thanks for your prompt reply and sorry for delay in me replying.
    I really appreciate your prompt reply.
    I tried to Google for Hiobernate, but not fortunate enough to get hard core extensive comparision and actual strengths and weakness areas of the three. I was confused because of the opposite views.
    Actually, i am in a hurry and i have to choose among ejb and hibernate.
    One company which is offering me is large and using ejb, while the other is relatively young but uses hiberbate and strongly canvasses it, We are having discussion on chat / mail, but i can not take that as final word, it might be motivated.
    Do you really feel hibernate has bright future and i should choose it against ejb?
    Does it provide all other features such as messege driven bean, session beans etc. in ejb or just for persistance?
    I need guidance from experienced people like you.
    Can me send me some links or referrences please.
    I will continue my digging in the meantime.
    Still, thanks and regards
    Girish Varde

  • Lazy loading differences Toplink vs. Hibernate - plz. explain

    I'm in the process of evaluating both Toplink and hibernate as potential ORM framework to use for a project I'm currently involved in.
    My question is about how Toplink resolves lazily loaded associations. In hibernate I have to perform a query inside a transactional context boundary, like:
    Session s = SessionFactory.getSession();
    s.beginTransaction();
    ... your query logic here
    s.getTransaction().commit();When the query involves associations which are declared as lazily loadable, trying to invoke these associations after the transaction boundary has been closed, results in an exception. This differs from Toplink (my JUnit testcase breaks for Hibernate if I set the DAOFactory to return hibernate enabled DAO's) and I'm wondering why?
    I'm guessing this has something to do with how Toplink manages its clientsession, but would like to get some confirmation about this. It looks like as-long as the thread of execution is running I can resolve associations using Toplink, but not when I use Hibernate.
    This brings me to yet another question - what's considered best practices in Toplink regarding session disposal. Should I do something myself, or let the garbage collector take care of it?

    I'm not too sure here, but I think it's because TopLink has a "long running" ServerSession. When you do lazy initialization outside a clientsession it is for read only purposes and it will use the centrally managed ServerSession (and cache). I'm still trying to figure out the exact relationships here, som I'm not too sure. :) Hibernate does not have a centrally shared cache, and will not be able to instantiate objects if the session is closed (for each session, objects are instantiated from it's data cache).
    As for handling resources and closing/opening, use the Spring/TopLink integration. It will handle it for you and give you heaps of convenience methods that uses some clever tricks to decide if it should fetch objects with Session or UnitOfWork. It will also do some good Exception handling built into Spring.

  • Hibernate's dual-layer cach and TopLink's caching strategy

    Dear members,
    I understand that caching between hibernate and toplink is implemented (or utilized) differently. Hibernate seems to have 'dual-layer caching' (which may imply they have two layers of cache) whereas TopLink has session cache and shared cache. The way I see it, they seem to be aiming for the same thing. Are there any differences between (obviously there are, only that I do not know them) those two caching architectures, and how different are they?
    Howard

    Yes there are differences :) For details check out
    TopLink vs Hibernate... revisited... again :)
    and
    Indirection - how are references resolved after session has been closed?

  • How to create multiple tables SQL in toplink?

    Table A {
    field1,
    field2,
    field3
    Table B {
    field1,
    field2,
    field3
    select a.field1,a.field2,b.field3
    from a,b
    where a.field1=b.field1
    and a.field2=b.field2
    How can I create dynamic sql in toplink as Hibernate HQL?
    Is there any simple method?Use multipleTableJoinExpression is too difficult.
    Thanks!

    Bump

  • Exception in JPA (NoClassDefFoundError: org/hibernate/AnnotationException)

    Hi,
    I´m having a serious problem when using JPA. I´m using Weblogic Server 10 and developing in Weblogic Workshop Studio. When I start the WLS in Workshop, all works fine, but when I use the "publish" over my WLS Server in Workshop because I change any class in the project (and I need to republish the project to send the changed class to WLS), the following error is reported when I try to use the JPA:
    Caused by: javax.ejb.EJBTransactionRolledbackException: EJB Exception: : java.lang.NoClassDefFoundError: org/hibernate/AnnotationException
    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:353)
    at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1115)
    at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1265)
    at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:150)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:884)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:186)
    Why the AnnotationException class is no more found after a publish in a started Weblogic Server ?
    Thanks in advance,
    Sergio Stateri Jr.
    [email protected]

    Sergio,
    there are at least three implementation for JPA available: OpenJPA, TopLink, and Hibernate. The first two are or can easily installed in WLS. If you intend to use Hibernate as the persistence provider you should ensure that all libraries are in the class path of your application.
    --olaf                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • JPA/TopLink

    Hi Everyone,
    I am using JPA with vendor implementation toplink.
    For some complex queries like
    START WITH EMPLOYEE_ID = 100 CONNECT BY PRIOR EMPLOYEE_ID = MANAGER_ID ORDER SIBLINGS BY LAST_NAME, I am plannign to use TOplink api like ReadAllQuery and ExpressionBuilder.
    As per my understanding, We are using JPA to have Vendor independent api and implementaion will be provided in persistence.xml.
    If i use some toplink api's ,Tomorrow If i want to change the vendor from Toplink to hibernate. I need to change Toplink code to hibernate in my services.
    Is there anyway i can use JPA alone to get all the work done... Thanks in advance for all your suggestions.

    JPQL does not support connect by. If you need to use connect by, you must either use vendor specific functionality, or a native SQL query.
    James : http://www.eclipse.org/eclipselink/

Maybe you are looking for

  • Black and white changes to red on printing

    I have been scanning some black and white photo's to my computer and then printing them after enhancing them. Some have printed okay but others come out red and I have no idea why. Anyone any ideas. I am using iphoto 11 version 9.3

  • How do I upload a PDF not made in keynote, pages, or numbers to iCloud?

    Trying to upload a PDF to iCloud so i can view iton all my devices. Used to be able to do this by dragging it to iDsik. But my iDisk icon is now gone and I would like to still use this feature.

  • Remote Domain Join Error - no endpoint listening at CertWebservice.svc

    I am trying to remotely connect a windows 8.1 client to a Windows Server 2012 Essentials domain.  I do this by navigating to: https://remote.mydomainname.com/connect/ The connector downloads and starts fine but after user authentication, fails with t

  • Solaris 10 3/05 on VMWare Workstation 4.5

    Does anyone have experience installing Solaris 10 Intel on VMWare workstation 4.5? The setup: Dell Inspiron 5160 Windows XP Pro sp2 VMWare Workstation 4.5 1gig of ram 3.2ghz cpu hyperthreading CD-RW/DVD-/+RW Dell Wireless 4150 Broadcom NIC I have ins

  • Budget profile

    Hi 1> Can anyone shed some insight on, why "Budget Profile" should not be maintained if FM-BCS is activated? 2> Because Budget profile contains the following crucial control parameters for budgeting. 1>Time horizon 2>Format 3>Availability control for