Introduction to Hibernate

Home

News: Introduction to Hibernate

  1. Introduction to Hibernate (149 messages)

    A new TSS article, by Nick Heudecker, looks at Hibernate, an object/relational persistence and query service for Java. The article shows you how to create, update, retrieve and delete persistent classes and how to persist object collections using Hibernate. Source code and mapping documents for an example application have been provided.

    Read Introduction to Hibernate

    Threaded Messages (149)

  2. Top Down with Hibernate?[ Go to top ]

    Just curious as to what most hibernate users do as far as designing their domain objects. Top-down or Bottom-up? Which are you using?
  3. Top Down with Hibernate?[ Go to top ]

    I have been involved in a few projects that use Hibernate and have employed both techniques. I prefer to design my class model and let it drive the database schema however when working with an existing schema I will reverse the tables to serve as a starting point (just to save time). With Hibernate the class model is almost always more granular than the database schema and in fact because Hibernate does not allow for a class to map to multiple tables it is never less granular. IMHO the biggest advantage of Hibernate (and other non-obtrusive OR mappers) is that it supports OO design techniques that serve a much broader purpose than just persistence.
  4. Top Down with Hibernate?[ Go to top ]

    Interesting comment, Kirt.
  5. Concern with hibernate...[ Go to top ]

    I have been involved in a few projects that use Hibernate and have employed both techniques. I prefer to design my class model and let it drive the database schema however when working with an existing schema I will reverse the tables to serve as a starting point (just to save time). With Hibernate the class model is almost always more granular than the database schema and in fact because Hibernate does not allow for a class to map to multiple tables it is never less granular. IMHO the biggest advantage of Hibernate (and other non-obtrusive OR mappers) is that it supports OO design techniques that serve a much broader purpose than just persistence.


    I'm just starting out with Hibernate and it is my 1st time using a mapping tool but what you stated above about the class always being more granular than the schema is what concerns me. It just seems strange to me because it does not lend itself to a normalized database and thus might lead to inefficient database performance. For example, (and one of the Hibernate's documentation examples is similar), if I had an employee and there were different types of employees, in the data modeling world, I'd want an employee and an employee type entity. Now, the Type would be a composite object in the employee object in the object model but Hibernate (at least the way I interpreted it) seems to think that you should store that type information in the employee table.

    That seems not quite right to me. Maybe in some cases it's okay, but I can see how this behaviour might get you into trouble in a heavily utilized app.
  6. Correction...[ Go to top ]

    To clarify that I feel Hibernate wants me to store the type info in the Employee table, I mean ALL of the type info, not just type_id, meaning there is not employee type table.

    Mike
  7. Correction...[ Go to top ]

    To clarify that I feel Hibernate wants me to store the type info in the Employee table, I mean ALL of the type info, not just type_id, meaning there is not employee type table.


    You can easily map 2 persistent objects here, an Employee and an EmployeeType, each in its own table. Employee will simply have a many-to-one relationship to EmployeeType, exposing an "employeeType" bean property of type EmployeeType that Hibernate will automatically populate. You're not forced to denormalize the types into the employee table at all, that's a miscomprehension.
  8. Correction...[ Go to top ]

    I've had to deal with complicated mapping scenarios with Hibernate, and rarely have had a problem. Of course, it can get pretty complex at times.

    The first couple of times you use Hibernate on a large project (in this context, I mean a schema with more than 15 entities with a fair number of relations between them), it can get scary.

    There are times when I thought I would have to abandon using Hibernate due to the complexity of some mappings and just "having to understanding how exactly the relation mapping worked". Once you become familiar with how Hibernate deals with relationships, it really increases your productivity, and you can do things that with normal JDBC would take extra coding each time.

    Note: I spent some time with SQL traces and profiling my code to get a better understanding of how Hibernate worked before I was really confident of using it in larger projects. So my advise to you is - start slow, understand the complexities of using the software and then scale up its use. And then, you won't regret using Hibernate.

    My standard approach with projects these days (this is after trying out the alternatives) is to use a bottom-up approach. Which means:

    i) Create the data model without any object-oriented considerations. Use standard best practices including 3NF, association tables, discriminators for inheritance etc. Make sure ALL your foreign keys are in place. So if you use self-referential integrity (parent-child within a single table), make sure your keys are in place.

    2) Use Middlegen to reverse engineer your schema and create your .hbm files. Middlgen uses your foreign keys to establish relationships between domain entities, and automatically throws in defaults for multiplicity and directionality. Tweak the .hbm files to make sure they aren't majorly out of sync with what you need. However, it’s not necessary to get them perfect at this stage.

    3) Once you get your “draft” .hbms, use hbm2java to generate your POJOs. (the Hibernate API simplifies things if you keep matching .hbm files and POJOs in the same deployment directories).

    4) Tweak the mapping and the POJOs (usually simultaneously) to ensure that your object model is best-in-class. Meaning now is when you haul out your OO textbook and incorporate the OO features you need. Make sure the way Middlegen interpreted your relationships is the way you really wanted it to. Add discriminators to the mix if appropriate.

    Something that is key is having done the pre-thinking about object graph traversal. Within this outlined process, I consider that the most important design task, besides the schema engineering. Meaning you should consider all the ways in which you would commonly navigate your object graph. As in, how will your use cases retrieve data and traverse the object graph using relationships? What kind of queries will you need? And so on.

    5) (You don't need this but) I usually use DAOs to complete the data access layer and access the DAOs from SLSBs or MDBs.

    6) Then adjust your .hbms + POJOs to optimize for performance. Actually, this should really be done on a "continuous improvement" basis. Don't unnecessarily optimize. It’s not necessary. Hibernate does pretty well on its own.

    The advantages to doing things as stated above is: you get a fairly good schema designed using good ER modeling techniques, a sound domain model and a good data access layer overall.

    I've used this process pretty successfully on more than one occasion.
  9. Understand your mappings[ Go to top ]

    http://www.xylax.net/hibernate/ (by Tom Sedge) helped me early on when I was trying to understand Hibernate mappings.

    Though I wish Tom had used more realistic examples and names than Foo/Bar. Would have made things easier to grasp at the time.
  10. Correction...[ Go to top ]

    Thanks Sandeep, very informative post.
    Here is what I do:

    1)- Similar to your point 1. I use a database modeling tool that generates SQL schema's do whatever DB I choose as target.

    2)- Point my homegrown code generator to the database, and click "generate" to create the DAO-JDBC data access layer files.

    3)- Huummm ... there is no point 3 ... that's it.

    So I guess I win :-)

    Regards,
    Luis Neves
  11. Correction...[ Go to top ]

    I think as long as you are aware of the requirements imposed on a database design in order to support an object design (discriminators, List or Array indexes, etc) you could choose top-down or bottom-up design. I think in the end our designs would look very similar.

    The two advantages that I have found to doing the top-down approach are:

    1. You can start assigning responsibilities (methods) to classes early in the requirements gathering phase. When considering responsibilities, often new, more cohesive objects emerge (often containing data from a single table). If you are designing the database and you are thinking in objects you might make a note of this where if you are designing classes you would add these responsibilities and classes to your UML class diagram, CRC Card, etc.

    2. It is really easy to write procedural code from a database and forgo good OO design, and though working with a class diagram does not prevent this, it helps keep me in the right mindset. I try not to think about which objects will be persisted and focus on a more flexible, extensible design using the best OO practices and design patterns.

    Again good designers can reach the same conclusions using different techniques. It is just easier for me to design objects, generate the ddl, and re-factor and optimize the resulting database.
  12. Top-down approach[ Go to top ]

    Kirt, The top-down approach works well too. I used it in a project a while back, and it turned out pretty well.

    In that instance, I used AndroMDA (www.andromda.org) to generate POJOs from a UML model (XMI exported UML model, that is), and then added XDoclet Hibernate tags to them. Actually, AndroMDA does this automatically for you now, and you can go all the way from a UML model to a compiled JAR containing persistence-enabled POJOs with an appropriately configured Ant script (pretty neat). Works pretty well. The DB design was done independently of the OO design, but in general all key classes had corresponding tables for data storage. The schema had additional tables for some M-N relationships.

    The reason I use the bottom-down approach these days is, um, er...

    Well, I couldn't really say. It's probably a personal fad of some sort.

    Sandeep
  13. Top-down approach[ Go to top ]

    For all of you who use the top-down approach, I would suggest taking a close look at AndroMDA. Since it uses XDoclet, which is already very popular with lots of J2EE programmers, it fits very well into most development cycles.

    Actually, if you were planning on using XDoclet Hibernate tags, then AndroMDA is especially a good choice.

    Sandeep.
  14. Top-down approach[ Go to top ]

    I have not tried AndroMDA though I have downloaded it and I know it supports MagicDraw (my UML tool of choice). Sounds cool, I will give it a try.

    As far as top-down, bottom-up, or middle-out I don't think you can go wrong. Hibernate will make your life easier, that is after making it harder for awhile :)
  15. Hibernate Schema Export[ Go to top ]

    For prototyping, I have found the Hibernate schema export utility to be quite useful. I have it setup to run from Ant and it generates my schema according to the content specified in my Hibernate mapping files. I have a separate class that loads my day one data and another to populate the database with some meaningful test data - all using Hibernate. If I wish to make a change to the Hibernate mappings, I just regenerate my schema, repopulate my data and run my JUnit tests - all using Ant.

    I can see that once things settle down (particularly on a large project), you would want to formalise your data model an have a bit more control over it than Hibernate offers (I use PowerDesigner for this), but for getting things up and running this approach is good. You still need to have some database awareness, as what you specify in the mapping files obviously affects the final database schema design.

    The schema export does a reasonably good job, creating tables, primary and foreign key constraints and indexes if required. The only basic limitation I've found is that it names the foreign key constraints with it's own generated hash code.

    David
  16. Concern with hibernate...[ Go to top ]

    I think you need to be careful about over normalizing any database design, whether you use Hibernate or not. Normalization and performance optimization are not the same thing. For example, if you have a separate table holding employee type information, that means you need an extra table join every time you want employee type information. Of course, depending on what type information is necessary, you'd need this join anyway (because if, for example, you are storing "Type name", you probably want this mapped externally to an integer value stored in the employee table anyway). But just be careful when automatically associating optimization and normalization. In many real-world scenarios, a high level of normalization is less than ideal for performance. (don't get me wrong, most of the time it's the right thing to do)

    As for hibernate, I think you'd probably want to reexamine your model from a more object-oriented perspective. There are many ways to do this. For example, you might have a master "Employee" class with a set of subclasses that implement each employee type (Hibernate would support this with a simple type field in the database, which wouldn't ever be exposed to your object model). This would be appropriate if, for example, the functionality of each class differed according to type (e.g., different overtime rate calculations or something like that). In other words, if different employee types would mean that common methods would need to be implemented differently. On the other hand, if the employee type is just something maintained for information, but doesn't affect functionality or add fields (i.e., it's just a marker), then you should probably have an "EmployeeType" class to model this. That would be a contained object within the "Employee" object, which Hibernate can handle no problem.

    Personally, I prefer the top-down approach. I feel that far too many bad design decisions come out of taking the opposite approach. Most of your application (management layers, UI layers, web layers, web service layers, etc.) will be interfacing with your model objects and not directly with the database, so why should the database drive the design? I see databases as a commodity that should be swappable. If there is a need for a lot of database optimization, it can usually be figured out later, and will usually only affect a small portion of your application. Also, I find that people take so many efforts to improve the performance of the database that they forget that the major hit in any database operation from an object layer (Java, .NET, or otherwise) comes in the db I/O calls, not from the actual churn on the database itself.
  17. Concern with hibernate...[ Go to top ]

    <Drew McAuliffe>
    I find that people take so many efforts to improve the performance of the database that they forget that the major hit in any database operation from an object layer (Java, .NET, or otherwise) comes in the db I/O calls, not from the actual churn on the database itself.
    </Drew McAuliffe>

    That is not correct according to http://rubis.objectweb.org
  18. I use subclasses to implement subtypes. Works great. You can have the base class in one table and the entending subclass. Hibernate does the right thing every time. You just declare the subclasses in the mapping file.
  19. I use subclasses to implement subtypes. Works great. You can have the base class in one table and the entending subclass in another. Hibernate does the right thing every time. You just declare the subclasses in the mapping file.
  20. Top Down with Hibernate?[ Go to top ]

    I have been involved in a few projects that use Hibernate and have employed

    > both techniques. I prefer to design my class model and let it drive the
    > database schema however when working with an existing schema I will reverse
    > the tables to serve as a starting point (just to save time). With Hibernate
    > the class model is almost always more granular than the database schema and
    > in fact because Hibernate does not allow for a class to map to multiple
    > tables it is never less granular. IMHO the biggest advantage of Hibernate
    > (and other non-obtrusive OR mappers) is that it supports OO design techniques
    > that serve a much broader purpose than just persistence.

    No support for multiple tables? and they call this O/R mapping? That's pretty rank amateur when you consider CocoBase offered this feature in 1.0 in 1997... And it had a GUI! If this feature doesn't exist then the term O/R mapping is being misused in conjunction with this project and that's not what they actually provide. What about batch inserts? Stored Procedure support? Clustered/fault tolerant high performance caching? Custom & proprietary SQL support for different databases? Switching between database with the same application and different SQL generation on the fly? Centralized management with maps reused across applications? What about an O/R runtime that performs as much as 2-3 TIMES faster than raw JDBC (no caching enabled & identical SQL down to the character in both test cases)? How about integrations with IDE, App Servers? How about multiple Querying APIs, & Syntax Support? How about decoupling of Navigation & Mapping to promote map reuse and different lazy/default loading in different cases? How about distributed lazy loading and distributed/local scrollable result set cursors integrated with model lazy loading? There's what some folks getting started 'believe' is an enterprise tool, and then there's the reality...

    If you need O/R mapping features not in Hibernate, just get CocoBase. It's the only O/R tool that outperforms RAW JDBC without caching enabled. It's integrated with every major IDE, App Server, Database, etc. It has free deployment, ships all major points of integration (including the Transparent Persistence Implementation and caching) as source code and it comes with a dedicated support staff, over 2000 pages of PDF documentation and 7 years of product maturity...

    Frankly if you're doing a REAL project with serious requirements such as table spanning maps, then I would think you'd want to use a proven product with proven large scale deployments...

    Oh, and lets not forget that with CocoBase you get a product based on internationally recognized landmark patents. Anyone who brings Hibernate into their company should know that it makes their company legally and financially responsible for any and all patent and copyright violations. Open Source Zealots who believe it should be legal to steal software ideas won't care about this, but real companies with real business bottom line issues should be made aware of the potential consequences of this arrogance. Violations of patents can involve punitive damages as well as the cost of lost sales to the patent holder (IBM is another patent holder and after the SCO issue they might look to increase their revenues). Just ask the 1000 or so companies who just received the SCO letters about user liability. Companies that choose this development approach should be aware that they're legally playing craps. Patents are the current law - and that's fine if an engineer wants to act with civil disobedience because they don't believe software should be patented - but it doesn't change the fact that both the engineer and the company where they're employed are breaking the law if patents are violated... In the future, if the laws are changed this might not be an issue, but today it most definitely is a SERIOUS issue - and to believe anything different is delusional. To disregard the risk is simply foolish and shortsighted for companies...

    So you talk APIs and features all you want, but unless you're a student at a university - this decision should be made in conjunction with your company's legal department as the Hibernate license states. Anything else is irresponsible and frankly stupid...

    Ward Mullins
    CTO
    THOUGHT Inc.
    http://www.thoughtinc.com
  21. Re: Top Down with Hibernate?[ Go to top ]

    No support for multiple tables? and they call this O/R mapping?


    Yes.

    >>> And it had a GUI!

    You only fool beginners with this, advanced users don't need a GUI.

    >>> What about batch inserts?

    Available.

    >>> Stored Procedure support?

    Of course.

    >>> Clustered/fault tolerant high performance caching?

    In the works, partially available.

    >>> Custom & proprietary SQL support for different databases?

    16 database dialects and counting.

    >>> Switching between database with the same application and different SQL generation on the fly?

    Exotic, but possible with some minor additions.

    >>> Centralized management with maps reused across applications?

    Please...

    >>> What about an O/R runtime that performs as much as 2-3 TIMES faster than raw JDBC (no caching enabled & identical SQL down to the character in both test cases)?

    Show us some code for this magic.

    >>> How about integrations with IDE, App Servers?

    XML validation, auto-completion, XDoclet tag templates. Works with most popular appservers. Your point? Oh, no GUI.

    >>> How about multiple Querying APIs, & Syntax Support?

    Available.

    >>> How about decoupling of Navigation & Mapping to promote map reuse and different lazy/default loading in different cases?

    Lazy mapping of collections, dynamic fetching with HQL keywords or initialize(). What is portable? Move POJOs to your new application, copy mapping metadata files, done.

    >>> How about distributed lazy loading and distributed/local scrollable result set cursors integrated with model lazy loading?

    Oh, nice ideas.

    >>> If you need O/R mapping features not in Hibernate, just get CocoBase.

    Ok, we start with some questions for you:

    1. Can I have the source with it?
    2. Oh, I think thats it. Bring one those patent lawsuits!

    You either talk about technical advantages of your solution or disadvantages of Hibernate in this thread. Anything else is definitely out of place.
  22. Ward Mullins[ Go to top ]

    Sir, the "Mark as Noisy" feature of this board was meant for you.

    I seriously cannot believe you posted such an offensive message on this public forum and put your company name on it! How can you be proud of *threatening* potential customers and insulting your competition publicly?

    Your comments are both out of place and unprofessional. After bearing witness to this behavior, I'm very glad that my company chose TopLink over CocoBase.

    You should be appreciative of the customers you have now and also that open source projects like Hibernate exist, for they are the only thing keeping the Java value proposition alive. Beyond that, you better have CocoBase.Net in the works.

    I hope you're satisfied with your posting. If you ask nicely, the kind folks at TSS might remove it for you --before anyone else reads it.

    Best regards,

    Clinton Begin
    http://www.ibatis.com
  23. Ward, ward, ward[ Go to top ]

    What about an O/R runtime that performs as much as 2-3 TIMES faster than raw JDBC (no caching enabled & identical SQL down to the character in both test cases) <

    Hilarious claim :) Would you honestly trust *any* other claim made by Ward, after this one?

    >> Anyone who brings Hibernate into their company should know that it makes their company legally and financially responsible for any and all patent and copyright violations. <
    Ditto for anyone who brings Struts into their company. Or log4j.

    Of course, Hibernate does not violate any patents, since it uses the exact same basic technology as all other commercial and open source ORM tools.


    Ward, you do untold harm to your own company with this kind of behaviour. I hope you realise that I have actually seen the lies you tell about "the Hibernate architect" in emails to potential customers. Did you really think they would not get back to me? Do you really think that your customers actually believe that stuff? I certainly *could* sue you for the claim that we reverse engineered Cocobase. And Australian courts have recently found that you are liable under Australian law for defamation committed online.


    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    Now, an appeal: can we PLEASE NOT turn this into another acrimonious debate. The messages above were discussing some really interesting stuff, and I was interested to read them.

    Lets NOT let Ward's latest rant hijack the whole thread.
  24. Ward, ward, ward[ Go to top ]

    What about an O/R runtime that performs as much as 2-3 TIMES faster than raw JDBC (no caching enabled & identical SQL down to the character in both test cases) <<

    >
    > Hilarious claim :) Would you honestly trust *any* other claim made by Ward, after this one?
    >
    > >> Anyone who brings Hibernate into their company should know that it makes their company legally and financially responsible for any and all patent and copyright violations. <<
    >
    > Ditto for anyone who brings Struts into their company. Or log4j.
    >
    > Of course, Hibernate does not violate any patents, since it uses the exact same basic technology as all other commercial and open source ORM tools.
    >
    >
    > Ward, you do untold harm to your own company with this kind of behaviour. I hope you realise that I have actually seen the lies you tell about "the Hibernate architect" in emails to potential customers. Did you really think they would not get back to me? Do you really think that your customers actually believe that stuff? I certainly *could* sue you for the claim that we reverse engineered Cocobase. And Australian courts have recently found that you are liable under Australian law for defamation committed online.
    >
    >
    > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    >
    > Now, an appeal: can we PLEASE NOT turn this into another acrimonious debate. The messages above were discussing some really interesting stuff, and I was interested to read them.
    >
    > Lets NOT let Ward's latest rant hijack the whole thread.

    Ok, lets see, so you don't like what I say, so you threaten to sue me? And what customers shared what with you? Because if any customer shared confidential information, both you and they would be legally responsible for possession of this information. Are you saying you have confidential customer communications? If so you've implicated yourself in international commercial espionage - is that what you're saying? Are you sure what you received was unaltered? Because if it is the typical document, it simply says it's the responsibility of the customer to review intellectual property, and Hibernate 'may' violate international patents. That's completely different than the text you're writing - but it is the truth. As for reverse engineering, were you aware that SEVERAL of your contributes do show up as having downloaded CocoBase - so unless you're willing to vouch for them as well, you're being really stupid in this tact. One of them even tried to hide between a hidden domain, but a quick DNS search quickly unearthed who they were...

    Oh and posting confidential customer documentation on this sort of forum is a great way to get theserverside shut down - so be careful how you respond Gavin - Floyd might not be too happy if you embroil him in this... Just because you seem to have no regard for the law, doesn't mean he is the same.

    Oh, and why do you presume that just because your software uses the same technology as other layers that they don't violate patents as well? How do you know if the commercial products aren't patent licensees? Patents aren't like copyrights, just because you've never 'reverse engineered' a product doesn't mean it's free of violations. This is a common misperception (Linus just made the same mistake recently), and this is probably why you're under this false impression as for your responsibility.

    And as an FYI, this is the stupid defense of "everyone's violating the law so it's legal". Unless you did a patent search, you're creating a lot of potential crap for end users of your software.

    Did you have an attorney do a patent search? Do you even know what that is?

    If you haven't spoken to an attorney about patent, this explains why you're so arrogant about Hibernate not violating IP. You probably think that because other Open Source projects are doing it - that it makes it OK. Well I'm here to tell you that it's not, and thanks for confirming that you've done no legal due dilligence - that certainly makes the case against you very clear... It also makes it clear why your software license passes the buck to the end user...

    Ward Mullins
    CTO
    THOUGHT Inc.
    http://www.thoughtinc.com
  25. Ward, ward, ward[ Go to top ]

    Gavin,

    You seem really confused on several legal points in this 'threat', so let me clear them up for you.

    1) I've only sent one email to any 'prospect' in the last year - and that was a prospect in the united states - not australia.

    2) Since that person and our company and the transaction would all have occurred in the united states, Australian law is irrelevant. Since you seem very weak on legal issues, jurisdition is just as important with international law as the law itself is.

    3) There are uniform commercial codes in the united states however that limit the exchange of confidential documents and the 'interference with a transaction in progress', which apparently is what you've done according to your email. And since confidential commercial documents may have been exchanged over international borders, that does imply international commercial espionage - now doesn't it? And since the person I was emailing with is a fellow open source contributor by his own omission - then I would say there's a possible attempt to defraud and to slander in the mix. And since technically speaking it all occurred within the US transaction wise, US/California laws would apply - not australian ones...

    4) The only prospect I sent an email to asked me my opinion, and I gave it. Not only did I caveat that opinion with "do your own homework and research the legal issues yourself", but considering your postings on here on how used common techniques in commercial and open source projects - it's clear to me that my personal assessment is still accurate.

    5) You promised the customer that you didn't violate any patents (this is what lawyers refer to as an implied warrant), but unless you had an intellectual property search done in the country of transit it would impossible for you to make this promise, therefore it becomes an illegal assertion. Commercial vendors don't claim to be free of patents as sometimes patents become approved after a commercial (or open source project) becomes available, what commercial vendors do however provide is indemnification for the end users. By asserting that you are patent free, while your software license asserts the opposite claim you are misrepresenting your software and by doing so in the process of a potential commercial transaction you may have violated several US commercial codes and regulations.

    You can talk patents all you want, but commercial code violations are MUCH easier to prosecute - so you need to step wisely young man, because at this point you've implicated yourself in a whole slew of criminal activities that are starting to add up to a pattern...

    Ward Mullins
    CTO
    THOUGHT Inc.
    http://www.thoughtinc.com
  26. Ward, ward, ward[ Go to top ]

    How on earth are you a CTO of a company?

    Shame, shame, shame on you ward.
  27. Ward, ward, ward[ Go to top ]

    It is a very insignificant company. I'm CEO of several myself. We haven't gotten around to incorporating, but I am also on my companies' legal counsel as well.
  28. Suggestion[ Go to top ]

    Ward

    You may find this useful

    http://www.amazon.com/exec/obidos/tg/detail/-/0671723650/104-3937119-4735151?vi=glance

    Pratheep
  29. Suggestion[ Go to top ]

    Be careful Gavin, Ward will patent your name "Gavin" and will sue against you
  30. Ward, ward, ward[ Go to top ]

    This Ward guy is simply sick. If you ask him what he had for dinner yestarday, probly he will sue you for sharing personal information and private life espionage...
  31. All over again...[ Go to top ]

    Looks like you've already had this debate. Why do you think it will be different this time?

    http://www.theserverside.com/home/thread.jsp?thread_id=17724#72923

    Oops...what's this?
  32. All over again...[ Go to top ]

    Maybe this is Ward's way of drawing attention away from Hibernate, kind of like how a clown draws a bulls attention from a rodeo performer. This doesn't seem to work, however, activity seems to pick up on the Hibernate site when Ward starts spouting.
  33. Ward, ward, ward[ Go to top ]

    Ward, there's playing lawyer, and then being a real one. That's the difference between the letter of the law and the actual practice of it.

    In actual practice, nothing is as cut and dried as you have pointed out. Jurisdiction is almost always _bitterly_ fought over in cases, and what the courts determine is almost never as simple as your statements. Pretty much the same goes for the rest of your statements - things are not nearly as simple and obvious as you seem to be asserting.

    Further, you should brush up on your terminology. There is a huge gulf between criminal liability and civil contract law. You, young man, should step wisely when you start confusing the difference between criminal law and civil.

    Lastly, the area which you like to pass yourself off as an expert is, in fact, one of the murkiest waters of law in existence today. There are _no_ experts when it comes to determining the validity of open source licenses, the defendability of broad software patents, and determining jurisdiction for internet related activities. The precedencts here are few and far between, and without precedent things are pretty much up for grabs (you _do_ realize that court precedent has far more impact in determining suits than merely statutes, don't you?).

    In addition, downloading software usually implies a license, and the most you can usually do is revoke that license. Proving something like reverse-engineering is extremely difficult, and a mere downloading of something isn't even close to proof of reverse engineering.

    Finally - no, I'm not a lawyer, I'm just a geek who knows a bit more about the law than average, and someone who has little tolerance for people grossly misinterpreting law to their own advantage on message boards.

        -Mike
  34. Ward,

    I have used hibernate quite a bit after becoming frustrated with the
    short-comings of EJB CMP, and I find it to be *excellent* (Congrats
    Gavin).

    The way I see it, Hibernate is a free product with excellent features,
    great support, and unlike your product a well-mannered lead developer
    who doesn't accuse people of coming from abused/aloholic families.

    Do you really think that your postings on this thread are going to win
    you customers? I for one will never give CocoBase a look now.

    Well done.

    Mike.
  35. For the record:

    I will also never give CocoBase a look now.

    Do THOUGHT INC actually pay this guy (Ward Mullins) money to lose their company customers the way he is doing ?

    Maybe he actually works for TopLink ? ;)
  36. I was taking a look at CocoBase. No more. Your lack of professionalism has ended all interest.

    Ward, you might also want to check out:
    http://www.amazon.com/exec/obidos/tg/detail/-/0312397771/qid=1058519359/sr=1-1/ref=sr_1_1/102-5417957-6432158?v=glance&s=books

    Pay special attention to the section relating to ad hominem arguments.

    BTW - Adults usually don't call people stupid or jerk, or accuse people of being from alcoholic families during technical discussions.

    Grow up.
  37. I attended JavaOne last month and asked the CocBase people what made there product better than Hibernate. For me, this is a simple question that any company competing against an open source product should be able to answer. I was surprised when the answer I received was basically a rude attitude. If that experience is any indication of THOUGHT INC.'s atitude, then I believe this really is the CTO.

    My experience is documented here.
  38. I had a very similar experience from the Kodo people (SolarMetric) -- the sales guy went into a panic when I asked about advantages of Kodo over Hibernate all he could do was blurb out a bunch of FUD that had nothing to do with actual capabilities. As I continued to pushed him for any specific reason Hibernate was "bad" he finally just said something like "Well, if it was me, I just wouldn't trust it".

    Very impressive...


    james
  39. Since we're on the subject...

    The reason I initially investigated CocoBase was that I couldn't stand the attitude of WebGain's TopLink sales/support staff. They were absolutely horrible. Little did I know that Thought/CocoBase was just as bad/worse.

    How is it that we get better, more polite support from people who aren't even paid to do it? I think it goes back to what I said before: Open Source Software developers are doing it for one reason: they care.

    Cheers,
    Clinton
  40. ... To be fair[ Go to top ]

    ...in fairness, I should add that the Kodo sales person was not by any means rude, he just wasn't able to give me any significant reason why Hibernate couldn't measure up to the task, and seemed only able to resort to vague cautions that it won't work in 'large' (whatever that means) installations.

    The Kodo guys called me back (after seeing my posting above) and said they wanted to make things right, and promised to send me a list of specific technical reasons why Kodo is superior... I can't say anything negative (other than what I've already related) about my experience with them thus far (which is just doing evaluation) - and they seem to be helpfull.

    JDO vendors (such as Kodo) definitely have legitimate reasons to worry about Hibernate! Just the commercial competition in the field has got to be extremely tough for them.

    For now, (having been doing an eval of persistance tools for the last several weeks) I'm not super impressed with JDO - sure its pretty neat and almost elegant, but all of the vendors have to throw in lots of features "above and beyond" the JDO spec - I realize a lot of that is to compete with one another, but a good measure of it is truly because of shortcommings in the spec.

    If I choose to use JDO because it's a "standard" isn't it a shame that I have to write vendor-specific code to get everything out of it that I need? -- Not that that is a big deal, since I'd naturally factor all of the JDO stuff down into a slim data access layer that is easily replaced... Which points out even more why Hibernate may be viable - the paradigm of its use, compared to JDO's paradigm is nearly exactly the same... so swapping Hibernate for JDO or vice-versa would be completely transparent to anything above the DAO.
  41. ... To be fair[ Go to top ]

    I'm not super impressed with JDO


    Agreed. I've been watching JDO for the last couple years, and I have yet to be impressed by any vendor! When the industry announced JDO's doom, I thought: "good". Yet now that JBoss is going JDO with it's persistence layer, perhaps JDO will breath still (good or bad, I don't know).

    >> vendors have to throw in lots of features "above and beyond" the JDO spec

    Yes. And IMHO, it's better to be proprietary than partially compliant to a standard. I believe that a standard must be strict, or not at all. I think EJB suffers similar issues and will eventually suffer the same fate. It will be interesting to see what Sun does with EJB now that "simplicity" is their new goal. Perhaps a thicker and more strictly followed JDO spec is part of the solution? Dunno.
  42. ... To be fair[ Go to top ]

    Agreed. I've been watching JDO for the last couple years, and

    > I have yet to be impressed by any vendor! When the industry
    > announced JDO's doom, I thought: "good". Yet now that JBoss
    > is going JDO with it's persistence layer, perhaps JDO will
    > breath still (good or bad, I don't know).

    I think JDO in JBoss is probably going to be just another service they provide and support. I doubt it will completely replace their current CMP persistence engine. More likely, it is going to be up to the developer to decide which technology fits their need the best.

    /T
  43. We evaluated CocoBase last year. It was an ok product - little buggy, but the engineering team seemed to be responsive in fixing the issues.

    Once we moved closer to aquisition, the incompetence and rudeness of the sales team has completely ruined any chances Thought, Inc had. Once we mentioned certain shortcomings in the product (ridiculously broken UI at that time) to the sales team, they launched personal arguments against our developers. Needless to say that has not helped their bid.

    I see the same thing happening on this thread. Good luck, Cocobase! Keep up the offsensive against the customers!

    -Dmitriy
  44. Cocobase...(ridiculously broken UI at that time)


    Yes! We had the same experience with the CocoBase GUI. For all the bragging they do about it, I almost wonder if they've never tried to use it! Not only was it clumsy, buggy and ugly --it was incomplete. Certainly no where near the level of TopLink's GUI. With TopLink we were up and running in 5 minutes. If CocoBase is going to be so rude, they should at least have a decent product to make up for their personality flaws.
  45. Wait a minute here, you telling me that cocobase's GUI was worse than TopLink's?

    TopLink's GUI was the worse thing I had ever seen, I can't believe that there's something even worse than that!
  46. In our experience, TopLinks GUI was functional and well designed (just our opinion). For small to medium requirements we had no problems at all.

    Larger projects had stability issues and sometimes corrupted the mappings. In one case the team stopped using the GUI altogether and edited the files by hand anyway (a la Hibernate). We were using TL 3 and 4 (before Oracle bought them).

    So to answer your question, yes. The CocoBase GUI (in our opinion) was a nightmarish piece of junk and made the TopLink GUI look like a gem.
  47. I agree on this front. I've evaluated the CocoBase product in the past, but at the time I didn't need that solution. More recently I evaluated a range of solutions for a different project and ended up choosing Hibernate given its feature set and open source nature. (I much prefer reading the source in a pinch than hoping I can get a call back..)

    However, if CocoBase permits this discussion and behavior from its "leadership" on a public forum without any intervention, I would consider it *RISKY TO USE COCOBASE*. Yes, I don't think its risky for Hibernate even with the made up insults and innuendo, but rather risky to use a product from a company that permits this behavior. If the company thinks it can insult and threaten its whole target user base, I consider it dangerous to base a long term solution from that product.

    The fact is that OR-mapping solutions are more of a commodity these days. You aren't going to pay tons of money because either free solutions or features built into your app server will provide most of what you want. I'm not saying CocoBase does or doesn't do a good job with what they try to do, but that others do it too. It reminds me of enverybody selling just a J2EE app server, but more recently have shoved everything else in.. portal services, single sign-on, integration, etc.. to help compete. Dedicated commercial OR-mapping products are on the same path, I would guess..

    So, I can't personally tell you a think about CocoBase technically, since its been so long since I've looked at it directly, but consider the risk of using a product from a company that behaves in such a (as I consider it) disreputable manner.
  48. Ward, ward, ward[ Go to top ]

    JACKA**,

    Several things:

    1) WHAT PATENTS? What ridiculous patent do you have over object/relational mapping? It's a broad category. Hibernate was written from the ground up. Can you read source code? Check the source code. Then go talk to the people who know what they are doing in your company and see if there's anything copied. Doubt it.

    2) Last I heard, downloading Cocobase isn't the same as stealing code from it. I've bought video games. Does that make me a pirate if I happen to develop my own games?

    3) If a potential customer of yours (god help them) received a sales letter or some sort of information regarding your feelings about Gavin and hibernate, and that customer shared that letter with Gavin, you'd have a lot of work to do to prove that any violations occurred. Because unless your sales pitch is marked "CONFIDENTIAL", it's open game. A letter from Citibank asking me to sign up for their card isn't confidential. I can go over to MBNA and say, "look what Citibank is telling me!" without any fear of breaking the law. Also, I'm sure your actual customers will be happy to hear that they are no longer allowed to share correspondence between their company and yours with anyone else without the threat of the lawsuit. I would love to sign up as a customer of a company who feels the need to turn its lawyers loose on the customer base. Makes me feel really safe.

    Think before you speak. Regardless of what else goes on here at TSS, most of the people who read this are pretty saavy developers, usually in purchase-making decisions. You've just killed a lot of business for your company.

    Does the CEO know about this? Maybe he should put you in the corner of a conference room for a "time out"?
  49. Ward, ward, ward[ Go to top ]

    were you aware that SEVERAL of your contributes do show up as having downloaded CocoBase


    I am betting several linux developers have also installed windows on their pc, what's your point.
  50. Ward, Ward, Ward[ Go to top ]

    Wow...this guy takes the cake as the most arrogant CTO ever.

    Add to me to the "Cocobase Ban For Life" list.

    Derek
    http://www.strayneuron.com
  51. Ward, Ward, Ward[ Go to top ]

    Wow...this guy takes the cake as the most arrogant CTO ever.

    >
    > Add to me to the "Cocobase Ban For Life" list.
    >
    > Derek
    > http://www.strayneuron.com

    Me too! Ward must be the most idiotic CTO (if he's one) ever! I also work for a commercial company (not directly about object persistence) but we've always based our business on the technical (features, customer service, ease of use,..) superiority. We have no patents, everyone is free to try to make a better product, but it'll be hard since we're improving all the time. ;-)

    How's that for a business strategy - Ward?
  52. Please...[ Go to top ]

    ..let this be a joke/prank/impersonation. Otherwise I have to accept the fact that the CTO of thought inc just tried to start a flamewar with an obvious trolling. Will the real Ward Mullins please stand up?

    If he is already standing somebody tell him to sit down before he embarrasses himself and his company further.

    The post will probably de deleted soon since it violates the no obvious flamebait guideline.

    I don't know anyone at thought inc but the idea that a company officer would post such a thing in public makes me cringe.

    -----------------

    Just so no further time is wasted, I am interested in how complex people's mappings are. I have project tracking application that has hierarchical modules which are descended from the same base class and live in different tables. I did the relational model and the object model in parallel. I maximised each for its environment. Hibernate had absolutely no problem with it. I was impressed at being able to use components to build objects through composition, but still have their data come from one table row. I like to normalize so i do end up with nasty joins and subqueries in sql, but hibernate's simple but effective query language squashed the big hairy sql spider. Color me converted

    Does anyone know much about the difficulty of creating dialects? Novell has an LDAP-JDBC driver that I would love to use to persist and access information in our ldap directory. Would it be easier to use the iBatis sql maps for something like this?

    -A
  53. Well, Please Do[ Go to top ]

    If it was by me, software patents would not exist. tTHOUGHT inc, good luck. I will remember you in my project meetings.
  54. Well, Please Do[ Go to top ]

    If it was by me, software patents would not exist. tTHOUGHT inc, good luck. I will remember you in my project meetings.


    But the fact is they do exist, and they're being upheld internationally and very consistently.

    You can be an ostrich with your head in the sand, or you can face the current facts. If you 'deny' patents exist, then you increase the business risk to your company. That's always your option, but you should be 'conscious' of the choice, instead of listening to the Open Source Zealots who claim they don't violate IP, but who don't even seem to have a clue as to the specifics of patent law. How do you know you don't violate a law that it's obvious you don't understand is what I want to know. But I'm sure Gavin will have some irrational answer...

    Ward Mullins
    CTO
    THOUGHT Inc.
    http://www.thoughtinc.com
  55. Please...[ Go to top ]

    ..let this be a joke/prank/impersonation. Otherwise I have

    > to accept the fact that the CTO of thought inc just tried
    > to start a flamewar with an obvious trolling.

    I doubt it is a prank. It is certainly not the first time Mr. Mullins "stands up". The sad part is he doesn't restrict this type of behavior to online forum trolling, he behaves the same (and worse) in person too.

    /T
  56. Please...[ Go to top ]

    Do you already have a plan on what features are comming in version 3 ?

    I know Hibernate features are guided by user requests, then, do you think suitable to enhance classes after compilation ?
  57. Top Down with Hibernate?[ Go to top ]

    With Hibernate the class model is almost always more granular than the

    > database schema and in fact because Hibernate does not allow for a class to
    > map to multiple tables it is never less granular.


    I did not mean this as a disadvantage of Hibernate in fact one of the appealing things about Hibernate is that it does 98% of what you will need and keeps the 2% (the rarely used stuff) from bloating or complicating the API. It is rarely reasonable to have a database model that is finer grained than your object model so why should Gavin and company waste their time adding that feature?

    Wow, all of those features sound nice Ward. How about a computer that turns into a fishing boat then a barbeque grill during my lunch hour, I could actually use that.
  58. Such Arrogance[ Go to top ]

    Mr Mullins, I am surprised at your sheer arrogance. I understand that you have great pride in your product. It is possibly a very good product. However, you come across as being so childishly immature as far as executives go, I would never ever buy your product.

    Nearly every post I've seen of yours has exactly the same tone. It used to be JDO that you had a problem with.

    Please, if you are not able to come up with constructive, "polite" rebuttals that don't involved pure, unadulterated FUD, please do NOT post on this forum. I am sure that most of the people who have posted here agree with this sentiment.

    Grow up.

    Sandeep
  59. Such Arrogance[ Go to top ]

    Mr Mullins, I am surprised at your sheer arrogance. I understand that you have great pride in your product. It is possibly a very good product. However, you come across as being so childishly immature as far as executives go, I would never ever buy your product.

    >
    > Nearly every post I've seen of yours has exactly the same tone. It used to be JDO that you had a problem with.
    >
    > Please, if you are not able to come up with constructive, "polite" rebuttals that don't involved pure, unadulterated FUD, please do NOT post on this forum. I am sure that most of the people who have posted here agree with this sentiment.
    >
    > Grow up.
    >
    > Sandeep

    It isn't FUD, it's a legal reality. Don't be stupid and hide your head in the sand, because you and your company will both be responsible for your arrogance. If you don't believe this is a REALITY, just review this article:

    http://news.com.com/2100-1026_3-1026466.html?tag=fd_top

    Not only are software patent enforcement against and user violations being successfully enforced in the courts, but you forget that the Hibernate project explicitly has stated that they intentionally and without regard are downloading and violating the intellectual property of commercial vendors. I find that arrogance the most disturbing - and not my response.

    Maybe you just grew up in a disfunctional or alcoholic family where pointing out an abuse is responded to by a similar abuse - but copying and violating intellectual property is a CRIMINAL offense, not just a negative action.

    Are you saying that you think it's more appropriate for the engineers to be international criminals than it is for me to publically criticize them for this action? If so, you have a STRANGE idea of legality.

    As for the stupid assertions from gavin about us claiming they reverse engineered CocoBase - that isn't the point. Whether they reverse engineered or CocoBase or not is not what I claimed. What I claimed and still claim is that they publically stated that they don't believe software is patentable and that they will not honor this. Gavin has that changed? Do you recognize international laws? Can you guarantee that Hibernate doesn't violate the patents in countries where it is being distributed? Your license appears to pass ALL liability to the end user - are you denying this?

    Ignorance is not an excuse Gavin. Just because you aren't aware of an international patent doesn't protect you or your end users from the consequences of violating such patents. Check with your attorneys - I've checked with mine :)

    Ward Mullins
    CTO
    THOUGHT Inc.
    http://www.thoughtinc.com
  60. Desperate Liars[ Go to top ]

    the Hibernate project explicitly has stated that they intentionally and without regard are downloading and violating the intellectual property of commercial vendors <


    Ward, your above comment amounts to defamation. You are walking a VERY dangerous path here.


    Hibernate does NOT violate any copyrights or patents and neither I nor anyone else associated with the Hibernate project have ever said that it does. Nor can Ward provide any reference to back up this claim.


    Ward, if you ever again repeat this claim again in public, I *will* sue you, and you *will* be paying me money for damage to my professional reputation. This is a straight out lie and you and everyone else here knows it.


    >> As for the stupid assertions from gavin about us claiming they reverse engineered CocoBase - that isn't the point. Whether they reverse engineered or CocoBase or not is not what I claimed. <
    I have seen your emails with my own eyes and, unlike you, everyone here knows that I am not a liar.


    >> What I claimed and still claim is that they publically stated that they don't believe software is patentable and that they will not honor this <
    I think I once claimed that most software patents are patents upon *obvious* "inventions" and hence do not fit the definition of something that is patentable. And that it is due to laywers and judges misunderstanding the nature of software innovation that many of these patents upheld in court.

    I never ONCE claimed that I or the Hibernate project would not "honor" a legal copyright or patent. You WILL retract your allegation NOW (or provide evidence of where I made this claim).


    >> Just because you aren't aware of an international patent doesn't protect you or your end users from the consequences of violating such patents. <
    Ward, ward, ward. All this gunk applies equally to Struts. Why don't you attack struts then? Because it is our project you fear most.

    I notice that you have never once actually come out and claimed that Hibernate violates _your_ patent. (Well, not in public at least.) I take this to mean that you know it does NOT.
  61. Desperate Liars[ Go to top ]

    Ward,
    Apparently your hero is Darl McBride over at SCO - you spread lies and fear in the hopes of scaring business your way. I doubt you are scaring much business your way from your irresponsible posts in this thread. I expect that your legal department (if you have one) is not too proud of your amusing banter today.

    Hibernate is excellent, stable, fast scalable, easy to use, and has a truly great community associated with it. Gavin is a great representative of his product - you are not. I would expect that you lose business every time you post somewhere. Please take your posts elsewhere.

    Thanks
    Ray Harrison
  62. Looks like Ward has some real personal problems. Patents are out of control, everybody knows. Patents dont automatically grant credibility.

    Keep up the great work Gav (especially if your a fellow Aussie!)

    http://slashdot.org/article.pl?sid=02/04/15/2324253&mode=thread&tid=155

    Ward, swinging forward and backward on a swing is still free.

    Thats all the time I have to post messages.
  63. Looks like Ward has some real personal problems. Patents are out of control, everybody knows. Patents dont automatically grant credibility.

    >
    > Keep up the great work Gav (especially if your a fellow Aussie!)
    >
    > http://slashdot.org/article.pl?sid=02/04/15/2324253&mode=thread&tid=155
    >
    > Ward, swinging forward and backward on a swing is still free.
    >
    > Thats all the time I have to post messages.

    Patents are not out of control, laws and intellectual property is what has largely what has fueled the economies of the west for centuries. This is just diatribe...

    That's true patents don't grant credibility, and that was never my point. What is important around this issue is that the open source community openly disregards the law, and this can cost corporations a lot of money. And it has created a culture of thievery where many contributors feel perfectly justified to download and steal any ideas they think are good - even if the company may have invested millions of dollars in developing the technology.

    I don't have a problem with novel open source projects (Ant is a great example of that), but when you have a me too system like Hibernate that clearly attempts to compete with commercial products like CocoBase, and who's leaders don't do the legal due dilligence to protect those users duped into using it - I have a real problem with that...

    Ward Mullins
    CTO
    THOUGHT Inc.
    http://www.thoughtinc.com
  64. Ant and Hibernate[ Go to top ]

    <quote>
    I don't have a problem with novel open source projects (Ant is a great example of that), but when you have a me too system like Hibernate that clearly attempts to compete with commercial products like CocoBase, and who's leaders don't do the legal due dilligence to protect those users duped into using it - I have a real problem with that...
    </quote>

    how can you use Ant if you think Hibernate sucks? Both are Open Source projects and use licenses accepted by opensource.org. You don't have to use Ant. I'm sure that there are other commecial vendors offering make tools and compete with Ant such as Openmake (http://www.openmake.com). What kind of company is that THOUGHT Inc.? "I THOUGHT, I don't have any competitors in my area?" ;-) Are you afraid of competition?

    A good new way for CocoBase is maybe to drop CocoBase and build a new product on the top of Hibernate with some value added? Or are you just too proud of your CocoBase? ;-)

    My comment to the article: Great article, Hibernate is just fascinating, thanks!

    Lofi.
    http://www.openuss.org
  65. Arrogance[ Go to top ]

    It doesnt matter if hibernate violates pattents or not, arrogance is worst.
    Who buys arrogance?? Not me

    Microsoft is already building Windows Media Player for Linux.. Will Cocobase build some plugins for Hibernate ?

    EJB CMP also violates Cocobase pattents???

    This thread is sux and should be deleted.
  66. Desperate Liars[ Go to top ]

    Ward,

    > Apparently your hero is Darl McBride over at SCO - you spread lies and fear in the hopes of scaring business your way. I doubt you are scaring much business your way from your irresponsible posts in this thread. I expect that your legal department (if you have one) is not too proud of your amusing banter today.
    >
    > Hibernate is excellent, stable, fast scalable, easy to use, and has a truly great community associated with it. Gavin is a great representative of his product - you are not. I would expect that you lose business every time you post somewhere. Please take your posts elsewhere.
    >
    > Thanks
    > Ray Harrison

    You still didn't discuss the points I brought up...

    Hibernate makes your company responsible for any laws broken in its construction - are you comfortable with that fact? Are you willing to pony up your company's resources to defend the right of an individual to steal intellectual property? Do you find that scenario fair and equitable?

    As for my legal department, how do you think I know so much about patents and the legal responsibilities and engineers? They're more agressive than I am, I have to restrain them, not the other way around...

    Ward Mullins
    CTO
    THOUGHT Inc.
    http://www.thoughtinc.com
  67. Desperate Liars[ Go to top ]

    IANAL, but just briefly read through patent US Patent #5857197 (Inventor: Mullins, Ward).

    [quote]
    System and method for accessing data stores as objects

    Abstract

    A system and a method for accessing a data store as objects from an object application. The accessed data store could be either an object data store or a non-object (e.g. relational) data store. The system includes an object schema including meta data corresponding to a data store schema and an adapter abstraction layer. The adapter abstraction layer comprises a first adapter, and a second adapter. One embodiment of the system includes an object schema manager to create and maintain the object schema at run time. It comprises a dynamic, scalable, centrally managed, and secure method for accessing data stored in both object and non-object (e.g. relational) data stores, effecting a consistent interface to the data store regardless of its underlying structure, or a method of transport and level of security.
    [/quote]

    Implication? WOW!

    Every other JDO and O/R Mapping solutions out there are inviolation of this patent!

    Great job, Ward! JDO is now officially dead!
  68. Note also the filing date. Long, long after plenty of prior art existed. (Even commercial products like TopLink.)

    Ward always neglects to mention that the mere award of a patent is not considered sufficient. The patent is invalid if the existence of prior art can be proven.
  69. There's one word that keep come into my mind while reading Ward's responses: Rambus.
  70. Rambus?[ Go to top ]

    There's one word that keep come into my mind while reading Ward's responses: Rambus.


    That's funny. ******* was mine.
  71. The other interesting thing about patents is that they are only useful for protecting intellectual property if you are willing to expend the resources to enforce your patent. Further, to make enforcement worthwhile, you have to be able to offset the cost of the patent violation case from the proceeds of winning the patent case and regaining business. Patent violation cases are a very expensive proposition. Why do you think SCO is suing IBM and not RedHat or Linus?

    I found the posts from THOUGHT Inc interesting, especially toward the end, because THOUGHT seemed to be saying that "We don't know if Hibernate violated any patents or not, but are you willing to base your business on it? For the low, low price of $X,XXX per developer THOUGHT will take care of things for you in case THOUGHT has violated any patents." This sounds more like selling insurance instead of selling a software product.
  72. <quote>
    I found the posts from THOUGHT Inc interesting, especially toward the end, because THOUGHT seemed to be saying that "We don't know if Hibernate violated any patents or not, but are you willing to base your business on it? For the low, low price of $X,XXX per developer THOUGHT will take care of things for you in case THOUGHT has violated any patents." This sounds more like selling insurance instead of selling a software product.
    </quote>

    this is very interesting, maybe they THOUGHT, "Gee, let's export some COCONUTS to the JAVA island! Maybe the people there will buy". Wrong attitude: You have a lot of COCONUTS at JAVA island. JAVA island produces and exports COCONUTS! ;-)

    Peace,
    Lofi.
  73. A very nice clear and concise article on Hibernate. Thanks. I think I'll give it a try on my current project.

    As for the 'inventor' of this 'System and method for accessing data stores as objects' idea, Mr Ward Mullins, your motivations for posting are obvious and have nothing to do with being helpful or informative to the people reading this thread. I think you are doing yourself and your company a disservice and can only assume that you fear Hibernate becuause it is much better than what you are trying to peddle.
  74. Desperate Liars[ Go to top ]

    IANAL, but just briefly read through patent US Patent #5857197 (Inventor: Mullins, Ward).

    >
    > [quote]
    > System and method for accessing data stores as objects
    >
    > Abstract
    >
    > A system and a method for accessing a data store as objects from an object application. The accessed data store could be either an object data store or a non-object (e.g. relational) data store. The system includes an object schema including meta data corresponding to a data store schema and an adapter abstraction layer. The adapter abstraction layer comprises a first adapter, and a second adapter. One embodiment of the system includes an object schema manager to create and maintain the object schema at run time. It comprises a dynamic, scalable, centrally managed, and secure method for accessing data stored in both object and non-object (e.g. relational) data stores, effecting a consistent interface to the data store regardless of its underlying structure, or a method of transport and level of security.
    > [/quote]

    This is a nonsense patent. Fire your lawyers and concentrate on making a better product for a reasonable price and try to improve your personal behaviour.
    As you can learn from this thread, people prefer Hibernate about CocoBase. Something has to be wrong with your product or with your attitude.
    It's not only about pricing or Open Source. For the same reason I completely threw out JBoss - Mr. Fleury could be your brother.
    In the future I will treat your company like it didn't exist - great job !
  75. Desperate Liars[ Go to top ]

    I doubt you are scaring much business your way from your irresponsible posts in this thread.


    You call me irresponsible because I point out the facts - oh give me a break.

    Here are the facts.

    1) Patents are enforceable even if the open source contributor wasn't aware of their existence.

    2) Hibernate passes ALL responsibility for patent and copyright infringement on the end user - now that's irresponsible!

    3) Hibernate has NO processes in place, and no legal review to ensure that contributors won't illegally violate IP. Commercial companies like ours review the history of employees, and make sure we aren't 'stealing' the work of others. That's responsible action - not the open source methodology!

    4) The open source community is in denial about the law. I'm sure you're very unhappy with SCO, but they just got Microsoft and Sony to pony up the license fees. And acacia just got Virgin Music to pay them royalties as well as successfully shutting down 5 sites for violating their patents.

    The fact is that the engineers who are intentionally or through their ignorance are violating international law are the irresponsible ones. And so are engineers like yourself who put their company at risk for litigation because you want be deluded about the reality of things.

    Frankly I'm so negative about Hibernate because Gavin has been such a Jerk on this issue. He's made claims he hasn't backed up, and he's misled a lot of folks about the lack of encumberance of Hibernate, yet he's never done the appropriate legal research to back these claims.

    To me THAT is irresponsible.

    Folks like you just want to kill the messenger - that's fine zealots disregard any information that doesn't meet their expectations... Not everyone is a zealot like yourself however...

    So instead of attacking me, attack my points - so far everyone has criticized me for issues that I pointed out which are FACTUAL (eg. read the Hibernate license, and ask an attorney about patent law and legal responsibility), yet none of you has any viable response to those issues other than you might like Hibernate or the 'community'. Yeah Yeah, so what? That doesn't change the legal scenario...

    I'm staying on topic, can't you do the same or do you prefer the politics of personal criticisms? It is easier I know, and probably more fun, but it doesn't help people who might actually be and should be concerned about these issues. Just because YOU discount them doesn't mean they're going away...

    Ward Mullins
    CTO
    THOUGHT Inc.
    http://www.thoughtinc.com
  76. Customers[ Go to top ]

    Ward,

    I worked in many J2EE projects as a consultant and I a lot of projects we invented database access layers, web framworks, ect. Today there are a lot of open source and commercial products that fit the requirements and we don't have to invent the wheels again and again.

    NO customer (including the biggest European banks and insurance companies) has ever searched patents if we developed our own database access layer or O/R mapper...if we choose today to use Hibernate I think the risk for the customer is the same as to develop it for there own...isn't it?

    So the only possibility is to buy commercial products for all kind of software a customer develops or check for any algorithm the code if someone has a patent for it???

    I think this is insane!

    Mirko
    :wq
  77. patents[ Go to top ]

    <Mirko>
    So the only possibility is to buy commercial products for all kind of software a customer develops or check for any algorithm the code if someone has a patent for it???
     
    I think this is insane!
    </Mirko>

    No worries,
    one cannot have a patent on an algoritm anymore then one can have a patent on an idea ...



    Artreus
  78. Desperate Liars[ Go to top ]

    OK Ward -

    Lets look at your points:

    <Ward>
    1) Patents are enforceable even if the open source contributor wasn't aware of their existence.
    </Ward>

    Absoultely true, Ward. What exactly does your patent cover? What do your patent-pendings intend to cover? Do you have a patent on the whole concept of O/R mapping and persistence? If you do, are you going after the very large companies that offer such products? i.e Oracle and TopLink? In what way does Hibernate allegedly violate your patent or patents? Can you point out the specific code, or is it an O/R product and therefore allegedly in violation of said patent or patents?

    I find software patents to be an extremely bad idea but that is another discussion all-together.


    <Ward>
    2) Hibernate passes ALL responsibility for patent and copyright infringement on the end user - now that's irresponsible!
    </Ward>

    Sure (I wouldn't call it irresponsible) - but the LPGL is a generally accepted method of licensing software. What -copyrights- is Hibernate likely to be infringing upon? Please point them out and be specific.


    <Ward>
    3) Hibernate has NO processes in place, and no legal review to ensure that contributors won't illegally violate IP. Commercial companies like ours review the history of employees, and make sure we aren't 'stealing' the work of others. That's responsible action - not the open source methodology!
    </Ward>

    Have Hibernate illegally violated IP somewhere? If so, where? Your implication is that they have done so. You are suggesting that because they allegedly have no process in place that (by inference) they have violated IP. You also suggest that your company is free of any patent or copyright infringement because you have some sort of process in place. The nature and broad scope of software patents indicates the strong likelihood that your company probably violates some patent somewhere and it would cost your company more money than it brings in to verify such a statement. In a hypothetical situation, if IBM swoops down on you for violation of several hundred patents, and then decides to sue your customers as well, does your company have the resources to fight IBM and indemnify your customers?


    <Ward>
    4) The open source community is in denial about the law. I'm sure you're very unhappy with SCO, but they just got Microsoft and Sony to pony up the license fees. And acacia just got Virgin Music to pay them royalties as well as successfully shutting down 5 sites for violating their patents.
    </Ward>

    That's a bit of a silly statement. It shows how much you understand about the open source community and, quite frankly, about the SCO-IBM lawsuit.

    -----------------------------------------------------------------------------

    In my work Ward, I use both commercial and open source products. No doubt you will call that irresponsible. Maybe. But there are companies that exist merely to litigate their patent infringement claims. Are you taking Thought down that path? Can you compete on the merits and strengths of your product? You spread a tremendous amount of ill will within the software community in general, not just the open source world.

    The respect for anyone's software product is earned - not litigated.

    Thanks
    Ray Harrison
  79. Desperate Liars[ Go to top ]

    Actually your email proves my innocence and implicates yourself.

    You say you are using common techniques in all O/R projects - without reverse engineering it isn't possible to know those techniques is it? So you've just proven that you're in the habit of reverse engineering techniques by your own public omission.

    You say Hibernate doesn't violate any patents, yet you admit that you've done no patent search so that's a fools promise. Your license agreement places all obligation on the end user for this issue - if you believe that Hibernate doesn't violate any international patent laws, change your license agreement and make yourself and your employer responsible for it. If you're unwilling to do this, then your promise of non-infringement is worthless.

    You say that you aren't a liar yet you make claims that are unsupported by facts. You cannot make the assertion that Hibernate doesn't violate IP if you've never had an attorney do the international research to back this up. Any claims on your part seem like they false nicely into the Australian laws for false claims - and it seems like you're putting yourself into several dangerous legal positions... Especially in light of you threatening me - my legal folks tend to take those things very seriously...

    So instead of 'threatening me', why don't you tell the community here how you're going to be responsible and actually do the necessary work to protect them? The current license agreement you use offers them no protection or indemnification - so any promises you make outside of that agreement is frankly just hot air... Change your license agreement and then I won't complain that you're making the end user responsible for your infringement. Then you should invest in a good attorney in international law and do an intellectual patent study, and have them review the processes for source code propagation. After all if any of the contributors (yourself included) has reviewed source code from any other open source O/R layer that might have reverse engineered a patented or copyrighted product, then you are tainted and can't legally commit.

    Also note that with patents, you don't have to reverse engineer a system to violate the patent. This is a common misconception. I've never claimed that what patents Hibernate does or does not violate, but what I can tell you is that there's a VERY good chance that it does - and the way international patent law works it's YOUR responsibility to disprove the violation, not the other way around...

    Gavin, I used to think you intentionally tried to violate IP, now I know you just don't understand the implications. Do yourself a favor and do some research. Patent law is very straightfoward once you understand it, but it seems very clear that you're under some false impressions about how it works. I know you're very dedicated to this project, and I actually respect that commitment. But that doesn't mean that what you're doing is valid or legal. But since your license agreement passes on liability to end users, that I find disengenuous...

    Just my $.02

    Ward Mullins
    CTO
    THOUGHT Inc.
    http://www.thoughtinc.com

    > >> the Hibernate project explicitly has stated that they intentionally and without regard are downloading and violating the intellectual property of commercial vendors <<
    >
    >
    > Ward, your above comment amounts to defamation. You are walking a VERY dangerous path here.
    >
    >
    > Hibernate does NOT violate any copyrights or patents and neither I nor anyone else associated with the Hibernate project have ever said that it does. Nor can Ward provide any reference to back up this claim.
    >
    >
    > Ward, if you ever again repeat this claim again in public, I *will* sue you, and you *will* be paying me money for damage to my professional reputation. This is a straight out lie and you and everyone else here knows it.
    >
    >
    > >> As for the stupid assertions from gavin about us claiming they reverse engineered CocoBase - that isn't the point. Whether they reverse engineered or CocoBase or not is not what I claimed. <<
    >
    > I have seen your emails with my own eyes and, unlike you, everyone here knows that I am not a liar.
    >
    >
    > >> What I claimed and still claim is that they publically stated that they don't believe software is patentable and that they will not honor this <<
    >
    > I think I once claimed that most software patents are patents upon *obvious* "inventions" and hence do not fit the definition of something that is patentable. And that it is due to laywers and judges misunderstanding the nature of software innovation that many of these patents upheld in court.
    >
    > I never ONCE claimed that I or the Hibernate project would not "honor" a legal copyright or patent. You WILL retract your allegation NOW (or provide evidence of where I made this claim).
    >
    >
    > >> Just because you aren't aware of an international patent doesn't protect you or your end users from the consequences of violating such patents. <<
    >
    > Ward, ward, ward. All this gunk applies equally to Struts. Why don't you attack struts then? Because it is our project you fear most.
    >
    > I notice that you have never once actually come out and claimed that Hibernate violates _your_ patent. (Well, not in public at least.) I take this to mean that you know it does NOT.
  80. So, you are retracting then?[ Go to top ]

    So, Ward, let me get this straight, since your last posts were incredibly mealy-mouthed. Contrary to your initial claims above you


    (1) Admit that I have never said that Hibernate wilfully violates any intellectual property
    (2) Admit that you are unaware of any patent or copyright violations committed by the Hibernate project
    (3) Admit that I have never said that Hibernate wilfully fails to "honor" (whatever that means) a copyright or patent


    If that is the case, it would seem that you owe me an actual APOLOGY, since all three claims amount to clear defamation of my character and professional reputation.

    (Otherwise, we are all still waiting for evidence.)

    =======================================================================
    Now, for all other readers, Hibernate's license is the LGPL. This is generally accepted as a very acceptable license for use in a commercial environment. Hibernate does not violate any patents and certainly does not contain any stolen code (I _know_, since I wrote most of it myself).
  81. Desperate Liars[ Go to top ]

    Actually your email proves my innocence and implicates yourself.

    >
    > You say you are using common techniques in all O/R projects - without reverse engineering it isn't possible to know those techniques is it? So you've just proven that you're in the habit of reverse engineering techniques by your own public omission.

    And since TopLink and the O/R mapping technology existed before Cocobase, are you then claiming YOU did reverse engeneering in order to create Cocobase, since you believe the only way to understand that technology is by reverse engineering it?
  82. Well, this is turning into a fascinating discussion that concerns patents. Please don't stop it (Floyd), as it is important to all of us.

    So many patents are getting enforced, and what worries me is this: so many of them are 'obvious' or 'general'. Really, they are. They seem to disregard the software creation process. Yet, as Ward has clearly said, they are enforceable by law. Sometimes prior art does not exist - that doesn't mean that the idea is 'novel'.

    Given a particular state in my personal technical development, and a certain set of tools, it is sometimes 'obvious' to come up with a solution. Unfortunately, somebody else might have obviously come up with it too, just before me, and patented it. Take for example Amazon's cookie nonsence. For heaven sake. Doesn't HP hold the patent on AOP? Have they stated that they won't enforce it?

    What are we all doing about it? What is the fundamental problem? An uneducated patenting authority? What actions are we as developers taking? All of you against patents - have you joined a "lobby group"? Are you doing something about it, instead of lamenting the sad state.

    Regards,
    J
  83. Fascinating discussion about patents[ Go to top ]

    So many patents are getting enforced, and what worries me is this: so many of >them are 'obvious' or 'general'. Really, they are. They seem to disregard the >software creation process. Yet, as Ward has clearly said, they are enforceable by >law. Sometimes prior art does not exist - that doesn't mean that the idea is >'novel'.


    I don't think you can enforce such common knowledge in Europe by law. It might be OK to give patents to real innovative technology but today it's all a variation of the same old things.
    And what about Microsoft ? They never invented anything in their whole history.
    Maybe Ward should take them to court for stealing his totally new technology.
    And maybe computer history needs to be rewritten: Ward Mullins, the only real pioneer ! But - we cannot rewrite this - we have to pay a license fee to the one who invented writing (Ward?) !
  84. Fascinating discussion about patents[ Go to top ]

    The problem with software patents in particular is that they are too broad - you can get broad swathes of software concepts in a patent - for instance AOP or O/R Management. In my opinion this create a false market. Software does not exist in a vaccuum - it is unlikely that Ward came up with his ideas out of the blue without drawing on the ideas of others, nor HP for that matter. They just got to the patent office first. To push it to the wall, suppose Ward goes out and sues every company with an O/R tool and further suppose that Ward wins and his patents stand up in court. So then everyone runs to Ward's company to purchase the product based on his patent because there are no others available. Ward's product may or may not be the best, it just holds the patent and so he gains some sort of market share. Obsiously, this is unlikely and is just an extreme example.

    Patents have no bearing on whether the idea or method patented is the best or even original - just that the idea or method hasn't been patented.

    Thanks
    Ray
  85. "Patents have no bearing on whether the idea or method patented is the best or even original - just that the idea or method hasn't been patented."

    Certainly it has no concept of "best", but patents are based very strongly on originality via the concept of prior art. Patents traditionally are also supposed to be quite explicit and could not be overly broad - you can't patent manufacture of all drugs, but you can patent manufacture of one very specific drug (or perhaps a very narrow range of related drugs).

    The problem with software patents is that the USPO has, for some reason, allowed them into the system with very broad claims, and with apparently little research into prior art before approving them.

    The real test, of course, is the courts. I suspect eventually someone _will_ challenge one of these patents, and _will_ show that sufficient prior exists that the patent should be invalidated (and hopefully result in a slew of invalidations over time).

    In the case of open source - I think that they should continue going on as they have, most particularly since most of what they do is modern incarnations of prior art. On its face it's rather ridiculous that an entire product could be found infringing on a patent - patents aren't supposed to be that broad. As a worst case scenario a feature or small set of features would have to be pulled.

    As for Ward's statements - I've worked for several Fortune 500 companies plus some small companies, and there has never_ been any management push to background check developers for patent or copyright violations, or to rigorously check all code against all known copyrights and patents. The reason why is simple - it's not physically possible. A question to Ward - do _you_ have someone personally check all code and designs in your system against all patents in the USPO database on a regular basis? Somehow, I frankly doubt it. Pretty much _every_ product in existence is in violation of several patents - due to bogus patents that have been approved by the USPO in the past ten years. So by inference, Ward, your product should not exist by your own rules, because you are without a doubt in violation of some flimsy patent somewhere that should never have been approved, but did anyway.

         -Mike
  86. Well said Mike!
  87. I'm not sure it's so interesting.

    I have submitted a patent for what amounts to a Java tag interface. Give it a fancy name ("System and method for presenting personalized content on a web page") and anyone can be duped into filing it and taking it seriously. The whole patent process with software is a big-ass joke.

    That said, if lawyers start enforcing these rinky-dink software patents, then someone please let me know so I can switch careers, because at that point commercial (that is, for business, even if not for profit) software development would be impossible.

    Take care.
  88. Actually your email proves my innocence and implicates yourself.

    >
    > You say you are using common techniques in all O/R projects - without reverse engineering it isn't possible to know those techniques is it? So you've just proven that you're in the habit of reverse engineering techniques by your own public omission.
    >

    These techniques have been in the public domain for years. For example look here http://www.ambysoft.com/persistenceLayer.pdf and check out the copyright date and the method of publication (pre-dates CocoBase). For all you know you have violated Scott Ambler’s and/or Software Development magazine's copyright/IP.

    -ScottTavares-
    stavares at cox dot net
    ------------------------
    All comments are my own and do not represent that of anyone or any other orgination other then myself; Scott Tavares
  89. Such Arrogance[ Go to top ]

    <ward>
    As for the stupid assertions from gavin about us claiming they reverse engineered CocoBase - that isn't the point. Whether they reverse engineered or CocoBase or not is not what I claimed. What I claimed and still claim is that they publically stated that they don't believe software is patentable and that they will not honor this. Gavin has that changed? Do you recognize international laws? Can you guarantee that Hibernate doesn't violate the patents in countries where it is being distributed? Your license appears to pass ALL liability to the end user - are you denying this?
    </ward>

    Can you guarantee that Cocobase doesn't violate someones patent? How do you know that one of your engineers didn't take some code from someone and stuck it in the bowels of Cocobase waiting for someone to find it.

    You are full of hot air.

    If anything the response that Hibernate elicits from people like you whenever an article about it comes out only reinforces my decision to use it at work.

    Spare your comments about my legal responsiblity or liability. I never buy jewelry from brickmakers.
  90. Such Arrogance[ Go to top ]

    <ward>

    > As for the stupid assertions from gavin about us claiming they reverse engineered CocoBase - that isn't the point. Whether they reverse engineered or CocoBase or not is not what I claimed. What I claimed and still claim is that they publically stated that they don't believe software is patentable and that they will not honor this. Gavin has that changed? Do you recognize international laws? Can you guarantee that Hibernate doesn't violate the patents in countries where it is being distributed? Your license appears to pass ALL liability to the end user - are you denying this?
    > </ward>
    >
    > Can you guarantee that Cocobase doesn't violate someones patent? How do you know that one of your engineers didn't take some code from someone and stuck it in the bowels of Cocobase waiting for someone to find it.
    >
    > You are full of hot air.
    >
    > If anything the response that Hibernate elicits from people like you whenever an article about it comes out only reinforces my decision to use it at work.
    >
    > Spare your comments about my legal responsiblity or liability. I never buy jewelry from brickmakers.

    Actually what you get with CocoBase is patent indemnification. What we did when producing CocoBase was an exhaustive patent review and patent filing on our product. What customers receive with the purchase of a commercial product like CocoBase is indemnification from patent violation. If CocoBase does violate patents, we are responsible for that - we don't pass on that liability to the end user. Part of what customers purchase is insurance (yes we do have to pay both corporate liability insurance as well as having both inhouse and legal firms). What Hibernate and all open source projects do is pass on ALL of this liability to the end user.

    I don't have an issue with open source - in fact we work and integrate with several interesting open source projects. But what I do have a problem with is projects pass on this liability and then MISLEAD end users as to the risk. Basically the license of Hibernate passes ALL liability to you for any laws that the project contributors may break. Do you think that's a fair model?

    I don't...

    Ward Mullins
    CTO
    THOUGHT Inc.
    http://www.thoughtinc.com
  91. Such Arrogance[ Go to top ]

    You didn't answer my question. How can you guarantee that you code doesn't violate someone's patent. Not your product, but the code.

    Have you or your team inspected each line and compared it to existing patents? Of course not, that isn't reasonable.

    As for your statements that buying from you will somehow protect me, then why should anyone be worried about using Linux?
    Will you sign a contract accepting responsibility for an damages that occur if I am sued for using your product? Doubtful.

    Again, I'll take Hibernate and run.
  92. Patent indemnification?[ Go to top ]

    Thought this was quite hilarious, having worked with patents a bit myself:
    "Actually what you get with CocoBase is patent indemnification. What we did when producing CocoBase was an exhaustive patent review and patent filing on our product."

    So the claim goes that you have done a patent review for ALL patents in existence that CocoBase might infringe on? Are you sure you checked all the sorting algorithms and more "insignificant" parts?
    My experience would suggest: no chance!
    What 99,99% of all patent applicants do, is make searches for RELATED patents to the one they are actually applying for (anything else would be economical madness, even for the likes of MS and IBM). This in turn means that a patent may be unique in itself, but more insignificant parts that are not of interest to be patented might VERY WELL infringe on some patent where the part IS significant.

    Dont throw stone in a glas house. Unless you have unlimited resources and time, there is no chance you can ever be 100% sure that you are not infringing.

    And for the record: I do think patents should be valid, as long as they really are providing a significant innovation to existing solutions. Unfortunately, patents are valid for perhaps too long a period for software, and they are most definitely awarded to easily: 98% of all software-patents should be invalidated.
  93. Ward,

    I think you need to go back to your IP lawyers and ask them about prior art. I think you'll find that although their patent search didn't find anything, people were doing O/R mapping before your patent was filed.

    Check out my blog entry on this (if you can, it's Freeroller): http://www.freeroller.net/page/jcarreira/20030721#thought_inc_patent_and_prior

    Jason
  94. Thank you[ Go to top ]

    Ward,
    by posting such a eMail you show me that you are taking Hibernate very serious and Hibernate is a very good peace of software.

    Thank you.
    Mirko
  95. are you afraid?[ Go to top ]

    you seem to be really afraid of hibernate...
    :-)))))
  96. Top Down with Hibernate?[ Go to top ]

    If you need O/R mapping features not in Hibernate, just get CocoBase. It's the only O/R tool that outperforms RAW JDBC without caching enabled.


    Do you use something "faster" than JDBC to impement this product ?
    Or do you think we are too stupid to understand nonsences you have posted ?
  97. Faster than JDBC[ Go to top ]

    I don't want to defend Cocobase ... I don't use it.

    However, building ordinary JDBC the way most Java hackers do:

    Statement s = connection.createStatement();
    s.execute("SELECT FOO, BAR, BAZ FROM FUM WHERE ...");

    Will not give as good performance as a tool that makes use of some or all of the following:
    - Proper use and caching of PreparedStatements
    - Proper connection managements
    - Use of caching
    - Use of batch updates

    In other words, eliminating unnecessary round trips. O/R frameworks don't use JDBC the way hand coding does.
  98. Faster than JDBC[ Go to top ]

    Ah but Howard, we are comparing ORM implementations here. And Hibernate certainly _does_ use all those optimizations that you just listed.

    And if you look at Ward's claim, he certainly didn't mention anything about "compared to typical suboptimal JDBC written in a hurry by an average developer". That wasn't the thrust at all.....


    ;)
  99. Faster than JDBC[ Go to top ]

    ... and claiming that CocoBose was "the only O/R tool that outperforms RAW JDBC without caching enabled" is blatantly arrogant, as almost any O/R tool will outperform suboptimal manual JDBC code.

    After all, I consider Ward's legal FUD stuff the worse part of his posting. Obviously he must be _really_ afraid of open source competition. But if the situation regarding their patents was so clear, why hasn't he already taken everybody to court?

    I guess he would love to have the pre-2000 days back, when their only serious competitor was TopLink...
  100. Faster than JDBC[ Go to top ]

    After all, I consider Ward's legal FUD stuff the worse part of his posting. Obviously he must be _really_ afraid of open source competition.


    Considering CocoaBase's price, perhaps he should be.

    Ryan
  101. IMHO using an OO domain model for most applications increases development time and complexity. The DataAccessCommand pattern leverages the power of the database but provides an OO abstraction to the datasource. The DAC object can map db columns to custom types such as Currency and provide validation and formatting services. There is also less overhead involved and complete control on the SQL statements.

    However what are the disadvantages of the DAC pattern?

    What isn't possible with the DAC pattern?

    Maybe I haven't been around long enough, but I'm failing to see the benefit of O/R mapping solutions to using the database directly with the DataAccessCommand pattern.
  102. Maybe I haven't been around long enough, but I'm failing to see the benefit of O/R mapping solutions to using the database directly with the DataAccessCommand pattern.


    Have you tried to implement caching (either per session or per JVM level) with DAC pattern ? It's not that easy when you have a lot of relationships between objects and sooner or later you will end with cache inconsistency, mutiple value obejcts per entity in the cache...

    Other example: You have Employe entity in your application. You need to show screen with single employee based on it's id, to show list of employees that belong to an apartment, to show list of employes based on some other criteria...
    You need to have a number of SQL statements that fetch one or more employees, depending on criteria. Consider adding a field to an employee, you will need to update all of the SQLs, if you are using DAC pattern, only O/R mapping info with O/R mapping tool.

    MC
  103. <Cekovic>
    Have you tried to implement caching (either per session or per JVM level) with DAC pattern ? It's not that easy when you have a lot of relationships between objects and sooner or later you will end with cache inconsistency, mutiple value objects per entity in the cache...
    </Cekovic>

    There are JDBC caching solutions available. Or when using open source databases such as MySQL or Postgres can use master/slave cluster where the application server and slave (read-only db) can be on the same machine.

    <Cekovic>
    You need to have a number of SQL statements that fetch one or more employees, depending on criteria. Consider adding a field to an employee, you will need to update all of the SQLs, if you are using DAC pattern, only O/R mapping info with O/R mapping tool.
    </Cekovic>

    Can solve this problem with SQL generation tools. Eg.

    $employee_fields = employee_name, employee_title // etc
    select $employee_fields from employee where employment_commence_date > ?
  104. Hi,

    I have a general question. In what cases (functional or non functional requirements) would it pay to use a Persistence framework? When is it more favourable to use a persistence framework (like Hibernate or Entity Beans) than use regular programmed SQL called (for instance wrapped in a DAO).

    By the way, really like Hibernate..real easy to get started! Looks promising!

    Regards
    Wouter
  105. I was just trying to point out to however it was that saying "faster than JDBC" isn't completely bullshit (and of course Hibernate is going to do all the right stuff).

    Then I read up to where Ward said "faster than JDBC for identical SQL" and I'm thinking, yeah, that's bullshit.
  106. I was just trying to point out to however it was that saying "faster than JDBC" isn't completely bullshit (and of course Hibernate is going to do all the right stuff).

    >
    > Then I read up to where Ward said "faster than JDBC for identical SQL" and I'm thinking, yeah, that's bullshit.

    No it isn't, that's why we ship the source code to the test suite. Our library is more optimizable than the raw SQL is...

    It's hotspot that provides most of the magic, our engineers are just experienced enough to know how to make it happen :)

    What's bullshit is dismissing a claim without validating it - but there's a lot of that on this site these days...

    Ward Mullins
    CTO
    THOUGHT Inc.
    http://www.thoughtinc.com
  107. Faster than JDBC[ Go to top ]

    Ah but Howard, we are comparing ORM implementations here. And Hibernate certainly _does_ use all those optimizations that you just listed.

    >
    > And if you look at Ward's claim, he certainly didn't mention anything about "compared to typical suboptimal JDBC written in a hurry by an average developer". That wasn't the thrust at all.....
    >
    >
    > ;)

    Actually Gavin, both tests use Identical sql, so this is irrelevant - but then I'm not surprised you missed that obvious nuance. This is an apples to apples comparison with identical collection, objects and data.

    Ward Mullins
    CTO
    THOUGHT Inc.
    http://www.thoughtinc.com
  108. A cache is a cache...[ Go to top ]

    I hate to contribute further to the hijacking of this thread, but someone has to say it, so it may as well be me...

    Generally I agree with your point, but:

    This is a cache >> - Proper use and caching of PreparedStatements
    This is a cache (pool) >> - Proper connection managements
    This is a cache >> - Use of caching
    This is a cache (queue) >> - Use of batch updates

    Ward said: "[CocoBase is] the only O/R tool that outperforms RAW JDBC without caching enabled."

    Cheers.
  109. Top Down with Hibernate?[ Go to top ]

    If you need O/R mapping features not in Hibernate, just get CocoBase. It's the only O/R tool that outperforms RAW JDBC without caching enabled.

    >
    > Do you use something "faster" than JDBC to impement this product ?
    > Or do you think we are too stupid to understand nonsences you have posted ?

    We use JDBC under the hood, but our architecture makes it possible for hotspot to better optimize our code than raw JDBC does. We ship the test harness and testcases as source code with our product. I doubt you're too stupid to understand the concepts, but it can take years to produce a reliable implementation that achieves this kind of performance behaviors...

    Just my $.02

    Ward Mullins
    CTO
    THOUGHT Inc.
    http://www.thoughtinc.com
  110. If you need O/R mapping features not in Hibernate, just get CocoBase. It's the only O/R tool that outperforms RAW JDBC without caching enabled. It's integrated with every major IDE, App Server, Database, etc. It has free deployment, ships all major points of integration (including the Transparent Persistence Implementation and caching) as source code and it comes with a dedicated support staff, over 2000 pages of PDF documentation and 7 years of product maturity...


    I had the misfortune to be involved with a project that tried to use Cocobase in the spring of 2000, when I guess the product was at '4 years of product maturity'. This was with WebLogic 4.51 and SQL Server using the WebLogic SQL Server JDBC driver, supposedly a tested and supported combination. What a disaster! Mediocre documentation, a crappy properties file based templating system that was incredibly frustrating to use, and we went through something like half a dozen serious bugs in the space of maybe 3 weeks, with a bunch of interactions required to resolve each. Let me tell you that Hibernate after something like a a year and a half is a far far better product than Cocobase was after 4. And to top it off, when it started to become clear to their salesmen that they might not get a sale very soon (we were a low on cash dot com startup), the technical support guys got a directive not to talk to use any longer. Very ironic when something like 90% of our interactions were related to resolving bugs in their product.

    I have no clue what Cocobase has become in the meantime, but that experience turned me off your product and your company for life.

    And I may add that frankly, your attittude as evidenced in the post this is a reply to and subsequent ones sickens me. I can not see how anybody would want to have anything to do with you or your company after reading your posts.
  111. Top Down with Hibernate?[ Go to top ]

    I tried Bottom-up with an existing database schema, and I found that the E/R model was driving my Domain Model. As result, the Domain Model was not good enough. I tried to create the Domain Model, and then map it to the existing E/R model with patience... but still the existing E/R forced me to change the objects model.

    Then, I decided to create the E/R model that fits better with my Domain model, and migrate the existing data from the old database schema to the new one.

    I chose a 100% Top-Down approach and a data migration because the life cycle of my former application was over. Obviously, this is not going to be the case for most of the projects.

    So, if you start a new project, top-down. if not, try bottom-up.

    My two cents,
    Diego
  112. Hibernate caching[ Go to top ]

    Can Hibernate cache data objects across sessions or is caching only implemented within the scope of a single sesssion? Anybody know?
  113. Hibernate caching[ Go to top ]

    Hibernate has a pluggable caching API. I talked to Gavin at the TSS Symposium and he wants to add support for the upcoming JCache APIs (e.g. our Coherence clustered cache product.) It already supports (IIRC) JCS and OSCache.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
    Coherence: Easily share live data across a cluster!
  114. Hibernate caching[ Go to top ]

    http://swarmcache.sf.net/ looks like it has a plug in for
    Hibernate caching. Haven't used it though.

    --J
  115. Hibernate caching[ Go to top ]

    Just a note...
    There's no JCache spec (there's dying JSR "work in progress" to the best of our knowledge unless we’re again talking about OC4J). Calling any product or plugin as JCache-compliant is also misleading at best since there is nothing to be compliant with yet. I would refer to Proprietary vs. Standard Solutions. for further discussion of such "claims"...

    I also think that in general it is quite inappropriate for a person (in our case) on JSR expert group trying to push his own product as JSR-compliant while there wasn't even a public review of the spec... Having a commercial available product's influence on the JCP-based spec-in-work is the same ingredient that helped to propel Rambus vs. Infineon scandal.

    Regards,
    Nikita Ivanov.
    Fitech Labs.
  116. Hibernate caching[ Go to top ]

    Nikita: There's no JCache spec (there's dying JSR "work in progress" to the best of our knowledge unless we’re again talking about OC4J). Calling any product or plugin as JCache-compliant is also misleading at best since there is nothing to be compliant with yet. I would refer to Proprietary vs. Standard Solutions. for further discussion of such "claims"... I also think that in general it is quite inappropriate for a person (in our case) on JSR expert group trying to push his own product as JSR-compliant while there wasn't even a public review of the spec... Having a commercial available product's influence on the JCP-based spec-in-work is the same ingredient that helped to propel Rambus vs. Infineon scandal.

    I'd be glad to introduce you to the spec lead and see if we could get you onto the committee. Honestly. Drop me an email at cpurdy at tangosol dot com. I'm not paranoid; I think competition and other ideas in this space are great, and they'll only help us.

    What I told Gavin is what I've said elsewhere: the current JCache work is based on java.util.Map, and that happens to be all he needs, so I suggested he write to that, and so supporting any vendor (even now) would be as simple as a factory pattern. (I believe other vendors, such as Gemstone and Spiritsoft already support the Map interface, so it's pretty safe for interop.) I didn't want him or ask him to do any vendor-specific whatchamacallits or disclose any deep dark secrets.

    Your comments are bitter, but you have a very valid point, and I've said before that I wish it were different. Using membership in an exclusive "standards group" to gain a market advantage is quite possibly the least honorable of all software company pursuits. FWIW - I wish all the proceedings were public.

    However, I'd like to avoid detracting from an otherwise useful and positive thread on Hibernate. Feel free to email me.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
    Coherence: Easily share live data across a cluster!
  117. JCache API[ Go to top ]

    OK, where is the JCache API Cameron? I've googled it to little avail? Tangasol, SpiritSoft claim compliance but all I see on the JSR 107 page is some outdated Oracle base doc. Why's this API under wraps?
  118. Hibernate caching[ Go to top ]

    On the subject of deep dark secrets....are there any explicit penalties for disclosing JSR work that isn't public? No, I'm not interested in getting you in trouble Cameron :-) I just haven't studied the JCP charter in detail and don't know what precisely constraints people (other than implicit penalties, which by themselves can be quite painful).

         -Mike
  119. Hibernate caching[ Go to top ]

    On the subject of deep dark secrets....are there any explicit penalties for disclosing JSR work that isn't public? No, I'm not interested in getting you in trouble Cameron :-) I just haven't studied the JCP charter in detail and don't know what precisely constraints people (other than implicit penalties, which by themselves can be quite painful).

    That's a question that I don't know the "current" answer to. (The JCP has been updated twice since I read the rules, and the rules generally relax with each change.) I know that vendors represented on expert groups will often be publishing their own APIs, which (strangely enough) are similar to the spec APIs under consideration, but that's as much because the vendors are donating as "consuming".

    FWIW - I think a good step forward would be a "recent snapshot" of the state of each JSR, basically a "spec as of date YYYY/MM/DD", updated on a monthly basis or whenever available. Otherwise, other vendors and participants in the community are at a disadvantage for no defensible reason. And even worse, valid input is deferred until the spec is "done". I think the criticisms from Fitech are perfectly valid. Before I joined the expert group, our product was in the same unenviable position of being "not JCache compliant" for a spec that was "not available".

    Peace,

    Cameron Purdy
    Tangosol, Inc.
    Coherence: Easily share live data across a cluster!
  120. Hibernate caching[ Go to top ]

    are there any explicit penalties for disclosing JSR work that isn't public?

    Yeah. Why the cult of discipline in a body that was intended to be more community than corporate?
  121. Persistence Patents[ Go to top ]

    Persistence currently holds U.S. Patents Nos.

    5,499,371 March 12, 1996
    Method and apparatus for automatic generation of object oriented code for mapping relational data to objects


    Abstract
    A method and apparatus are provided for using an object model of an object-oriented application to automatically map information between an object-oriented application and a structured database, such as a relational database. This is done by taking into account all of the semantics (implications) of an object model, such as inheritance and relationships among object classes, and using these semantics to generate a minimal set of routines for each object class that manipulate the object and other objects to which it is related or from which it inherits. The generated routines, when executed, provide transparent access to relational data or other field-delimited data. Object classes and routines generated using the method encapsulate all the details of database access, such that developers (computer programmers) can write object-oriented applications using those object classes without any explicit reference to or knowledge of the underlying database or its structure. By working with the objects, the user of such applications transparently manipulates the database without needing to know anything of its structure. Applications can be written using the object classes to transparently integrate information from multiple databases.



    5,615,362

    Method and apparatus for managing relational data in an object cache


    Abstract
    In an object-oriented application being executed in a digital computing system comprising a processor, a method and apparatus are provided for managing information retrieved from a structured database, such as a relational database, wherein the processor is used to construct a plurality of object instances, each of these object instances having its own unique object ID that provides a mapping between the object instance and at least one row in the structured database. The processor is used to construct a single cohesive data structure, called an object cache, that comprises all the object instances and that represents information retrieved from the structured database in a form suitable for use by one or more object-oriented applications. A mechanism for managing the object cache is provided that has these three properties: First, through a technique called key swizzling, it uses explicit relationship pointers between object instances in the object cache to reduce the volume of queries to the structured database. Second, it ensures that only one copy of an object instance is in the cache at any given time, even if several different queries return the same information from the database. Third, the mechanism guarantees the integrity of data in the cache by locking data appropriately in the structured database during a database transaction, flushing cache data at the end of each transaction, and transparently re-reading the data and reacquiring the appropriate locks for an object instance whose data has been flushed.


    5,706,506

    Method and apparatus for managing relational data in an object cache


    Abstract
    In an object-oriented application being executed in a digital computing system comprising a processor, a method and apparatus are provided for managing information retrieved from a structured database, such as a relational database, wherein the processor is used to construct a plurality of object instances, each of these object instances having its own unique object ID that provides a mapping between the object instance and at least one row in the structured database. The processor is used to construct a single cohesive data structure, called an object cache, that comprises all the object instances and that represents information retrieved from the structured database in a form suitable for use by one or more object-oriented applications. A mechanism for managing the object cache is provided that has these three properties: First, through a technique called key swizzling, it uses explicit relationship pointers between object instances in the object cache to reduce the volume of queries to the structured database. Second, it ensures that only one copy of an object instance is in the cache at any given time, even if several different queries return the same information from the database. Third, the mechanism guarantees the integrity of data in the cache by locking data appropriately in the structured database during a database transaction, flushing cache data at the end of each transaction, and transparently re-reading the data and reacquiring the appropriate locks for an object instance whose data has been flushed.


    6,078,926

    Method and apparatus for performing multi-class object fetch in a database management system


    Abstract
    A method and apparatus is provided for populating an object-oriented data structure from data stored in a conventional relational database. In particular, a method and apparatus is provided for transforming the results of a complex relational database query such as a join query (i.e., where each row of results from the relational database corresponds to data from multiple tables) into a network of inter-related heterogeneous objects contained an object-oriented data structure. Further, the present invention provides a method and apparatus for more efficiently knitting the relationships between newly created objects in an object-oriented data structure.


    In short, any of these 4 patents should put in question anybody's work on OORelational mapping. However, if you notice the earliest patent here is March, 1996. TopLink had been existence prior to that so there's a big question about prior-art. TopLink in 1996 rewrote their OO mapping toolkit from Smalltalk to Java. The smalltalk version existed since 1992.

    Speaking about prior-art, papers written in OO-patterns date back to 1995 :http://www.objectarchitects.de/ObjectArchitects/orpatterns/index.htm. Now these are design pattern papers so their talking about stuff that is common recognized practices. Mater of fact, the comprehensive design pattern paper "Crossing the Chasm" was written back in 1995 ftp://members.aol.com/kgb1001001/Chasms/chasms.pdf prior to any of Cocobase claims. The paper cites object magazine papers that date back all the way to 1993. Now keep in mind, these are not "new discovery" types of research, this are papers on generally understood principles i.e. "design patterns".

    So in short companies like Persistence and Cocobase have been patenting concepts that have been well established in computing circles.

    In short, the only one who's going to make money on this are the lawyers, and its at the expense of the community as a whole. If I were Cocobase I would avoid exploring this "patent" discussion further, lest they want to be exposed to even more lawsuits by competitors.
  122. Persistence Patents[ Go to top ]

    <perez>
    In short, the only one who's going to make money on this are the lawyers, and its at the expense of the community as a whole. If I were Cocobase I would avoid exploring this "patent" discussion further, lest they want to be exposed to even more lawsuits by competitors.
    </perez>

    I agree. There are several ways of competing: price, quality, features and so on. Ward seems to have chosen the "legal" way to compete. Instead of offering a vastly supreme product they will try to kill of their open-source counterparts, the "illegal combatants", using non-technical "legal" means.

    As I understand it software cases are nearly impossible to win. In this case the only plausible results will be that Though Inc will go bust and the lawyers will be rich. If they choose to go down that path.

    What we're seeing is the logical implications of the open-source initiative, Hibernate/CocoBase being the smaller analogy to Linux/SCO. A commercial company trying to fend off the open-source competition using any possible means.

    Who will win? Folks, we're living in exciting times.
  123. Re: Persistence Patents[ Go to top ]

    So in short companies like Persistence and Cocobase have been patenting concepts that have been well established in computing circles.

    I can't say anything about CocoBase, but I think you might want to re-read the Persistence patents again before saying they cover well-established concepts. The focus of the abstracts you provided were (a) automatic generation of O/R code from a model, and (b) O/R combined with caching. And when you get further into the details, the differentiation from "well-established concepts" becomes even more clear, i.e., the patents are for inventions that includes more than just gluing a cache to O/R mapping. So a product that provides just an O/R solution, or just a caching solution, seems unlikely to be infringing on these patents. (But IANAPL!)

    I am a former Persistence employee, so I am clearly not speaking officially here.

    My personal opinion is that some software patents are worthy of patent protection, but many many more are not. I believe that Persistence's patents are of the former variety. I have no opinion of CocoBase's patent(s).
  124. Complete Solution[ Go to top ]

    Folks

    All said and done... can anyone here say that Hibernate is a complete solution that let's you design a sizable application with say 100 tables? In theory yes but in practice will managing the numerous files get a bit cumbersome and less productive maybe?

    I think it's an excellent effort and maybe will prove it's mettle if it keeps evolving - please nothing on the patent front that's been debated enough - But can it be USED (not trusted but USED) for collaborative development amongst teams, not 1 team but N teams?

    I guess - and I am using words very liberally here - I'd like to see hibernate debated as a usable/UI driven enterprise solution not a "useful for me as a developer" solution.

    No flames please. If you don't have a constructive suggestion/arguement/point refrain yourself.

    thanx
    PS - Comments strictly my own. Do not represent anyone else.
  125. Law Suit?[ Go to top ]

    So where's the law suit? I mean.. Ward (was that his name?) from Thought seemed pretty sure of himself.. so have they filed??

    Oh by the way... I want to use a FOR loop in my code.. is that OK?? Or has someone patented it.. if they have what about WHILE loops? oh.. perhaps loop constructs in general have been pateneted.. DAMN my code is about to get monolithic!!

    This was a funny thread.. I love the way Ward goes on about the law.. he and his "team of laywers" (sounds more like a buddy who just started law school to me)
  126. Hibernate caching[ Go to top ]

    Calling any product or plugin as JCache-compliant is also misleading at best since there is nothing to be compliant with yet.

    Hmmmm. Is JCP an ethical body?
  127. Introduction to Hibernate[ Go to top ]

    I agree with many of the comments posted here. I have found it works very well.. but you will tear your hair out when you start to debug some complex relationships and can't see why objects are getting lost, updated, etc. The hibernate web site is Wiki based, which is great and helps to keep information up to date, which is quite helpful.

    For beginners, read some of the discussions on maintain session state in the view, if you are using lazy loading in a web server. You need to use filters or something similar to make sure your Session is active if you access data that is being lazy loaded.

    Also, check and double check your mappings for 1-n and n-m mappings. If the tools support Hibernate2, its probably worth it to learn the tool too. (AndroMDA, XDoclet) I like to write the mappings manually.. just to learn the ins and outs.. but it does loose its charm over time. (The mapping writing, not hibernate.)

    I've got a web site with (currently) 32 mapped objects, and it works wonderfully. The other day I tuned MySQL to turn on query caching, and was suprised to see it not being hit much. The JCS cache in Hibernate was working quite well, and keeping unnecessary traffic off the DB. Makes things nice and quick!
  128. hibernate is a really good product[ Go to top ]

    I got it to work with composite keys, one-to-many relationships in a Sybase and JBoss environment. I'd like to learn more about the advanced features such as caching.
  129. Querying[ Go to top ]

    One additional thing that I learnt from experience is that Session flushing needs to be understood well while writing actual persistence logic. Session.flush() syncs the Hibernate in-memory status of your DML operations on objects to the JDBC connection. You can call it explicitly or have Hibernate do it for you - Hibernate has auto-flushing features that can be disabled. Flushing happens on commits as well.

    Over-flushing is a mistake. This isn't necessary, and can even be a bad thing as far as performance is concerned. The other thing is that exact Hibernate flushing behavior is sort of dependent on the order of operations within the scope of a particular transaction, particularly iteration.

    From experience I've also realized that you don't need to over complicate things. Queries always return the right data.

    So read the Hibernate literature on this before you write lots of code.
  130. Has anyone also tried OJB, Castor or other open source persistence frameworks? Can you give a brief comparison in terms of stability, performance, ease of use, etc.?
  131. This is a much discussed topic. The first thing that is typically done is to cite: http://c2.com/cgi/wiki?ObjectRelationalToolComparison

    Now that that's out of the way...

    OJB's approach to APIs is pretty different that Hibernate's.
    Take a look at OJB
    http://db.apache.org/ojb/features.html
    http://db.apache.org/ojb/tutorial3.html
    http://db.apache.org/ojb/query.html
    and decide for yourself whether you like the OJB approach to doing things.

    As for Castor JDO, I've heard some negatives from colleagues about performance as far as scaling up goes. Also remember, if you are planning to use Castor so that you may leverage JDO, that is probably not the best solution, as "Castor JDO doesn't comply with the SUN's JDO specification". http://castor.exolab.org/jdo-faq.html.

    Take a look at http://www.ogilviepartners.com/OpenSource.html for information on open source JDO implementations.

    Sandeep.
  132. There is a GUI[ Go to top ]

    Criticisms that there is no Hibernate GUI aren't even true:

    http://www.intellij.org/twiki/bin/view/Main/HibernateTools
  133. There is a GUI[ Go to top ]

    Criticisms that there is no Hibernate GUI aren't even true:

    >
    > http://www.intellij.org/twiki/bin/view/Main/HibernateTools

    Also, you can use Middlegen as part of your development process.

    For a list of tools you can use with Hibernate (besides the round trip tools that come with hibernate-ext), see the section titled Projects With Hibernate Support/Integration at http://hibernate.bluemars.net/27.html.

    Sandeep.
  134. There is a GUI[ Go to top ]

    Criticisms that there is no Hibernate GUI aren't even true:

    >
    > http://www.intellij.org/twiki/bin/view/Main/HibernateTools

    Yes, but you can't use it under Linux (full of errors).
  135. Dirty styles in querying[ Go to top ]

    There's one thing in Hibernate querying that I found help break through some barriers when dealing with messy queries. For example, I had a query situation where I had three trees (each an entity with parent child relations), except that these were joined to each other. Yeah, each tree linked to the other two tree but at different levels and nodes. Please don't ask me what the exact scenario was. I am not allowed to discuss the details. Sigh.

    Anyway, the point is that I had a very complex query that I finally implemented as a 200 line long T-SQL stored proc in MS Sql2k, and which I subsequently ported to Oracle PL/SQL. But my solution to integrating things into the Hibernate framework was to return a set of primary keys that defined the results set, and then plug those keys back into Hibernate. So,..

    ArrayList ids;
    //initialize ids with pk values using a custom data access code block.
    //in my case, an ArrayList of java.lang.Integers.
    //You can even use Hibernate to run this query if you want to keep things
    //within a single transaction strategy
    Query query = sess.createQuery("from MyClass m where m.id in (:idsList)");
    query.setParameterList("idsList", ids);
    List results = q.list();

    This sort of querying is probably not best practice as far as Hibernate goes. But it works well if you need it, as it lets me leave the Hibernate framework and return to it seamlessly. Once I retrieve my objects using Hibernate, I can traverse relationships, do updates/deletes, avail of caching and so on.

    The reason I mention this? Well, this was "sort of" a design pattern that I used to break querying obstacles that I could not resolve any other way. For all my other querying needs, HQL works just great.

    Sandeep
  136. Thanks[ Go to top ]

    I would like to thank everyone for their comments and feedback. If there is a specific aspect of Hibernate that you'd like to see covered, please let me know.
  137. email to Thought Inc[ Go to top ]

    I have just sent an email to the Thought Inc sales team and the CEO with a link of this discussion. I do do DO hope that the CEO gets a good look at how old ward boy here i literally beating away potential customers.
    Its also unfortunate that the really (initially) interesting discussion just became a silly patent law-suit blah blah because of that ****** (feel free to fill in the blanks ;)
    It would be great if we could just start a new thread about hibernate, and anyone who has any tips, insights etc. could share it with the rest of us. And lets block of wannabe lawyer (or wannabe techie) Ward from it.

    Hope to see a great discussion ahead - cheers!
  138. email to Thought Inc[ Go to top ]

    I have just sent an email to the Thought Inc sales team and the CEO with a link of this discussion. I do do DO hope that the CEO gets a good look at how old ward boy here i literally beating away potential customers.


    Um, its conceivable that at Thought Inc., the buck stops with Ward. So...
  139. email to Thought Inc[ Go to top ]

    Yeah, I believe he's President and CTO....aren't those the same two titles held by BG at MS?

    Oh well. It's his bus. If he wants to drive it off a cliff, more power to him.
  140. email to Thought Inc[ Go to top ]

    For those who might be interested, the support guys at Thought Inc could not be more rude if they tried (in response to the email i sent). Apart from accusing *engineers like me* of putting my company in *danger* by using patent-violating products, they bashed (rather tried) a lot of replutations.
    They r RUDE, UNPROFESSIONAL and even if cocobase was the last OR mapping tool on earth i wud not touch it.
    Instead of being so defensive and harping on patents, why not tell us REAL REASONS why cocobase might be more superior?
    We haven't heard from Ward from a while. Nothing further to say? Hey, I shud just be happy he's keeping his stupid comments to himself.
  141. I have not used Hibernate on any real project. However I been trying to learn it and is my first choice (based on community feedback) for any project that may need OR mapping layer. The problem is that its hard to find a comprehensive list of tutorials/articles/tools that I can use to learn and develop. e.g. before this post, I wasnt aware of the relationship documentaiton at http://www.xylax.net/hibernate/

    It would be really good if hibernate or some dedicated fellow would create a list of all hibernate related links that developers can take advantage of.
  142. Check the Hibernate website[ Go to top ]

    It would be really good if hibernate or some dedicated fellow would create a list of all hibernate related links that developers can take advantage of. <<<


    External Documentation: http://hibernate.bluemars.net/78.html
    Related Projects: http://hibernate.bluemars.net/27.html
    Community Area: http://hibernate.bluemars.net/36.html
  143. Need programmers with Masters degree in Law[ Go to top ]

    Hi,

    We need to work on a new OR mapping tool. We need people with Law degree who are interested in programming. Need at least 5 year experience writing code by searching though patents and making sure none are violated. We provide high speed connection to the patents database and are planning on having it hosted within the company for better productivity.

    We are also working on a eclipse plugin that would search the patents database for similar looking code, comments, words and ideas and then add matches as warnings to your task list.

    Please send your resume to noviolations at patentsonlyworld dot com

    Thanks,
    HR
  144. OMFG![ Go to top ]

    My eyes are wet with tears from laughing so hard at this thread! It's Friday night here in Tokyo, and I've had way more fun reading this than I could have had in a night of hard drinking until 8AM.

    Someone wondered "where's Wald^H^Hrd", but I'm sure he got his pee-pee slapped for being such an idiot and had to take a bunch of valium so he could take a load off. You can't keep a good lawyer down for long though, so once it wears off, you can be sure that he'll be out chasing more ambulances or biting more ankles of people with good ideas *somewhere*...

    I have this theory that companies mimick their founders. I used to work at a sillycom valley sweatshop where the "CEO" once got upset about something or other, reached for the first thing in reach on his desk and launched it across the room. Only the item happened to be a screwdriver, the vector it was launched on was about a half-degree shy of someone's head and the velocity was sufficient for the item to bury itself into the drywall. He was also an engineer in his glory days, and these two sound very similar. Anyway, the rest of the company, like all the companies I've had experience with, tended to pick up the bad (and sometimes good) tendencies in operational manners for political survival, and eventually became neurotic wrecks. I bring this up related to the posting about the accusatory responses from ThoughtInc's tech support department (what an ironic name). "Like father, like son", I guess. These guys won't last much longer, I predict, and while Ward may continue his sabre-rattling drama until his bones become brittle, his lawyers (and his power) will defect as soon as the license revenues dry up. People always get what they deserve, it seems (count me in there too...)

    As for the product itself, I had the misfortune to eval TopLink once in 2000 and am glad to hear that I didn't miss anything for not eval'ing Cocobase. Not like I ever would at this point, Ward made sure of that.

    I guess I'll make another post here after this one to talk about what I came here for. Rock on, folks!
  145. OMFG![ Go to top ]

    As for the product itself, I had the misfortune to eval TopLink once in 2000 ...

    I tried it then too. The design tool regularly crashed, corrupting the project's contents and losing any changes since whenever I last remembered to manually copy the project's XML file. This was when TopLink had just announced run time fees would soon be imposed.
  146. I lost 2 days of work because your "Introduction" to HIBERNATE IS WRONG!

    It doesn't work! The forwign key is not added to the child table. You forgot to add the parent.addChildren(child) method in your parent!

    Damn... this is not serious.


    Etienne.
  147. Problem with Many to many relationship[ Go to top ]

    Hi,
    Can somebody help me with many to many relationship. I have created the required hibernate mapping file it works fine. I need some example as to how to store the objects. One to many and Many to one is quite simple just save one object rest of the dependency gets save. Below is the mapping file attached.
    Thanks in advance
    regards
    prasad chandrasekaran

    <hibernate-mapping>
        <class name="presci.walnut.manytomany.Author" table="author">
            <id name="id">
                <generator class="identity"/>
            </id>

            <property name="name"/>
            <set name="work" table="author_work" inverse="true" lazy="true">
             <key column="author_id"/>
             <many-to-many class="presci.walnut.manytomany.Work" column="id"/>
            </set>
        </class>
        

        <class name="presci.walnut.manytomany.Work" table="work">
            <id name="id">
                <generator class="identity"/>
            </id>

            <property name="title"/>
            <set name="author" table="author_work" inverse="true" lazy="true">
             <key column="work_id"/>
             <many-to-many class="presci.walnut.manytomany.Author" column="id"/>
            </set>
        </class>
        
        
        <class name="presci.walnut.manytomany.Author_Work" table="author_work">
         <composite-id>
         <key-many-to-one class="presci.walnut.manytomany.Author" name="author" column="author_id"/>
         <key-many-to-one class="presci.walnut.manytomany.Work" name="work" column="work_id"/>
         </composite-id>
        </class>
      
    </hibernate-mapping>
  148. JAXB, Hibernate and Relation DBs[ Go to top ]

    Hi all, my first post here.

    I've had to learn and use both JAXB and Hibernate in less than a week. Needless to say, and rather profound experience. :)

    Anyway, I set up my database (SQL Server 2000...) according to the spec I was given with foreign key constraints, etc. Then, I set up my XSD file to create my classes (via an Ant build) using JAXB.

    Next came the Hibernate mappings, and these went well, till I hit my one-to-many relationships. Using your example of the teams, I saw what I need to do. Taking that, into XML, you could have (simplistically):

    <team>
      <player>
        <player_id>153</player_id>
        <player_name>Pele</player_name>
      </player>
      <player>
        <player_id>18</player_id>
        <player_name>Maradona</player_name>
      </player>
    </team>

    As you can see, it's a (1 team) to (many players). Standard XSD would list the <player> as a 0/1 -unbounded element of <team>. And would mean that the team class would have a list of players, but the player class would have no reference to the team. This causes issues with mapping (HBM) files. Basically, I have 2 options, one is to edit the player class (or extend...perhaps) or to modify the XSD file itself, to give the player a team element...but this in turn could well create an infinite loop? - with the team having 0-m players which have a team which has 0-m players...?

    Does anyone have much experience with JAXB and Hibernate and/or any ideas as to how I might solve this? Hibernate does as it says, and I like the functionality, just that I start with XML, and not my own pre-defined classes, as some XML elements may not appear.
  149. JAXB and Hibernate[ Go to top ]

    Garrick,

    you might be interested in HyperJAXB project, which generates Hibernate mappings for JAXB classes automatically.

    Please visit http://hyperjaxb.dev.java.net.
  150. Dears,

    I am using Hibernate for a while in some web applications. I introduced the situation in Hibernate User-Forum as (http://forum.hibernate.org/viewtopic.php?t=937513). Some guys suggested me to introduce the issue in Atlassian Hibernate Project(http://opensource.atlassian.com/projects/hibernate/browse/HB-1378). Please read the topic. Am i right in this issue?I am eagerly looking for your feed backs.