Presentation is loading. Please wait.

Presentation is loading. Please wait.

Format PDF The tools used by esup-helpdesk developers: Eclipse, Omondo EclipseUML plugin, Apache OJB JDO Pascal Aubry & Alexandre Boisseau IFSIC – University.

Similar presentations


Presentation on theme: "Format PDF The tools used by esup-helpdesk developers: Eclipse, Omondo EclipseUML plugin, Apache OJB JDO Pascal Aubry & Alexandre Boisseau IFSIC – University."— Presentation transcript:

1 Format PDF The tools used by esup-helpdesk developers: Eclipse, Omondo EclipseUML plugin, Apache OJB JDO Pascal Aubry & Alexandre Boisseau IFSIC – University of Rennes 1 – May 2004 http://perso.univ-rennes1.fr/pascal.aubry/presentations/jdo

2 Format PDF Program.java (runtime logic) Program.java (runtime logic) runtime components Program.class javac user-maintained data generated data tools and programs Legend: A Java program

3 Format PDF Channel.java (runtime logic) Channel.java (runtime logic) runtime components Channel.class uPortal IChannel.java javac runtime data XML output implementation user-maintained data generated data tools and programs Legend: A uPortal channel

4 Format PDF Channel.java (runtime logic) Channel.java (runtime logic) runtime components Data.class Data.java (data access) Data.java (data access) Channel.class uPortal database IChannel.java javac database access config javac database accesses database management runtime data XML output implementation user-maintained data generated data tools and programs Legend: A uPortal channel accessing a database

5 Format PDF Channel.java (runtime logic) Channel.java (runtime logic) runtime components Data.class Data.java (data access) Data.java (data access) Channel.class uPortal database IChannel.java javac database access config javac database accesses database management runtime data XML output implementation user-maintained data generated data tools and programs Legend: Accessing the database through (OJB) JDO OJB JDO enhancer database object map JDO runtime

6 Format PDF runtime components Channel.java (runtime logic) Channel.java (runtime logic) Data.class JDO runtime UML model UML model Data.java (data access) Data.java (data access) Channel.class uPortal database OJB JDO enhancer database object map IChannel.java javac database access config Omondo eclipseUML javac database accesses database management code generation & reverse engineering runtime data XML output implementation user-maintained data generated data tools and programs Legend: Using Omondo EclipseUML plugin

7 Format PDF runtime components Channel.java (runtime logic) Channel.java (runtime logic) Data.class JDO runtime UML model UML model Data.java (data access) Data.java (data access) Channel.class uPortal database OJB JDO enhancer database object map IChannel.java javac database access config Omondo eclipseUML javac database accesses database management code generation & reverse engineering runtime data XML output implementation user-maintained data generated data tools and programs Legend: Using Omondo EclipseUML plugin

8 Format PDF runtime components Channel.java (runtime logic) Channel.java (runtime logic) Data.class JDO runtime UML model UML model Data.java (data access) Data.java (data access) Channel.class uPortal database OJB JDO enhancer database object map IChannel.java javac database access config Omondo eclipseUML javac database accesses database management code generation & reverse engineering runtime data XML output implementation user-maintained data generated data tools and programs missing feature Legend: database object mapping

9 Format PDF runtime components Channel.java (runtime logic) Channel.java (runtime logic) Data.class JDO runtime UML model UML model Data.java (data access) Data.java (data access) Channel.class uPortal database OJB JDO enhancer database object map IChannel.java javac database access config Omondo eclipseUML javac database accesses database management code generation & reverse engineering runtime data XML output implementation user-maintained data generated data tools and programs missing feature Legend: database object mapping

10 Format PDF runtime components Channel.java (runtime logic) Channel.java (runtime logic) Data.class JDO runtime UML model UML model Data.java (data access) Data.java (data access) Channel.class uPortal database OJB JDO enhancer database object map IChannel.java javac database access config Omondo eclipseUML javac database accesses database management code generation & reverse engineering database object mapping runtime data XML output implementation user-maintained data generated data tools and programs missing feature Legend:

