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 any other environment with Java SE support.
- Java SE 6 /Java EE 6 or higher
- Tested on various JVMs: HotSpot, JRockit and IBM J9.
- Tested integration with Tomcat, Jetty, GlassFish, JBoss and Spring MVC.
|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 || |
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.
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).
- 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 || |
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).
- 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.
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 || |
- Path navigation expressions using the dot (.) operator.
- Comparison operators (<, <=, >=, <>, =, !=, ==, BETWEEN, IS NULL).
- Logical operators (AND, OR, NOT, &&, ||).
- Arithmetic operators & functions (+, -, *, /, %, ABS, SQRT, MOD).
- JPQL string operators & functions (LIKE, CONCAT, TRIM, SUBSTRING, ...).
- JPQL collection operators & functions (IS EMPTY, MEMBER OF, SIZE).
- Java standard methods in queries.
- User defined methods in queries.
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 || |
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
- 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).