InfoQ

News

Panel: Java Object Persistence: State of the Union

Posted by Floyd Marinescu on Mar 07, 2008 11:33 AM

Community
Java
Topics
Data Access
Tags
Hibernate,
db4o,
TopLink,
ORM,
JPA
InfoQ.com and ODBMS.org (Roberto V. Zicari) asked a group of leading persistence solution architects their views on the current state of the union in persistence in the Java community, published here:  Java Object Persistence: State of the Union.

The panelists included:
  • Mike Keith: EJB co-spec lead, main architect of Oracle Toplink ORM
  • Ted Neward: Independent consultant, often blogging on ORM and persistence topics
  • Carl Rosenberger: lead architect of db4objects, open source embeddable object database
  • Craig Russell: Spec lead of Java Data Objects (JDO) JSR, architect of entity bean engine in Sun's appservers prior to Glassfish

Questions:

  1. Do we still have an "impedance mismatch problem"?
  2. In terms of what you're seeing used in the industry, how would you position the various options available for persistence for new projects?
  3. What are in your opinion the pros and cons of these existing solutions?
  4. Do you believe that Object Relational Mappers are a suitable solution to the "object persistence" problem? If yes why? If not, why?
  5. Do you believe that Relational Database systems are a suitable solution to the "object persistence" problem? If yes why? If not, why?
  6. Do you believe that Object Database systems are a suitable solution to the "object persistence" problem? If yes why? If not, why?
  7. What would you wish as a new research/development in the area of Object Persistence in the next 12 months?
  8. If you were all powerful and could have influenced technology adoption in the last 10 years, what would today's typical project use as a persistence mechanism and why?
  9. Any parting words about this topic?
See also other content related to ORM and persistence at InfoQ.com/dataaccess.

2 comments

Reply

Several points I wonder. by William Martinez Posted Mar 12, 2008 7:37 PM
the “impedance mismatch” problem by Paul Korney Posted Mar 19, 2008 5:11 PM
  1. Back to top

    Several points I wonder.

    Mar 12, 2008 7:37 PM by William Martinez

    It is understood from the whole set of comments that using relational databases as a de-facto standard is not a good idea but a cruel reality. And I agree. Question is: Where is the mismatch? The round table topic was actually Java Object persistence. That is, we are talking about where/how to store Java Objects. Application data may be a very different kind of animal, which may not be as easy modeled into objects. Taking from Ted’s phrase “From each technology, according to its abilities, to each project, according to its needs”, some domains may require massive data manipulation that may dictate the need of Relational, Object or even Native XML databases. This raises two more questions: Is the object modeling capable of handling all kinds of data requirements from the applications? Is it a requirement to persist the object model into a non-suitable data representation? I find several good points in the discussion about these. To me, it is clear that storing the Objects into any other thing rather than an OODBMS goes against the natural way of how things should be. But it is also clear that Object modeling is not at all suitable for all data necessities. Ted’s idea of hybrid solutions, where there is separation between the Business logic and the Data processing logic (using stored procedures) fits quite well into a model of “Everyone works on what he/she excels” (I blogged of this once, I recall). Of course, it may be hard for one developer to master both SP coding and Java coding. But it is worse to allow an automatic tool handle one of both. I will bet for two developers, each a master in their own world. Same for technology: Modeling the BL solutions in Java and the Data solution in any SQL like language (pick the flavor XML, OO or RDB). But then, where do I store my objects? A different question from Where do I store my data? I guess nobody things on having two different databases, or even three if XML is involved too! But, then, I see it now as a far away possibility... Anyway, very interesting points from all of you. Thanks. William Martinez Pomares

  2. Back to top

    the “impedance mismatch” problem

    Mar 19, 2008 5:11 PM by Paul Korney

    Thanks for having this discussion; as a practitioner I am happy to see less emotion and more good thought - and good solutions! - around this topic. I would, though, like to comment about the “impedance mismatch” problem. Ultimately in our applications we're just trying to create and persist some state (data) in such a way that it survives (persists) beyond each execution of our application and can later be retrieved. If this is the only data management requirement then we usually have many simple options available within the application's technical environment, be it OO or otherwise. Therefore, I don't think the “impedance mismatch” concept is relevant to this situation. More than likely though, there are additional requirements that can be characterized by the need to *share* the persisted state with other applications in a useful way. These sharing requirements appear to belong to one of two technical categories: 1)where the set of applications that wish to share common data already share common type definitions; for example, different cell phone applications sharing a common phone book class. 2)where the set of applications use different types for representing similar data; for example, two Java applications from different suppliers probably don't share a common class definition for a common domain type like 'person'. The first class of sharing requirements is very well served by using database solutions like db4objects. As long as every application has access to the same type definitions, applications can share domain object state pretty seamlessly. Again, the impedance mismatch concept doesn't really apply here. It is this second category of data sharing where the impedance mismatch concept applies. If it is correct to characterize the impedance mismatch in these general terms – that is, as being a lack of common type definitions shared by the applications wishing to share data – then the impedance mismatch issue is not just a OO to SQL problem but one that is common to all application integration problems. I bring this point up because I don't think RDBs should be singled out especially for having this impedance mismatch problem; RDBs ought to be thought of as just like any other application system with an interface through which applications can access their functions and state. Basically an RDBMS is just an application that happens to provide relational style data management functions. So yes, accessing a RDB requires you to be familiar with SQL and the particular database you're trying to use. And yes, you'll have to somehow map this to your specific application(s). But this isn't any different from, say, working with an ERP system, a web service or some other separately designed application system. So from this I draw two conclusions: 1.A typical RDB is not a very appropriate object persistence mechanism (and never tried to be). Let's use native mechanisms (like OODBMS) whenever we can in our apps. 2.When we can't, let's characterize whatever mapping layer we'll use instead as an integration component and keep it completely separate from our domain objects. In this regard, I think Neward's suggestion “adding sets as a first-class concept to our programming languages” would make this much easier. Thanks!

Exclusive Content

Measuring Agile in the Enterprise: 5 Success Factors for Large-Scale Agile Adoption

Michael Mah analyzes the development process in 5 companies: 2 Agile (one of them BMC) and 3 classic. He presents the factors which contributed to the success of BMC's Agile adoption.

Tom Preston-Werner on Powerset, GitHub, Ruby and Erlang

In this interview filmed at RubyFringe 2008, Tom Preston-Werner talks about how both Powerset and GitHub use Ruby and Erlang, as well as tools like Fuzed, god, and more.

David Laribee on Alt.NET and its Mission

David Laribee discusses the purpose of ALT.NET, its mission and future.

Discover RailsKits and Stop Writing Redundant Code

Ruby on Rails has become a popular Ruby framework for creating web applications in recent years. An aspect of creating a web application is the need to repeatedly create the same base functionality.

A Formal Performance Tuning Methodology: Wait-Based Tuning

Steven Haines talks about tackling web application performance tuning by proposing a method called wait-based tuning.

Shaw and Fowler About Forging a New Alliance

Shaw and Fowler talk about the need for a new relationship between the business department and the IT department. Studies have shown that projects mostly fail due to miscommunication between the two.

How to GET a Cup of Coffee

In this article, Jim Webber, Savas Parastatidis and Ian Robinson show how to drive an application's flow through the use of hypermedia in a RESTful application.

Archaeopteryx: A Ruby MIDI Generator

Eccentric artist turned overnight anti-celebrity, Giles Bowkett captures the heart and soul of RubyFringe as he demonstrates his revolutionary Archaeopteryx MIDI drum pattern generator.