Conception d'EJB

Conception d'EJB - Java - Programmation

Marsh Posté le 01-10-2002 à 09:55:29    

Question d'un newbie en la subtile matière que sont les EJB.
 
J'ai fait un modèle de données relationnel pour représenter un arbre quelconque. Maintenant, j'aimerais faire des EJB pour gérer cet arbre (création de noeuds, suppression de noeuds, parcours, etc.). J'hésite entre faire un EJB entité qui représente mon arbre en entier et qui possède toutes les mèthodes qui m'intéressent (parcours, création de noeuds, etc.) ou faire plusieurs EJB entités représentant des noeuds et des chemins et qui seraient gérés par un EJB session.
 
Quelle est votre opinion là-dessus ?
 
Il faut savoir par ailleurs que l'arbre en question est le même pour tout le monde, il n'y aura que 2 ou 3 utilisateurs autorisés à le maintenir (je dis ça par rapport à une éventuelle problématique de cache).

Reply

Marsh Posté le 01-10-2002 à 09:55:29   

Reply

Marsh Posté le 01-10-2002 à 11:06:13    

bin normallement tu dois faire ca en Objet avant tout. Donc si tu as un arbre composé de noeud, tu peux faire une EJB noeud et utiliser l'OO pour construire ton arbre (par spécialisation et composition).
 
Pour ton session bean, ca n'a rien à voir. Tout dépend des fonctionnaités que tu fournis à tes users. Tu peux faire un session façade mais ca dépend si tu as une notion de session ou non.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 01-10-2002 à 11:24:14    

C'est quoi "l'OO" ? Mon idée, c'était effectivement construire des objets simples du style "noeud", "chemin", etc. et les fédérer (i.e. gérer leur instanciation) dans un EJB entité appelé "Arbre". Est-ce valable ?
 
Sinon, ma question c'était aussi pour savoir si qq'1 voyait l'intérêt d'un EJB session, car a priori, je ne vois pas l'intérêt d'en avoir un : je ne pense pas qu'il y ait de session, sauf peut-être pour les utilisateurs qui vont gérer l'arbre (pour les autres utilisateurs, il n'y aura que la "lecture" de l'arbre dans son état actuel).

Reply

Marsh Posté le 01-10-2002 à 11:24:56    

chuis d'accord avec DarkLord, quel intéret d'utiliser des Entity Beans si tu as concu un modèle de données relationnel et non objet? :??:  
l'utilité des Entity Beans, c'est justement de te libérer de la conception relationnelle (surtout avec les CMP).
 
sinon si tu veux vraiment utiliser des Entity Beans, il est fortement conseillé d'appliquer le design pattern Session Facade, pour éliminer les gros problèmes de performances liés à l'utilisation des Entity Beans (surtout 1.1), sauf si ton modèle objet est trés simple (genre moins de 5 classes et pas trop de relations)
 :jap:

Reply

Marsh Posté le 01-10-2002 à 11:26:14    

OO = Orienté Objet
 
l'intérêt d'avoir un EJB Session ?  ben pouvoir gérer cet objet en session quoi ... soit tu en as besoin, soit c'est pas le cas ...

Reply

Marsh Posté le 01-10-2002 à 11:26:48    

:jap:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 01-10-2002 à 11:26:53    

_guigui_ a écrit a écrit :

 
sinon si tu veux vraiment utiliser des Entity Beans, il est fortement conseillé d'appliquer le design pattern Session Facade, pour éliminer les gros problèmes de performances liés à l'utilisation des Entity Beans (surtout 1.1), sauf si ton modèle objet est trés simple (genre moins de 5 classes et pas trop de relations)
 :jap:  




 
quel rapport avec les perfs ?

Reply

Marsh Posté le 01-10-2002 à 11:27:11    

benou a écrit a écrit :

 
 
quel rapport avec les perfs ?




 
les EJB en CMP c'est mega lourd !


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 01-10-2002 à 11:27:35    

en quoi une facade va régler le problème ?

Reply

Marsh Posté le 01-10-2002 à 11:33:47    

Désolé de vous interrompre, mais là, ça va un peu trop loin par rapport à ce que je connais des EJB.
 
