1
votes

I'm wondering why is ORM so popular and everybody is using ORM implementations of JDO and JDA specifications, instead of using object databases that implements these specifications as well. The performance is much better using Object database.

objectdb (JDO, JPA) db4o (JDO)

Am I right if I say that it is because developers need to use both object model and relational model in their applications ?

What about ORDBMs ? Is there any ORDBM (which worths a try) around or can Object Relational Mapping together with relational database be considered ORDBM ?

3
because nobody ever got fired for buying Oracle ;)Gugussee
Also note that most "OO programs" are really not doing OO at all. Look at it this way: equals and hashCode the way they're done in Java are fundamentally incompatible with OO (this is explained nicely in "Effective Java" by Joshua Bloch and also in a great Bill Venners/Martin Odersky interview on Artima etc.) [it is a fact btw, no need to argue: it is impossible to meet the equals/hashCode contract in a non-final class and interfaces have issues too]. Yet hardly anyone has trouble in Java with equals and hashCode. Why? Because most Java programs are not really OO programs.Gugussee

3 Answers

3
votes

The main reason why people use an RDBMS with an OR Mapper rather than an object database is that RDBMS are deeply entrenched, well understood and well supported by everyone. If you use an object database you'll have problems

  • finding people to support it
  • using your existing tools for reporting, backups, etc.
  • having other applications access the data

There's probably also still a lot of doubts (whether justified or not I can't say) whether object databases can really deliver the same or better performance and safety in a real word scenario.

1
votes

In my experience, using an object database resulted in much less code, and a much cleaner project.

It made the difference between a 6-week learning curve for an RDBMS + ORM (LINQ-to-Entities) and a 1-week learning curve for object databases (for db4o).

0
votes

The commonly used DBMSs you may be familiar with (e.g. Oracle, SQL Server, DB2, MySQL, PostGreSQL) are not relational. They are based on the SQL model, which is something quite different even though it resembles the relational model in some ways.

An Object-Relational DBMS means the same thing as a Relational DBMS. It's another way of saying that a RDBMS in principle will support any unlimited set of data types and relational operations upon them. O/R Mapping software really only addresses the fact that SQL DBMSs don't do that very well.