The JADE distributed processing architecture has a single semantic model for all objects and two basic lifetime variations: persistent and transient lifetimes.
Persistent objects, which are permanently stored in the JADE database, live across JADE session executions and are shared by all JADE sessions in all nodes of the system. Concurrency control is enforced for persistent objects. Update operations on persistent objects must be performed within a transaction; typically inside a JoobContext BeginTransaction and System.Data.IDbTransaction Commit method pair.
Changes made to persistent objects within a transaction are hidden from other JADE sessions until committed. This means that other JADE sessions accessing these objects will not see the uncommitted updates, but will instead view the most-recently committed editions.
Transient objects are local to the JADE session that created them; that is, they cannot be accessed by any other JADE session. Because of this, no concurrency control operations are performed when they are updated, which gives optimal performance. These transient objects are automatically removed when the JADE session that created them becomes inactive, typically by disposing its attached JoobContext instance.
No transaction is necessary when creating, deleting, or updating transient objects. These objects can be updated at any time.
By default, JADE objects are created with persistent lifetime. To create transient objects, there is a constructor for a JADE object that takes the lifetime of the object as a parameter using the ClassPersistence enumeration, which has the values Persistent and Transient.