Pour moi, un des buts des EJB entité est de "mapper" un modèle relationnel sur une conception objet. Dans mon modèle, j'ai une table centrale qui s'appelle "noeuds" et qui boucle sur elle-même pour représenter la notion de parent. A côté de ça, j'ai une autre table ("fils" ) qui me permet de représenter la notion de fils ; ça doit me servir à parcourir l'arbre dans le sens descendant.
 
Vous êtes d'accord avec ça, ou pas ?

Reply

Marsh Posté le 01-10-2002 à 11:33:47   

Reply

Marsh Posté le 01-10-2002 à 11:33:56    

alors les pbs de perf (je parle pas du développement bien chiant)des Entity Beans:
on a un modèle distribué, c'est à dire que pour appeler une méthode de ton Entity Bean, ca passe par RMI, donc tu as des appels de JVM à JVM, voir à travers le réseau
bon tu me diras c'est pareil avec les Session Beans...
oui MAIS dans tes Entity Beans on a ce qu'on appelle une "granularité fine", tu as des getters et des setters sur les attributs de l'objet métier, alors que tu n'as que des méthodes dans le session bean...
autrement dit, avec l'entity bean, à chaque fois que tu veux récupérer un attribut, BLAM :gun: appels RMI de partout d'où baisse énorme des perfs! :sweat:  
alors qu'avec un session bean devant, tu fais getEntityBean, et hop tu récupère tout d'un coup :sol:  
 
bon c'est ce que j'ai compris du facade pattern, en gros c'est ca :jap:
 
EDIT: oups désolé pour le squattage de topic ;)


Message édité par _guigui_ le 01-10-2002 à 11:35:25
Reply

Marsh Posté le 01-10-2002 à 11:37:34    

_Mac_ a écrit a écrit :

Désolé de vous interrompre, mais là, ça va un peu trop loin par rapport à ce que je connais des EJB.
 
Pour moi, un des buts des EJB entité est de "mapper" un modèle relationnel sur une conception objet. Dans mon modèle, j'ai une table centrale qui s'appelle "noeuds" et qui boucle sur elle-même pour représenter la notion de parent. A côté de ça, j'ai une autre table ("fils" ) qui me permet de représenter la notion de fils ; ça doit me servir à parcourir l'arbre dans le sens descendant.
 
Vous êtes d'accord avec ça, ou pas ?




ben c'est plutot le contraire, tu fais une conception objet, parce que c'est quand même ca qu'on est censé faire quand on fait du java hein ;)  
dans ton cas, tu fais un objet "noeud", un objet "fils", et aprés ben tu fais tes méthodes comme tu veux pour parcourir ton arbre.
si tu fais des Entity Beans CMP, tu n'auras même pas besoin de t'occuper tu mapping objet/relationnel, c'est automatique.

Reply

Marsh Posté le 01-10-2002 à 11:38:12    

guigui -> ok.
 
mais on est d'accord, ce n'est utile que si les objets facade ne sont pas qu'un simple "raccourcis" vers les methodes des entity, sinon ca sert a rien : il faut qu'il 'factorise' plusieurs traitement consécutifs sur l'entity (ces traitements seront réalisés en local => plus rapidement)

Reply

Marsh Posté le 01-10-2002 à 11:38:57    

_guigui_ a écrit a écrit :

bon c'est ce que j'ai compris du facade pattern, en gros c'est ca :jap:




 
c'est un peu réducteur mais pour les perfs l'idée est là :)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 01-10-2002 à 11:43:38    

DarkLord a écrit a écrit :

 
 
c'est un peu réducteur mais pour les perfs l'idée est là :)




à quel niveau c'est réducteur? si tu veux développer ca m'intéresse :)
l'autre pb des Entity Beans, c'est évidemment le temps de développement, avec 3 classes par objet (4 avec la classe key), plus les descripteurs XML, plus le session bean si tu fais ca bien, c'est  HORRIBLEMENT lourd... :fou:

Reply

Marsh Posté le 01-10-2002 à 11:44:46    

benou a écrit a écrit :

guigui -> ok.
 
mais on est d'accord, ce n'est utile que si les objets facade ne sont pas qu'un simple "raccourcis" vers les methodes des entity, sinon ca sert a rien : il faut qu'il 'factorise' plusieurs traitement consécutifs sur l'entity (ces traitements seront réalisés en local => plus rapidement)




vi vi  :jap:

Reply

Marsh Posté le 01-10-2002 à 12:01:00    

Conclusion, je fais quoi ????  :cry:

