Power of Object Graphs

In software, an Object Graph is a structured network of object instances and their relationships, representing the live state and logical structure of an application.

OAObjectGraph

OA centers around the concept of a dynamic, self-describing, distributed Object Graph that is fully observable and runtime-aware. This graph is built from instances of OAObject and connected through Hub<T> collections.

These components form a runtime fabric that manages identity, relationships, state propagation, distributed synchronization, and change observability β€” enabling a seamless integration across UI layers, persistence, and distributed systems.

The result is a software system that renders itself in real time based directly on the OABuilder-defined domain model.

🧬 Rich Metadata

Each OAObjectGraph includes metadata defined through annotations and loaded at runtime. This includes everything about the object graph: properties, relationships, validation rules, security, calculations, display hints, events, and more.

βš™οΈ Full Data Operations

Supports full data operations: inserts, updates, deletes, queries, joins, caching, transactions, messaging, and more β€” all managed within the Object Graph.

πŸ—ƒ Works with Any Data Store

Designed to be data-source agnostic. Uses OADatasSource interface to support connections to any datasource. Seamlessly integrates with relational databases, NoSQL, files, APIs, and more. OA handles identity, caching, lazy loading, and change tracking across any backend.

πŸ—‚οΈ Dynamic Navigation

With property paths like order.customer.company.name or customer.orders:open().deliveries.late() , OA can dynamically navigate and reason about Object Graphs.

🧩 Custom Callbacks

OAObjectGraph supports callbacks that plug into lifecycle events and business rules: such as validation, enablement, calculations, or permission checks.

πŸ” Introspective

OAObjectGraphs expose their own metadata via reflective services β€” giving tools and services the ability to dynamically understand and interact with any object in the graph.

πŸ•Έ Distributed

Connected across multiple instances, OAObjectCache ensures every change β€” create, update, delete β€” is synchronized across the distributed graph in real time.

The OAObjectGraph is the live blueprint of the Software.

OA & OAObjectGraph provide full-stack automation by establishing declarative bindings across all layers of the application. The UI, business logic, data access, messaging, and synchronization layers are connected to the OAObjectGraph, eliminating the need for manual wiring, redundant bindings, or boilerplate integration code.

πŸ“¦ Model Layer
  • Object Graph using OAObject & Hub
  • Object identity and GUIDs
  • Property change tracking and observability
  • Two-way references and cascading relationships
  • Lazy loading and runtime resolution
  • Calculated properties and rule enforcement
πŸ” Security Layer
  • Roles and rule-based security
  • Fine-grained object graph permissions
  • Context-aware access control
πŸ—„οΈ Data & Persistence Layer
  • Automatic database schema generation
  • Full ORM with zero DAO or repository code
  • Querying with object paths and filters
  • Support for JDBC, remote, cache, NoSQL, etc.
  • Versioning, transactions, soft deletes
🌐 API & Integration Layer
  • Auto-generated REST APIs with OpenAPI (Swagger)
  • REST-based delta updates and live sync
  • Object graph traversal and querying via property paths
πŸ”„ Sync & Messaging Layer
  • Real-time sync across distributed clients (OASync)
  • Delta-based messaging with per-client filtering
  • Multiplexed socket communication
  • Smart prefetching and hint-based fetching
  • Distributed method calling
🎨 UI Layer (Desktop / Web)
  • Auto-wired UI controls for OAObjects and Hubs
  • Prebuilt components: forms, tables, trees, nav
  • Java Swing UI and Bootstrap Web UI
  • UI layout generators
πŸ“„ Reporting & Templates
  • Template engine with object graph binding (OATemplate)
  • Report generator and PDF/HTML rendering
  • Model-driven emails, forms, and exports

🧠 OAObject : The Smart Object

OAObject is the base class for your object graph's data objects. It defines both the structure and behavior of business data and represents real-world entities and processes. It automatically handles relationships, change tracking, observability, queries, security, sync, REST, APIs, serialization, validation, hooks, lazy loading, and more.

πŸ“š Hub<OAObject> : The Smart Collection

Hub<OAObject> is an observable, sync-aware collection. Hubs are wired together to support master-detail, joins, grouping, filtering, and sharing β€” all in real time with no manual refresh needed. Hubs work directly with any object type, making them ideal for MVC patterns.

πŸ“¦ Just a POJO

OAObject began as a plain Java class β€” just fields and getters/setters. What was added turns it into a "Super Object" that automates and eliminates complex development patterns.

πŸ”„ Observable and Reactive

The object graph is fully observable. Changes automatically notify listeners, UI components, and dependent systems β€” with no manual code needed.

🧊 Feels Fully In-Memory

Thanks to lazy loading and runtime awareness, your objects behave as if everything is already loaded. References are resolved on demand, and OA prefetches intelligently based on usage.

🌐 Graph-Aware

Each object knows its place in the graph. OAObject can follow relationships, resolve references, and sync intelligently across clients and systems.

πŸ›°οΈ Distributed and Synchronized

OAObjectGraphs work across machines. Changes are streamed and synchronized in real time. Workloads can be distributed and methods invoked on remote clients β€” including data access.

πŸ” Secured, Versioned, Validated

OAObjects enforce security, validations, and callbacks. These rules live in the model and execute automatically at runtime β€” making your app auditable and protected by design.

πŸ“¦ Reusable Components

Components can work with any OAObject subclass because of shared metadata and consistent interfaces. This makes your UI, logic, and integrations highly reusable and domain-agnostic.

πŸŽ›οΈ Built for Auto-Wired UIs

OAObjectGraph supports auto-binding to UI components β€” both in Java Swing and Web. Manual listeners and controllers aren't needed. Just point a component to a hub or object, and it stays in sync.

πŸ“‘ Works with Any Data Source

OAObject supports JDBC, NoSQL, REST APIs, file-based caches, and remote servers β€” all driven by the model. No DAOs, no SQL. Queries are expressed as object paths and work across systems.

🧊 Acts Like Everything Is in Memory

Thanks to unique lazy loading techniques, object caching, and sibling hinting, OA apps behave as if the full Object Graph is always present β€” without actually loading it all at once.

πŸ“‘ Efficient

OA is optimized for syncing, observing, and reacting to changes across the object graph β€” with minimal overhead and maximum responsiveness.

πŸš€ Fast Path Compatible

For high-throughput areas like trading or telemetry, OA allows separate β€œfast path” subsystems β€” while still observing them without adding overhead.

πŸ“Ά Real-Time Delta Sync

Changes are transmitted as compact deltas through a distributed circular queue with built-in throttling, prioritization, fairness, backpressure, and filtering β€” keeping traffic minimal and state synchronized.

🧠 Runtime-Aware Optimizations

OA tracks client state and request patterns to decide what to fetch, preload, or skip β€” avoiding duplicate requests, N+1 issues, and unnecessary processing.

βš™οΈ Scales Horizontally

OA was designed to work across distributed nodes, clients, and services. It's used in systems with thousands of users and apps running in parallel.