JDX is a high-performance, cross-platform, developer-friendly and cost-effective solution for transactional persistence of Java objects. It seamlessly bridges the gap between Java object model and SQL relational model by providing a very natural object-oriented interface to store and retrieve Java objects using relational databases. JDX increases programmer productivity tremendously by making the code simpler and yet efficient. It also allows mapping of existing (legacy) relational data to Java objects. JDX provides your applications independence from operating systems, backend databases and JDBC drivers. JDX is an ideal tool for developing and deploying modern object-oriented applications - be they standalone, JSP/Servlets based on EJB based. Please click here for JDX White Paper
JDX software comes in different components that offer different functionalities.
JDXClassic : This is the core object-relational mapping technology consisting of the runtime mapping engine and basic tools (JDXSchema and JDXDemo).
- Simplifies Integration of Java Objects with Relational Data -- Application (or Applet) Programmers need not write any SQL Statements
- Declarative Mapping Specification based on a Simple Grammar
- Can easily Handle Complex Object Structures - One-To-One, One-To-Many and Many-to-Many Relationship Models Supported.
- An Object may Contain other Object(s) By Value or By Reference
- Object Modeling with Class-Hierarchy Supported
- Support for Persistence by Reachability
- No Requirement to Inherit from a Special Class
- No Hassles of Pre-Processing or Post-Processing of your Code
- Object Viewing Facility
- High performance Object Caching (readonly) Support - Regular or LRU Configurations. Can Optionally be Backed up by Clustered Caches (e.g., Tangosol Coherence)
- Flexible Query Options - Deep, Shallow and anything in-between
- Fast and Convenient Parameterized Named Queries
- Powerful Object-Streaming Functionality
- Support for aggregate operations return the aggregate value (COUNT, MIN, MAX, AVG, SUM) for the specified attribute of the qualifying objects. Enables easy data analysis.
- Handy Sequence Generators
- Dynamic data routing
- Support for partial loading of objects
- Allow inline storage of the attributes of a contained object
- Support for implicit attributes whose values are automatically initialized by JDX based on defined RELATIONSHIPs
- Virtual attributes allow mapping of class attributes, which are not explicitly declared in the class definition. Enables flexible evolution of object/data modeling in some situations.
- Support for aggregated storage of inheritance objects in one table
- Support for using application provided dynamic class loaders
- Support for retrieving collection objects in a descending order
- Support for specifying a JNDI data source name to get database connection
- Optimistic locking for concurrency control provides a faster, more scalable locking alternative to database locking. Especially useful for long-running transactions with minimal conflicting update operations.
- Allow specification for an external transaction manager
- Utility components for pooling JX/JDX handles
- Option to filter referenced objects for query, update and delete operations
- Configurable logging destination
- Support for Java2 Collections
- Optionally generate default accessor (getter/setter) methods while reverse-engineering Java
- Intuitive and Powerful APIs
- Implemented on top of standard JDBC interface. Can work with Microsoft SQL Server, Oracle, Sybase, IBM DB2, MS Access, Cloudscape, Pointbase, MySQL, JDataStore and other relational databases and JDBC sources
- An Application may Work with Multiple Databases Simultaneously
- Multiple Invocations of JDX Methods may be made part of a Single Transaction
- Efficient Caching of Metadata and Database Connections
- Simple and Intuitive Object-Oriented Client Interface through Open Standard Technologies
- Runs as a Class Library. Additionally, with one line of code change, you can also use the same mapping functionlity in a Separate High-Performance, Multithreaded Server (using JDXServer )
- Tool (JDXSchema) Provided for Relational Schema-Generation given Java Class Definitions.
- Tool (JDXSchema) Provided to Generate Java Class Definitions from Legacy Relational Data
- Tool (JDXDemo) Provided to Verify Object-Relational Mapping specification using a Live Database
- Modular Design, High-Performace and Scalable Implementation
- All-Java Implementation makes it a Cross-Platform Solution
JDXServer : This optional add-on to JDXClassic provides the capability of running the object-relational mapping functionality in a separate tier for load-balancing and scalabilty.
- This optional add-on to JDXClassic provides the capability of running the object-relational mapping functionality in a separate tier for load-balancing and scalabilty.
- JDXServer runs as an RMI server and can be located on a different machine that may provide advantages like better processing power or co-location with database servers.
- One instance of the server may provide services to multiple clients.
- Many instances of the server may be started simultaneously on different machines.
- Promotes Thin-Clients Applications.
JDXStudio : A GUI program for designing and configuring the mapping system.
- A Java Swing based GUI tool to define object-relational mapping (OR-Mapping).
- Create Database Schema (tables and constraints from an object model).
- Reverse-engineer Java classes from an existing Database Schema.
- Verify OR-Mapping against a live database using tightly integrated JDXDemo program.
- OneClickRevelation™ provides instant and interactive insight into your data without a single line of programming. OneClickRevalation Tutorial and Screenshots
- Well-organized, color-coded panels for quick navigation and the most optimal partitioning of mapping information.
- Extensive online help available at every step of the way: tool tips, context-sensitive help buttons, and meaningful error/warning messages.
JDXCombo: This combines JDXClassic, JDXServer and JDXStudio components in one offering. JDXServer and JDXStudio need JDXClassic to run.
Click for JDX Highlights.
Click for a high-level view of development steps needed with JDX.
Click for a list of new features added since Version 3.0 of JDX.