Le SGBD java - Polytech`Lille, page Olivier Caron

publicité
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
Téléchargement