Download presentation
Presentation is loading. Please wait.
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();
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.