| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Note: This file is written in Markdown and is best viewed with a Markdown viewer (e.g., GitHub, GitLab, VS Code, or a dedicated Markdown reader). Viewing it in a plain text editor may not render the formatting as intended.
Copyright (c) 2026 Software Tree
This project demonstrates how JDX ORM handles object models with one-to-one and one-to-many relationships between Java classes, and how those relationships are mapped declaratively to a relational database.
The domain model represents a small organizational structure:
The example application demonstrates shallow and deep CRUD operations, lazy fetching of related objects, named queries, directed operations (selectively ignoring related objects during retrieval), and batch inserts — all using the JDX ORM API.
JDX_RelationshipsExample/ ├── config/ │ └── relationships_example.jdx # ORM mapping specification file ├── src/ │ └── com/softwaretree/jdxrelationshipsexample/ │ ├── RelationshipsExample.java # Main application entry point │ └── model/ │ ├── SimpleAddr.java # Address model class │ ├── SimpleCompany.java # Company model class │ ├── SimpleDept.java # Department model class │ ├── SimpleEmp.java # Employee model class │ └── SimpleForeignLocation.java # Foreign location model class ├── bin/ # Compiled .class files (generated) ├── sources.txt # List of Java source files for compilation ├── compile.cmd # Windows: compile the Java source files ├── compile.sh # Mac/Linux: compile the Java source files ├── setEnvironment.bat # Windows: sets classpath environment variable ├── setEnvironment.sh # Mac/Linux: sets classpath environment variable ├── runJDXExample.bat # Windows: run the sample application ├── runJDXExample.sh # Mac/Linux: run the sample application ├── forward.bat # Windows: create/recreate the database schema ├── forward.sh # Mac/Linux: create/recreate the database schema ├── JDXDemo.bat # Windows: launch the JDXDemo GUI application ├── JDXDemo.sh # Mac/Linux: launch the JDXDemo GUI application └── README.md # This file
The five model classes and their relationships are summarized below:
| Class | Table | Primary Key | Relationships |
|---|---|---|---|
| SimpleCompany | Simple_Company | companyId | Has many SimpleDept (List); has many SimpleForeignLocation (array) |
| SimpleDept | Simple_Dept | deptId | Belongs to SimpleCompany via companyId |
| SimpleForeignLocation | Simple_ForeignLocation | locationId (auto-generated) | Belongs to SimpleCompany via companyId |
| SimpleEmp | Simple_Employee | empId | References SimpleDept via deptId; has one SimpleAddr |
| SimpleAddr | Simple_Address | addrId | Belongs to SimpleEmp (addrId is an implicit attribute) |
Two classes use the IMPLICIT_ATTRIB mapping feature, which allows JDX ORM to automatically manage foreign-key fields without explicit initialization in application code:
This declarative file defines how the Java object model maps to relational database tables. It specifies:
The file is pre-configured for SQLite. A commented-out MySQL example is also included. Refer to the JDX Database & JDBC Driver Specification Guide for configuring other databases.
Note: Update JDX_DATABASE and JDBC_DRIVER to match your local database setup before running.
The entry point of the sample application. It initializes JDX ORM and runs two phases:
Phase 1 — populateEmployees(): Sets up the database with sample data:
Phase 2 — useJDXORM(): Demonstrates various query and update patterns:
Lists all .java source files to be compiled, one per line:
./src/com/softwaretree/jdxrelationshipsexample/model/SimpleAddr.java ./src/com/softwaretree/jdxrelationshipsexample/model/SimpleCompany.java ./src/com/softwaretree/jdxrelationshipsexample/model/SimpleDept.java ./src/com/softwaretree/jdxrelationshipsexample/model/SimpleEmp.java ./src/com/softwaretree/jdxrelationshipsexample/model/SimpleForeignLocation.java ./src/com/softwaretree/jdxrelationshipsexample/RelationshipsExample.java
This file is passed to javac using the @sources.txt argument syntax.
Compiles all Java source files listed in sources.txt and outputs .class files into the bin/ directory.
Windows:
compile.cmdMac/Linux:
chmod +x compile.sh # first time only
./compile.shSets the CLASSPATH environment variable to include the JDX ORM libraries and the appropriate JDBC driver JAR for your database. Edit this file to point to the correct JDBC driver for your database before running the application.
Invokes the environment setup script to configure the classpath, then runs the RelationshipsExample main class.
Windows:
runJDXExample.batMac/Linux:
chmod +x runJDXExample.sh # first time only
./runJDXExample.shCreates (or recreates) the database schema based on the ORM specification in the .jdx file, without running the application.
Windows:
forward -createMac/Linux:
chmod +x forward.sh # first time only
./forward.sh -createLaunches the JDXDemo desktop GUI application, which provides a graphical way to browse and interact with the database using the JDX ORM configuration.
Windows:
JDXDemo.batMac/Linux:
chmod +x JDXDemo.sh # first time only
./JDXDemo.shSet JX_HOME to the root of your JDX ORM SDK installation.
Configure the database by editing config/relationships_example.jdx:
Compile the source files:
compile.cmd # Windows
./compile.sh # Mac/LinuxRun the sample application:
runJDXExample.bat # Windows
./runJDXExample.sh # Mac/LinuxThe application will automatically create the database schema on first run (controlled by the forceCreateSchema flag in RelationshipsExample.java).
Mac/Linux tip: Run chmod +x *.sh once in the project directory to make all shell scripts executable.
This project can be imported directly into the Eclipse IDE as an existing Java project using File → Import → Existing Projects into Workspace.
| Back | FazBrowse Home | New Git URL |