Reply

Marsh Posté le 01-10-2002 à 12:14:31    

_guigui_ a écrit a écrit :

 
à quel niveau c'est réducteur? si tu veux développer ca m'intéresse :)
l'autre pb des Entity Beans, c'est évidemment le temps de développement, avec 3 classes par objet (4 avec la classe key), plus les descripteurs XML, plus le session bean si tu fais ca bien, c'est  HORRIBLEMENT lourd... :fou:  




 
je peux mais pas tout de suite ;)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 01-10-2002 à 12:32:07    

DarkLord a écrit a écrit :

 
 
je peux mais pas tout de suite ;)




je te le rappelerai tu vas pas te défiler comme ca :D

Reply

Marsh Posté le 01-10-2002 à 14:09:55    

C'est quoi, alors, vos idées sur la façon d'utiliser les EJB ???

Reply

Marsh Posté le 01-10-2002 à 15:12:43    

_Mac_ a écrit a écrit :

C'est quoi, alors, vos idées sur la façon d'utiliser les EJB ???




mon idée à moi c'est de les utiliser uniquement si c'est VRAIMENT nécessaire ...
je trouve ca super lourd et contraignant.  
 
Maintenant, y a beaucoup de projet pour lequel les EJB sont très utiles, mais le choix EJB-pas EJB ne doit pas être fait à la légère : y a une bonne marge de JH entre les 2 !

Reply

Marsh Posté le 01-10-2002 à 15:28:30    

benou a écrit a écrit :

 
mon idée à moi c'est de les utiliser uniquement si c'est VRAIMENT nécessaire ...
je trouve ca super lourd et contraignant.  
 
Maintenant, y a beaucoup de projet pour lequel les EJB sont très utiles, mais le choix EJB-pas EJB ne doit pas être fait à la légère : y a une bonne marge de JH entre les 2 !  




 
A mon avis, dans un contexte full J2EE et pour ce que je veux faire, c'est tout vu : c'est EJB, et rien d'autre...

Reply

Marsh Posté le 01-10-2002 à 15:32:37    

_Mac_ a écrit a écrit :

 
 
A mon avis, dans un contexte full J2EE et pour ce que je veux faire, c'est tout vu : c'est EJB, et rien d'autre...




 
pas d'accord. C'est vraiment trop lent. Le seul truc de vraiment valable au niveau EJB c'est les asynchronous message bean dans EJB 2.0
 
Pour le reste ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 01-10-2002 à 15:34:48    

Vous feriez quoi, alors ? Un truc tout con qui fait un lookup sur le data source de la base de données, et c'est tout ?

Reply

Marsh Posté le 01-10-2002 à 15:41:04    

_Mac_ a écrit a écrit :

 
 
A mon avis, dans un contexte full J2EE et pour ce que je veux faire, c'est tout vu : c'est EJB, et rien d'autre...




nan :non:  
pour ce que tu veux faire, l'idéal, c'est JDO (Java Data Objects).
Je vais pas tarder à mettre mon rapport de stage en Francais en ligne (5 mois de stage JDO :D ), mais en attendant si l'anglais te rebute pas, www.jdocentral.com www.libelis.com
 :sol:
 
EDIT: t'as le droit de te faire tes objets et le mapping objet relationnel à la mimine avec JDBC, t'es pas obligé d'utiliser les EJB ou JDO (sauf si tu veux la gestion des transactions, les notions de sécurité qu'apportent les EJB)


Message édité par _guigui_ le 01-10-2002 à 15:42:52
Reply

Marsh Posté le 01-10-2002 à 15:44:03    

_guigui_ a écrit a écrit :

 
nan :non:  
pour ce que tu veux faire, l'idéal, c'est JDO (Java Data Objects).
Je vais pas tarder à mettre mon rapport de stage en Francais en ligne (5 mois de stage JDO :D )




je peux te dire que je suis vachement impatient de le lire !!!!!!!  :jap:

Reply

Marsh Posté le 01-10-2002 à 16:01:10    

j'ai juste quelques paragraphes à virer, genre la présentation de l'entreprise, les remerciements, les logos de la boite etc etc...
faut que je fasse ca un de ces soirs j'ai la flemme... :(

Reply

Marsh Posté le 01-10-2002 à 16:46:26    

_guigui_ a écrit a écrit :

j'ai juste quelques paragraphes à virer, genre la présentation de l'entreprise, les remerciements, les logos de la boite etc etc...
faut que je fasse ca un de ces soirs j'ai la flemme... :(  




dit toi que tu as déjà un lecteur d'assuré !!!  :)

Reply

Marsh Posté le 01-10-2002 à 16:55:58    

benou a écrit a écrit :

 
dit toi que tu as déjà un lecteur d'assuré !!!  :)  




 
 :non: 2


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 01-10-2002 à 17:24:04    

_guigui_ a écrit a écrit :

 
nan :non:  
pour ce que tu veux faire, l'idéal, c'est JDO (Java Data Objects).
Je vais pas tarder à mettre mon rapport de stage en Francais en ligne (5 mois de stage JDO :D ), mais en attendant si l'anglais te rebute pas, www.jdocentral.com www.libelis.com
 :sol:
 
EDIT: t'as le droit de te faire tes objets et le mapping objet relationnel à la mimine avec JDBC, t'es pas obligé d'utiliser les EJB ou JDO (sauf si tu veux la gestion des transactions, les notions de sécurité qu'apportent les EJB)




 
 :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:

Reply

Marsh Posté le 02-10-2002 à 12:36:21    

_guigui_ a écrit a écrit :

j'ai juste quelques paragraphes à virer, genre la présentation de l'entreprise, les remerciements, les logos de la boite etc etc...
faut que je fasse ca un de ces soirs j'ai la flemme... :(  




 
ca m'intéresse aussi !


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 02-10-2002 à 17:37:07    

:sarcastic: Dire que depuis des années, ce genre de choses se fait tout seul par les SGBDOO...

Reply

Marsh Posté le 02-10-2002 à 17:43:59    

BifaceMcLeOD a écrit a écrit :

 :sarcastic: Dire que depuis des années, ce genre de choses se fait tout seul par les SGBDOO...




j'attend tjs d'en voir un qui me convainc...
de plus tu peux difficelement intégrer ça dans un système existant...


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 02-10-2002 à 18:30:47    

Ben si, justement, c'est une des facilités de tout système objet... Donc des SGBDO en particulier (attention, je parle de vrais SGBD, avec gestion des transactions, intégrité référentielle, etc...)
 
Te convaincre de quoi ? Que c'est viable ?

Reply

Marsh Posté le 02-10-2002 à 18:32:29    

commode à utiliser


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 02-10-2002 à 18:40:26    

Je t'en donne une idée en Java :

Code :
  1. import java.util.Collection;
  2. import java.util.Iterator;
  3. class Person {
  4.    String nom, prenom;
  5.    Date   naissance;
  6.    public Person(String nom, String prenom, Date naissance) {
  7.       ...
  8.    }
  9.    public int age() {
  10.       ...
  11.    }
  12. }
  13. ...
  14. Database    database = Database.openSession("..." );
  15. Transaction transaction   = database.getTransaction();
  16. Collection  mySetOfPerson = database.getRoot("People" );
  17. Person      person = new Person("Doe", "John", new Date(1969, 7, 23));
  18. transaction.start();
  19. mySetOfPerson.add(person);
  20. // L'objet "John Doe" devient automatiquement persistant.
  21. transaction.commit();
  22. Query   query = new Query("select p.nom, p.prenom, p.age from People p where p.nom=\"Doe\"" );
  23. // On aurait pu appeler Query.execute() qui aurait renvoyé une  
  24. // instance de java.util.Collection
  25. Iterator  result = query.iterate();
  26. ...
  27. database.close();


Message édité par BifaceMcLeOD le 02-10-2002 à 18:42:41
Reply

Marsh Posté le 02-10-2002 à 18:43:19    

ha .... les sgbdoo ... ca me rapelle mes études ! :)
 
c'est de quel sgbdoo dont tu te sers ?

Reply

Marsh Posté le 02-10-2002 à 18:46:46    

J'ai arrêté d'utiliser. J'utilisais O2. Mais le code ci-dessus est valable pour la plupart des SGBDO du marché.

Reply

Marsh Posté le 02-10-2002 à 19:03:12    

je me trompe pas ? elle a fermé la boite qui éditait O2 ?

Reply

Marsh Posté le 02-10-2002 à 19:47:37    

ouais
euh
ok
(select blablablabla->ben j'esperais plus avoir ça moi :o)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed