Branche Développement Le présent document contient des informations qui sont la propriété de France Télécom. L'acceptation de ce document par son destinataire implique, de la part de ce dernier, la reconnaissance du caractère confidentiel de son contenu et l'engagement de n'en faire aucune reproduction, aucune transmission à des tiers, aucune divulgation et aucune utilisation commerciale sans l'accord préalable écrit de France Télécom R&D. France Télécom R&D © France Télécom -Persistent Objects - D1 - 14/09/2014 Diffusion contrôlée Persistent Objects Alexandre Lefebvre 9 March 0
Branche Développement France Télécom R&D La communication de ce document est soumise à autorisation de FT R&D © France Télécom - Persistent Objects - D2 - 14/09/2014 Diffusion contrôlée Context: EJB with container-managed persistence Current EJB 1.1 specification limited w.r.t. container-managed persistence –no inheritance between beans –object references to be managed by the programmer, or container-specific Goal: increase the transparency for the bean programmer for: –object references –inheritance of beans –multi-valued attributes Extending EJB Persistence (1)
Branche Développement France Télécom R&D La communication de ce document est soumise à autorisation de FT R&D © France Télécom - Persistent Objects - D3 - 14/09/2014 Diffusion contrôlée Example: class ProductBean { class OfferBean { float price; Collection products; //set of products public float getPrice(){ public Collection getProducts() { return price;} return products; } } } Extending EJB Persistence (2) class PurchaseOfferBean{ Offer offer ; public float totalPrice() throws RemoteException { int theTotal = 0 ; //get the set of product objects Collection products = offer.getProducts(); Iterator productsI = products.iterator(); //for each such product, add the product price to the total while (productsI.hasNext()){ theTotal += ((Product)productsI.next()).getPrice(); } //finally, return the total return theTotal ; } }
Branche Développement France Télécom R&D La communication de ce document est soumise à autorisation de FT R&D © France Télécom - Persistent Objects - D4 - 14/09/2014 Diffusion contrôlée Hades: Persistent object binding Hades manages the binding between objects in the database and objects in memory Hades can be included in the EJB class hierarchy to provide container-managed persistence
Branche Développement France Télécom R&D La communication de ce document est soumise à autorisation de FT R&D © France Télécom - Persistent Objects - D5 - 14/09/2014 Diffusion contrôlée Hades in the EJB context (1)
Branche Développement France Télécom R&D La communication de ce document est soumise à autorisation de FT R&D © France Télécom - Persistent Objects - D6 - 14/09/2014 Diffusion contrôlée Hades in the EJB context (2)
Branche Développement France Télécom R&D La communication de ce document est soumise à autorisation de FT R&D © France Télécom - Persistent Objects - D7 - 14/09/2014 Diffusion contrôlée Using Hades: Compilation PMC XML parser 1) creation of meta-objects meta-objects persistent class mapping information persistent class structure persistent class mapping information persistent class structure persistent class mapping information HADES 2) call of meta-object initialization reflexive information java files for persistent class
Branche Développement France Télécom R&D La communication de ce document est soumise à autorisation de FT R&D © France Télécom - Persistent Objects - D8 - 14/09/2014 Diffusion contrôlée Using Hades: data store PID Home_XXX PFactory_XXX EJBObject_XXX PObject_XXX Bean instance
Branche Développement France Télécom R&D La communication de ce document est soumise à autorisation de FT R&D © France Télécom - Persistent Objects - D9 - 14/09/2014 Diffusion contrôlée Using Hades: Object creation (1) Home_XXX PFactory_XXX 1-create EJBObject_XXX PObject_XXX 2-new 3-init void PID 4-setPID Bean instance 5-new, EJBCreate
Branche Développement France Télécom R&D La communication de ce document est soumise à autorisation de FT R&D © France Télécom - Persistent Objects - D /09/2014 Diffusion contrôlée Using Hades: Object creation (2) Home_XXX PFactory_XXX EJBObject_XXX PObject_XXX 1-export 3-setPID PID 2-new
Branche Développement France Télécom R&D La communication de ce document est soumise à autorisation de FT R&D © France Télécom - Persistent Objects - D /09/2014 Diffusion contrôlée Using Hades: Finding and using objects Home_XXX PFactory_XXX 2-find 1-find data store PID 3 4-bind 5-bind EJBObject_XXX PObject_XXX 6-create 7-business method 8-read Bean instance 9-data from data store 10-setattr 11-EJBLoad + business method
Branche Développement France Télécom R&D La communication de ce document est soumise à autorisation de FT R&D © France Télécom - Persistent Objects - D /09/2014 Diffusion contrôlée Hades: Interesting properties Reflexivity –meta- objects describing persistent classes are themselves persistent Meta-objects are self-contained –generate XML description file –generate java file
Branche Développement France Télécom R&D La communication de ce document est soumise à autorisation de FT R&D © France Télécom - Persistent Objects - D /09/2014 Diffusion contrôlée Status of Hades First version being developed –implicit object-relational mapping –object identifiers –horizontal mapping (one class per concrete class, one object stored once in its most specific class) –multi-valued attributes transformed into collection objects, mapped to a separate table –multiple inheritance Limitations: –no support of legacy databases –non-customisable, ad-hoc mapping
Branche Développement France Télécom R&D La communication de ce document est soumise à autorisation de FT R&D © France Télécom - Persistent Objects - D /09/2014 Diffusion contrôlée Timing for Hades February 00: specification April 00: first prototype Summer 00: –integration with JOnAS Later: evolution to provide other persistence support for –object databases –explicit mapping to relational databases (legacy databases) –LDAP?