Le SGBD java Olivier Caron c Polytech’Lille SGBD - GIS4 Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 1 / 17 Les possibilités de Java De la conception à l’implémentation (penser UML avec Java) entités, associations, cardinalités, CIR, . . . La persistance des données L’aspect transactionnel, concurrence, accès à distance L’introspection Les vues, la sécurité (JDK 1.2) La gestion des extensions Est-ce que Java peut être considéré comme un SGBD ? Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 2 / 17 Les possibilités de Java De la conception à l’implémentation (penser UML avec Java) entités, associations, cardinalités, CIR, . . . La persistance des données L’aspect transactionnel, concurrence, accès à distance L’introspection Les vues, la sécurité (JDK 1.2) La gestion des extensions Est-ce que Java peut être considéré comme un SGBD ? Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 2 / 17 Les possibilités de Java De la conception à l’implémentation (penser UML avec Java) entités, associations, cardinalités, CIR, . . . La persistance des données L’aspect transactionnel, concurrence, accès à distance L’introspection Les vues, la sécurité (JDK 1.2) La gestion des extensions Est-ce que Java peut être considéré comme un SGBD ? Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 2 / 17 Les possibilités de Java De la conception à l’implémentation (penser UML avec Java) entités, associations, cardinalités, CIR, . . . La persistance des données L’aspect transactionnel, concurrence, accès à distance L’introspection Les vues, la sécurité (JDK 1.2) La gestion des extensions Est-ce que Java peut être considéré comme un SGBD ? Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 2 / 17 Les possibilités de Java De la conception à l’implémentation (penser UML avec Java) entités, associations, cardinalités, CIR, . . . La persistance des données L’aspect transactionnel, concurrence, accès à distance L’introspection Les vues, la sécurité (JDK 1.2) La gestion des extensions Est-ce que Java peut être considéré comme un SGBD ? Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 2 / 17 Les possibilités de Java De la conception à l’implémentation (penser UML avec Java) entités, associations, cardinalités, CIR, . . . La persistance des données L’aspect transactionnel, concurrence, accès à distance L’introspection Les vues, la sécurité (JDK 1.2) La gestion des extensions Est-ce que Java peut être considéré comme un SGBD ? Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 2 / 17 Les possibilités de Java De la conception à l’implémentation (penser UML avec Java) entités, associations, cardinalités, CIR, . . . La persistance des données L’aspect transactionnel, concurrence, accès à distance L’introspection Les vues, la sécurité (JDK 1.2) La gestion des extensions Est-ce que Java peut être considéré comme un SGBD ? Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 2 / 17 Conception UML Cardinalité 1 : Personne num nom Poste affecte_a> 0..* 0..1 num libelle Entité → Classe, propriété → attribut Association → attribut et méthodes (add, get et remove) Programmer les contraintes d’intégrité référentielles ! Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 3 / 17 Conception UML Cardinalité 1 : Personne num nom Poste affecte_a> 0..* 0..1 num libelle Entité → Classe, propriété → attribut Association → attribut et méthodes (add, get et remove) Programmer les contraintes d’intégrité référentielles ! Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 3 / 17 Conception UML Cardinalité 1 : Personne num nom Poste affecte_a> 0..* 0..1 num libelle Entité → Classe, propriété → attribut Association → attribut et méthodes (add, get et remove) Programmer les contraintes d’intégrité référentielles ! Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 3 / 17 Conception UML Cardinalité 1 : Personne num nom Poste affecte_a> 0..* 0..1 num libelle Entité → Classe, propriété → attribut Association → attribut et méthodes (add, get et remove) Programmer les contraintes d’intégrité référentielles ! Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 3 / 17 Avantages UML et JAVA UML : notation objet de conception Richesse de la notation : cardinalités, rôle des associations, encapsulation, interfaces, héritage. . . Les problèmes de traduction UML vers SGBD : Pas de notion de clé primaire (identité de l’objet) Difficile de gérer les CIR (à la norme ODMG), exemple cardinalité 1 :1 Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 4 / 17 Avantages UML et JAVA UML : notation objet de conception Richesse de la notation : cardinalités, rôle des associations, encapsulation, interfaces, héritage. . . Les problèmes de traduction UML vers SGBD : Pas de notion de clé primaire (identité de l’objet) Difficile de gérer les CIR (à la norme ODMG), exemple cardinalité 1 :1 Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 4 / 17 Avantages UML et JAVA UML : notation objet de conception Richesse de la notation : cardinalités, rôle des associations, encapsulation, interfaces, héritage. . . Les problèmes de traduction UML vers SGBD : Pas de notion de clé primaire (identité de l’objet) Difficile de gérer les CIR (à la norme ODMG), exemple cardinalité 1 :1 Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 4 / 17 Avantages UML et JAVA UML : notation objet de conception Richesse de la notation : cardinalités, rôle des associations, encapsulation, interfaces, héritage. . . Les problèmes de traduction UML vers SGBD : Pas de notion de clé primaire (identité de l’objet) Difficile de gérer les CIR (à la norme ODMG), exemple cardinalité 1 :1 Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 4 / 17 Avantages UML et JAVA UML : notation objet de conception Richesse de la notation : cardinalités, rôle des associations, encapsulation, interfaces, héritage. . . Les problèmes de traduction UML vers SGBD : Pas de notion de clé primaire (identité de l’objet) Difficile de gérer les CIR (à la norme ODMG), exemple cardinalité 1 :1 Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 4 / 17 La persistance des données (1/2) Mécanisme permettant de rendre persistant des objets Java : Implémenter l’interface java.io.Serializable Hériter d’une classe sérialisable Sauvegarder un objet : F i l e O u t p u t S t r e a m f i c =new F i l e O u t p u t S t r e a m ( " banque . s e r " ) ; ObjectOutputStream os=new ObjectOutputStream ( f i c ) os . w r i t e O b j e c t ( laBanque ) ; Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 5 / 17 La persistance des données (1/2) Restaurer un objet : F i l e I n p u t S t r e a m f i c =new F i l e I n p u t S t r e a m ( " banque . s e r " ) ; O b j e c t I n p u t S t r e a m i s =new O b j e c t I n p u t S t r e a m ( f i c ) laBanque = ( Banque ) i s . r e a dO b j e c t ( ) ; La clause transient (ex : une donnée calculée) Utilisée pour le téléchargement (applets) Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 6 / 17 Transactionnel, concurrence, accès à distance Un nouveau mot clé dans le langage synchronized Notion de verrou sur l’objet Verrou sur les méthodes ou des blocs de code au sein d’une méthode Accès concurrent : les threads ou objet distant Accès à distance : protocole Java RMI Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 7 / 17 Transactionnel, concurrence, accès à distance Un nouveau mot clé dans le langage synchronized Notion de verrou sur l’objet Verrou sur les méthodes ou des blocs de code au sein d’une méthode Accès concurrent : les threads ou objet distant Accès à distance : protocole Java RMI Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 7 / 17 Transactionnel, concurrence, accès à distance Un nouveau mot clé dans le langage synchronized Notion de verrou sur l’objet Verrou sur les méthodes ou des blocs de code au sein d’une méthode Accès concurrent : les threads ou objet distant Accès à distance : protocole Java RMI Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 7 / 17 Transactionnel, concurrence, accès à distance Un nouveau mot clé dans le langage synchronized Notion de verrou sur l’objet Verrou sur les méthodes ou des blocs de code au sein d’une méthode Accès concurrent : les threads ou objet distant Accès à distance : protocole Java RMI Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 7 / 17 Transactionnel, concurrence, accès à distance Un nouveau mot clé dans le langage synchronized Notion de verrou sur l’objet Verrou sur les méthodes ou des blocs de code au sein d’une méthode Accès concurrent : les threads ou objet distant Accès à distance : protocole Java RMI Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 7 / 17 L’introspection (1/6) Tout SGBD doit fournir des moyens pour analyser dynamiquement la structure d’une table : Exemple postgres : tables pg_class, pg_user, . . . Exemple JDBC : la classe MetaBase La reflexion Java permet d’analyser dynamiquement un composant et de le configurer dynamiquement ! Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 8 / 17 L’introspection (1/6) Tout SGBD doit fournir des moyens pour analyser dynamiquement la structure d’une table : Exemple postgres : tables pg_class, pg_user, . . . Exemple JDBC : la classe MetaBase La reflexion Java permet d’analyser dynamiquement un composant et de le configurer dynamiquement ! Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 8 / 17 Analyse dynamique et invocation dynamique (1/5) import j a v a . l a n g . r e f l e c t . ∗ ; import j a v a . beans . Beans ; import j a v a . u t i l . V e c t o r ; public class R e f l e c t i o n { public s t a t i c void main ( S t r i n g args [ ] ) { Class l a C l a s s e ; Method lesMethodes [ ] ; V e c t o r b o o l s =new V e c t o r ( ) ; try { O b j e c t o b j = Beans . i n s t a n t i a t e ( n u l l , args [ 0 ] ) ; laClasse = obj . getClass ( ) ; lesMethodes = l a C l a s s e . getMethods ( ) ; i n t i =0 ; Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 9 / 17 Analyse dynamique et invocation dynamique (2/5) while ( i <lesMethodes . l e n g t h ) { i f ( lesMethodes [ i ] . getName ( ) . s t a r t s W i t h ( " i s " )&& lesMethodes [ i ] . getParameterTypes ( ) . l e n g t h ==0 && lesMethodes [ i ] . getReturnType ( ) . t o S t r i n g ( ) . equals ( " boolean " ) ) { S t r i n g nomProp=lesMethodes [ i ] . getName ( ) . s u b s t r i n g ( 2 ) ; System . o u t . p r i n t l n ( nomProp ) ; b o o l s . addElement ( nomProp ) ; } i ++ ; } Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 10 / 17 Analyse dynamique et invocation dynamique (3/5) i =0 ; O b j e c t param [ ] =new Boolean [ 1 ] ; param [ 0 ] = new Boolean ( t r u e ) ; while ( i <lesMethodes . l e n g t h ) { i f ( lesMethodes [ i ] . getName ( ) . s t a r t s W i t h ( " s e t " ) && b o o l s . c o n t a i n s ( lesMethodes [ i ] . getName ( ) . s u b s t r i n g ( 2 ) ) ) { System . o u t . p r i n t l n ( " i n v o c a t i o n méthode " ) ; lesMethodes [ i ] . i n v o k e ( obj , param ) ; } i ++ ; } Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 11 / 17 Analyse dynamique et invocation dynamique (4/5) } catch ( ArrayIndexOutOfBoundsException e ) { System . e r r . p r i n t l n ( " E r r e u r : j a v a R e f l e c t i o n nomClasse " ) ; } catch ( S e c u r i t y E x c e p t i o n e ) { System . e r r . p r i n t l n ( " e x c e p t i o n r a i s e d . . . " ) ; } catch ( I l l e g a l A c c e s s E x c e p t i o n e ) { System . e r r . p r i n t l n ( " Access . . . " ) ; } catch ( I n v o c a t i o n T a r g e t E x c e p t i o n e ) { System . e r r . p r i n t l n ( " Argument . . . " ) ; } catch ( I l l e g a l A r g u m e n t E x c e p t i o n e ) { System . e r r . p r i n t l n ( " Argument . . . " ) ; } catch ( j a v a . i o . IOException e ) { System . e r r . p r i n t l n ( " IO . . . " ) ; } catch ( ClassNotFoundException e ) { System . e r r . p r i n t l n ( " c l a s s . . . " ) ; } } } Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 12 / 17 Analyse dynamique et invocation dynamique (5/5) On ne connait pas la structure de la classe au départ ! Exécution de l’exemple : java Reflection java.awt.Button Valid Displayable Visible... Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 13 / 17 Analyse dynamique et invocation dynamique (5/5) On ne connait pas la structure de la classe au départ ! Exécution de l’exemple : java Reflection java.awt.Button Valid Displayable Visible... Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 13 / 17 Les vues Utilisation des interfaces Java Java RMI utilise également ce mécanismes d’interfaces Difficile de modifier la structure du schéma (jointure) Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 14 / 17 La sécurité JAVA Des classes standards : java.lang.SecurityManager java.security.Permission Possibilité de définir des politiques de sécurité : g r a n t codeBase " f i l e : / home / sysadmin / " { p e r m i s s i o n j a v a . i o . F i l e P e r m i s s i o n " / tmp / abc " , " read " ; }; Possibilité de définir ses propres permissions Exécution du programme : j a v a −Djava . s e c u r i t y . p o l i c y = f i c h i e r . p o l i c e Main Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 15 / 17 La gestion des extensions Richesse de l’API Java pour gérer des collections : Vector, Hashtable, ... cf Cours Bernard Carré Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 16 / 17 La gestion des extensions Richesse de l’API Java pour gérer des collections : Vector, Hashtable, ... cf Cours Bernard Carré Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 16 / 17 Conclusion Les plus L’approche objet (passage naturel de UML à Java ) L’API riche au niveau des collections Une solution pour presque chaque aspect BD simple ! Les moins L’aspect requête Tout existe mais en version (trop) simplifiée L’aspect performance ! ! L’avenir : JDO, hibernate, EJB 3, . . . Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 17 / 17 Conclusion Les plus L’approche objet (passage naturel de UML à Java ) L’API riche au niveau des collections Une solution pour presque chaque aspect BD simple ! Les moins L’aspect requête Tout existe mais en version (trop) simplifiée L’aspect performance ! ! L’avenir : JDO, hibernate, EJB 3, . . . Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 17 / 17 Conclusion Les plus L’approche objet (passage naturel de UML à Java ) L’API riche au niveau des collections Une solution pour presque chaque aspect BD simple ! Les moins L’aspect requête Tout existe mais en version (trop) simplifiée L’aspect performance ! ! L’avenir : JDO, hibernate, EJB 3, . . . Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 17 / 17 Conclusion Les plus L’approche objet (passage naturel de UML à Java ) L’API riche au niveau des collections Une solution pour presque chaque aspect BD simple ! Les moins L’aspect requête Tout existe mais en version (trop) simplifiée L’aspect performance ! ! L’avenir : JDO, hibernate, EJB 3, . . . Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 17 / 17 Conclusion Les plus L’approche objet (passage naturel de UML à Java ) L’API riche au niveau des collections Une solution pour presque chaque aspect BD simple ! Les moins L’aspect requête Tout existe mais en version (trop) simplifiée L’aspect performance ! ! L’avenir : JDO, hibernate, EJB 3, . . . Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 17 / 17 Conclusion Les plus L’approche objet (passage naturel de UML à Java ) L’API riche au niveau des collections Une solution pour presque chaque aspect BD simple ! Les moins L’aspect requête Tout existe mais en version (trop) simplifiée L’aspect performance ! ! L’avenir : JDO, hibernate, EJB 3, . . . Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 17 / 17 Conclusion Les plus L’approche objet (passage naturel de UML à Java ) L’API riche au niveau des collections Une solution pour presque chaque aspect BD simple ! Les moins L’aspect requête Tout existe mais en version (trop) simplifiée L’aspect performance ! ! L’avenir : JDO, hibernate, EJB 3, . . . Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 17 / 17 Conclusion Les plus L’approche objet (passage naturel de UML à Java ) L’API riche au niveau des collections Une solution pour presque chaque aspect BD simple ! Les moins L’aspect requête Tout existe mais en version (trop) simplifiée L’aspect performance ! ! L’avenir : JDO, hibernate, EJB 3, . . . Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 17 / 17 Conclusion Les plus L’approche objet (passage naturel de UML à Java ) L’API riche au niveau des collections Une solution pour presque chaque aspect BD simple ! Les moins L’aspect requête Tout existe mais en version (trop) simplifiée L’aspect performance ! ! L’avenir : JDO, hibernate, EJB 3, . . . Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 17 / 17 Conclusion Les plus L’approche objet (passage naturel de UML à Java ) L’API riche au niveau des collections Une solution pour presque chaque aspect BD simple ! Les moins L’aspect requête Tout existe mais en version (trop) simplifiée L’aspect performance ! ! L’avenir : JDO, hibernate, EJB 3, . . . Olivier Caron (Polytech’Lille) Le SGBD Java SGBD GIS 4 17 / 17