|
Data mapping without intrusion in your Java code
The persistent business classes do not have database or XIC technical code intrusion so the Java features that you
can use in your business model are virtually limitless:
- no XIC package to import,
- no persistence root class to derive from,
- no persistence interface to implement,
- inheritance is supported,
- no proxy to use for references,
- standard collections from the JDK are supported,
- Set, list, Map
- Array (including bi-dimensional arrays of primitive types and String)
- setters, getters or direct access to attributes,
- attributes can be public, protected, private,
- attributes can be primitive (int…),
- their object wrappers (Integer…),
- BigInteger, BigDecimal… are supported,
- Strings,
- Dates.
- References to interfaces or Objects are supported.
All Data Access paths are defined externally in XML files respecting a mapping grammar. All of the mapping can be
defined in one single file, or it can be split in multiple files according to various strategies (one per package, one
per class, mixed…).
In the business process (Java classes using persistent objects, but not persistent themselves), developers will use XIC
APIs to:
- connect to a data source,
- manage transactions,
- query the data source, using JDO QL.
Object identity and object life cycle are managed by XIC
Objects are created in Java as usual. The makePersistent() API will make a newly created object persistent. Any object
that becomes referenced from an already persistent object automatically becomes persistent itself. This powerful
mechanism is called persistence by reachability, and allows limiting calls to makePersistent() to roots of persistence.
Objects are updated in Java as usual
There are specific APIs to delete objects as this operation as no equivalent in Java. LiDO keeps track of each operation
made on the persistent objects. These changes will be reflected in the data source at commit time.
XIC can manage non persistent objects (transient objects) that are managed in a transactional way. This guarantees
the consistency of transactions where the state of some persistent objects depends on the state of transient objects.
|