// 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 }