11 Format PDF JDO principles Database abstraction –Uses JDBC –JDBC abstracts the database manager –JDO abstracts the data: no SQL code is written at all! Persistence management –Perform changes on objects –the changes are automatically reflected on the data (in the database)

12 Format PDF JDO specifications http://java.sun.com/products/jdo/index.jsp http://www.theserverside.com/articles/article.tss?l=JDO http://www.onjava.com/pub/a/onjava/excerpt/JDO_chap3/

13 Format PDF JDO implementations Commercial –Kodo JDO (SolarMetric/Versant) the most feature complete, easy to use implementation. –JDO Genie pretty feature complete, but bad reputation. –JCredo Open-source –OJB (Apache, open source) JDO support is added through a plugin. A native JDO implementation will come with JDO 2.0. –TJDO (dead), XORM (not followed) –Castor JDO Last release in march 2004. Middle product –JOnAS (ObjectWeb) JOnAS is a J2ee specification which include JDO implementation. –Hibernate JDO (Hibernate) seems to be a good product –JBoss announced an open-source JDO implementation in JBoss. http://www.theserverside.com/discussions/thread.tss?thread_id=21825

14 Format PDF A very short example

15 Format PDF The CUser class public class CUser { private String id; private String displayName; public CUser(String id, String displayName) { this.id = id; this.displayName = displayName; } public String getId() { return id; } public String getDisplayName() { return displayName; }

16 Format PDF The CDoc class public class CDoc { private long id; private java.sql.Timestamp date; private CUser sender; private String senderId; public CDoc(String description, CUser sender) { // id is automatically set by OJB-JDO. this.date = new java.sql.Timestamp( new Date().getTime()); this.sender = sender; this.senderId = sender.getId(); } public long getId() { return id; } public Timestamp getDate() { return date; } public CUser getSender() { return sender; } }

17 Format PDF CUser database mapping

18 Format PDF CUser database mapping Table user : - id (primary-key) - displayname Table user : - id (primary-key) - displayname

19 Format PDF CDoc database mapping

20 Format PDF CDoc database mapping Table doc : - id (primary-key) - date - sender-id Table doc : - id (primary-key) - date - sender-id Table user : - id (primary-key) - displayname Table user : - id (primary-key) - displayname field-descriptor name="date" column="date" jdbc-type=" TIMESTAMP "/>

21 Format PDF Programming with OJB // Get an Persistence Manager Factory (PMF) OjbStorePMF f = new OjbStoryPMF(); // Get a Persistence Manager PersistenceManager manager = f.getPersistenceManager(); // Start a transaction manager.currentTransaction().begin(); // // Do things... // // Commit or rollback the transaction manager.currentTransaction().commit();

22 Format PDF Example: display all users try { manager.currentTransaction().begin(); Query query = manager.newQuery(CUser.class); Collection allUsers = (Collection) query.execute(); Iterator iter = allUsers.iterator(); while (iter.hasNext()) { u = (CUser) iter.next(); System.out.println("id=" + u.getId() + ", displayName=" + u.getDisplayName()); i++; } manager.currentTransaction().commit(); } catch (Throwable t) { t.printStackTrace(); } finally { manager.close();} }

23 Format PDF Example: create a user CUser u = new CUser("mon-id", "NOM prenom"); Transaction tx = manager.currentTransaction(); tx.begin(); // Mark object as persistant manager.makePersistent(u); try{ // Commit the transaction, object mark persistent is stored. tx.commit(); } catch(OjbStoreFatalInternalException ex){ System.out.println("User already exists!"); } finally { manager.close(); }

24 Format PDF Example: delete a user Transaction tx = manager.currentTransaction(); tx.begin(); Query query = manager.newQuery(CUser.class, "displayName == \"Toto\""); Collection result = (Collection) query.execute(); if (result.size() == 0) { System.out.println("No user found!"); } else if (result.size() > 1) { System.out.println("Several users match!"); } else { CUser u = (CUser) result.iterator().next(); manager.deletePersistent(u); } tx.commit();


Download ppt "Format PDF The tools used by esup-helpdesk developers: Eclipse, Omondo EclipseUML plugin, Apache OJB JDO Pascal Aubry & Alexandre Boisseau IFSIC – University."

Similar presentations


Ads by Google