Prior knowledge or experience in database programming (SQL, JDBC, ORM, JPA, etc.) is not required, but some background in using the Java language is essential.
- ObjectDB is unique in supporting the standard APIs. It is the only object database with built in support for the Java Persistence API (JPA). It also supports a more recent and advanced version of the Java Data Objects (JDO) API than competing object databases.
- By using a standard API such as JPA you can keep your application portable. If necessary, you will always be able to switch to any relational database by using an ORM JPA provider such as Hibernate, EclipseLink or Open JPA.
- Another advantage of using a popular API such as JPA is the availability of experienced developers, supporting community, forums, IDEs support, tools, books, tutorials and sample code.
- ObjectDB is also unique in supporting features that are usually available only in relational databases. For example, most object databases do not support user defined primary keys, even though this is very useful in almost every application. ObjectDB supports user defined primary keys including composite primary keys.
- The support of two standard APIs (JPA and JDO) by ObjectDB minimizes the risk that during development you may find that an essential feature is missing. For example, some competing products do not support aggregate queries (max, min, count, sum and avg). ObjectDB supports rich queries, including aggregate queries, as part of its support of JPQL (JPA Query Language) and JDOQL (JDO Query Language).
- ObjectDB is faster than other products.
By using ObjectDB you can reduce development time and costs and improve your application performance.
Reducing Development Time and Costs
ObjectDB makes database programming easier and faster. The ability to store ordinary objects in the database directly can simplify the code significantly. Less (and more simple) code to write, debug and test, as well as a much easier learning curve leads to shorter time to market and saving in the total development time and costs.
ObjectDB is especially designed to store and manage graphs of objects efficiently. That can accelerate the execution time of object oriented applications significantly. For instance, collection and map fields can be stored by ObjectDB simply as part of the containing object. Relational databases lack that ability and require multiple tables, multiple records and join operations in order to support multiple values (even for a simple data structure such as a collection of strings).
In addition, eliminating the intermediate ORM layer further accelerates applications. For instance, ObjectDB processes JPQL (JPA Query Language) and JDOQL (JDO Query Language) queries directly, where ORM tools first convert these queries to SQL and then transition the SQL to the DBMS for execution through a JDBC driver. Obviously, elimination of conversions, translations and other intermediate operations leads to better performance.
As noted above, using ObjectDB instead of a relational database and ORM combination is easier and leads to better performance. ORM tools, however, are very useful where the use of a relational database is mandatory (e.g. as a result of a customer request or when a new application is developed for an existing old relational database).
By using the Java Persistence API (JPA), you can develop portable applications that can use both ObjectDB and relational databases. This way you have the best of both worlds - use ObjectDB when applicable for faster development and better performance and use a JPA ORM provider (Hibernate, TopLink, EclipseLink or DataNucleus) to access relational databases when necessary - with exactly the same code.
Naturally, this is not the place to look for an unbiased answer for this question. However, you should consider the following points when doing your own objective comparison of object databases: