// X une classe
// Attached = instance en cache, non éditable
// Detached = éditable
X a = new X(); // a detached
DA.save(c); // a attached
X b = DA.getEditable(a); // a attached, b detached
DA.save(b); // a detached, b attached
DA.delete(b); // a detached, b detached
DA.save(b); // a detached, b attached
DA.delete(a); // 1: réattache a => a attached, b detached ; 2: delete de l'objet => a detached, b detached
// Edition thread-safe un objet
X a = DA.getX(x); // a attached
synchronized (a) { // Pose un lock sur a, d'autres blocs qui veulent travailler sur a synchronisés avec synchronized (a) devront attendre la fin de la modification et récuperont ainsi la dernière version de l'objet
X b = DA.getEditable(a); // a attached, b detached
b.setY(y);
DA.save(b); // a detached, b attached ; les prochains DA.getX(x) renveront b
}