ObjectDB ObjectDB

ObjectDB Object Database Features

ObjectDB provides a rich set of features. Many features are implemented as part of ObjectDB's support of the JPA and JDO APIs. Fundamental features of relational databases (e.g. primary keys, derived attributes, grouping queries and aggregate queries) which are usually missing from Object Oriented Databases are also supported by ObjectDB. The combination of Object Database features with Relational Database features brings you the best of both worlds.

Capabilities & Scalability

ObjectDB can manage databases of various sizes efficiently, ranging from kilobytes to terabytes.

Platform Requirements
  • Windows, Linux, Unix, Mac OS, and most other OS with Java support.
  • Java 8 or higher
  • Tested integration with Tomcat, Jetty, GlassFish, WildFly, Spring MVC and Spring Boot.
Operating Modes

Capabilities and Limitations

  • Database file size up to 128 TB (= 131,072 GB = 134,217,728 MB).
  • Up to 2,147,483,648 entity classes per database file.
  • Up to 2,147,483,648 indices per database file.
  • Up to 9,223,372,036,854,775,808 entity objects per database file.
  • Unlimited database connections (limited only by operating system resources).
  • Unlimited CPUs and cores.
Reliability and Stability
  • Recovery from failure by using a recovery file and double writing.
  • Additional recovery layer - supports full transaction recording and replaying.
  • Automatic diagnosis and repair of corrupted database files (the ObjectDB Doctor).

Standard Persistence APIs

ObjectDB is the only Object-Oriented Database with built in support for JPA 2.

Java Persistence API (JPA)
  • Most features of JPA 2 are supported.
  • Support for remaining features is in progress - see issue tracking (requires login).
Java Data Objects (JDO)
  • Complete JDO 2 support (passed the JDO 2 TCK).
  • Support for JDO 3 new features is in progress - see issue tracking (requires login).

Performance and Speed

ObjectDB is extremely fast - much faster than any other JPA solution.

General
  • Highly optimized code (as a result of many profiling sessions).
  • Unique data structures and algorithms (as a result of years of R&D).
  • Outperforms competing products.
Connection Pooling
  • Automatic connection pool managed by EntityManagerFactory.
  • Configurable - minimum/maximum connections and timeout.
Caching
  • L1 entity object cache (per EntityManager).
  • L2 shared entity data cache (per EntityManagerFactory).
  • Database file page cache.
  • Query program cache (for repeating queries with different arguments).
  • Query result cache (for repeating queries with the same arguments).
  • Many other internal caches.
Indexing
Lazy/Eager Loading

Ease of Use and Learning

ObjectDB is very simple to use and is easier to learn than any other competing product.

Simplicity
  • Database is a single file - easier to back up, transfer and manage.
  • Single runtime JAR (including JPA/JDO) - no external dependencies.
  • Simple (codeless) configuration using XML and annotations.
  • Zero administration.
Documentation
Tutorials
Easy Learning Curve
  • Easier than other JPA solutions - no need to learn and use O/R mapping.
  • Easier to learn than other Object-Oriented Database Systems (ODBMS)  -
    no need to learn a proprietary API - any user with some experience with Hibernate, TopLink, EclipseLink, OpenJPA, JPOX or DataNucleus could start using ObjectDB immediately.
  • SQL-like (but object based) query language - familiar to most developers.
Friendly API
Schema Evolution
  • Fully automatic schema evolution and type versioning.
  • Class hierarchy changes are handled automatically.
  • New added fields are handled automatically.
  • Removed fields are handled automatically.
  • Most field type changes are handled automatically.
  • Moving fields up and down in the class hierarchy is transparent.
  • Support for renaming types, fields and properties.

Object Model & Data Types

ObjectDB supports persisting complex Java data structures very efficiently.

User Defined Classes
Persistent System Types
(for persistent fields)
  • Primitive types (boolean, byte, short, char, int, long, float, double).
  • Wrapper types (Boolean, Byte, Short, Character, Integer, Long, Float, Double).
  • java.lang.String
  • Date types: java.util.Date, java.sql.Date, java.sql.Time and java.sql.Timestamp.
  • Math types: java.lang.BigInteger and java.lang.BigDecimal.
  • Collection types: Collection, List, Set, ArrayList, Vector, Stack, LinkedList, ArrayDeque, PriorityQueue, HashSet, LinkedHashSet, TreeSet.
  • Map types: HashMap, Hashtable, WeakHashMap, IdentityHashMap, LinkedHashMap, TreeMap and Properties.
  • Arrays, including multidimensional arrays.
  • Any other serializable type.
Lifecycle Events

Primary Keys

Support of primary keys in ObjectDB is unique compared to other Objec-Oriented Databases.

Primary Key Modes
Primary Key Data Types
  • Primitives (boolean, byte, short, char, int, long, float and double).
  • Wrappers (Boolean, Byte, Short, Character, Integer, Long, Float and Double).
  • java.lang.String
  • Dates: java.util.Date, java.sql.Date, java.sql.Time and java.sql.Timestamp.
  • Math: java.lang.BigInteger and java.lang.BigDecimal.
Auto Value Generation Modes (for primary Key fields)
  • Database IDs - automatic allocation of global object database IDs.
  • Sequence IDs - IDs are allocated automatically by application defined sequences.
  • Application IDs - primary key values are set explicitly by the application.

Query Support

ObjectDB supports two object-oriented query languages - JPQL and JDOQL.

Query Languages
  • JPQL - Java Persistence (JPA) Query Language - SQL like syntax.
  • JDOQL - Java Data Objects (JDO) Query Language - Java/SQL like syntax.
Query Definition and API
  • Dynamic query definition, including using JPA Criteria Query API.
  • Static definition (named queries) in annotations (@NamedQuery) and XML.
  • Query parameters for efficient reuse of one query in multiple executions.
  • Result range settings (first, max) - for paging.
Query Structure
Query Expressions

Multi User Support

ObjectDB can be very effective in heavy loaded multi-user systems.

Transactions
Processes and Threads
  • All API classes and interfaces are thread safe.
  • Support of efficient real multithreading.
  • Support of efficient real multiprocessing.
Locking

Database Tools and Utilities

ObjectDB provides the following database tools and utilities:

Database Explorer
  • Visual GUI tool for viewing and editing database content.
  • Query execution using JPA JPQL and JDO JDOQL + query execution plan explanation.
  • Schema tree for browsing the database schema (classes, fields, indices).
  • Table view for browsing the content of entity objects.
  • Tree view for navigating between entity objects.
Database Server
  • Available as Windows EXE and Unix/Linux/Mac OS executable script.
  • Easily managed from a system tray icon.
  • Can also be managed (started, restarted, stopped) from the command line.
Class Enhancer
  • Boosts performance by avoiding reflection and by using smart tracking.
  • Non enhanced classes are also supported (by using reflection).
  • On the fly enhancement by using a Java agent.
Replication (Cluster)
  • Master-Slave replication (clustering) with an unlimited number of slave nodes.
  • Dynamic composite database connections for high availability and fault tolerance.
Online Backup
  • Online backup by a simple query on an EntityManager/PersistenceManager.
  • Supports automatic download of created backups from the server to the client.
Database Doctor
  • Diagnoses if a database file is healthy and identifies possible problems.
  • Automatically repairs damaged database files with minimum data loss (if any).
Transaction Replayer
  • Transactions and database operations can be recorded.
  • Recorded operations can be replayed starting from a database snapshot.
BIRT Reports
  • ObjectDB databases are valid BIRT data sources.
  • BIRT data sets can be defined using JPA and JDO queries (JPQL, JDOQL).