IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[Swing / Hibernate / JPA / Spring] Recherche d'exemples


Sujet :

AWT/Swing Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut [Swing / Hibernate / JPA / Spring] Recherche d'exemples
    Bonjour tout le monde,

    Je travaille sur un projet Swing avec NetBeans.

    Le client impose que la couche métier du projet soit faîte dans un projet à part, packagé ensuite en .jar.

    Le problème maintenant c'est que je dois faire un projet qui utilise Hibernate/JPA managé par Spring.
    J'ai cherché des exemples sur le net mais je trouve seulement des cas pour des projets web.

    Quelqu'un aurait-il des exemples d'applications Hibernate/JPA managé par spring à m'indiquer ?

    Merci infiniment pour votre aide.

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    http://static.springsource.org/sprin...m.html#orm-jpa

    Sachant qu'il te faudra configurer Hibernate en tant qu'implémentation de JPA

    De plus il est recommandé que la couche métier soit séparée de l'appli cliente. Et mise à disposition via des Web Services depuis un serveur Web.

    Celà évite particulièrement de laisser un accès direct à la base pour l'utilisateur, ce qui est dangereux niveau sécurité.

    Ce qui donne ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Client Swing <-----WebService----> Serveur d application contenant la couche métier gérée via Spring <----JDBC----> Base de données.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Merci d'abord pour la réponse.

    actuellement j'ai réussi à faire la couche persistence en utilisant hibernate/JPA : voici le code :
    -La class de test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    package ra.cabinet.persistence.jpa;
     
    import java.util.GregorianCalendar;
     
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.omg.CORBA.portable.ApplicationException;
     
    import ra.cabinet.persistence.pojos.Event;
     
    public class InitDB {
     
    	 public  static void main(String[] args) {
    	        // Récupération d'une session Hibernate
    	        Session s = HibernateUtils.getSession();
     
    	        // Début de la transaction
    	        Transaction t = s.beginTransaction();
     
    	        // Création d'un objet Event
    	        Event e = new Event();
    	        e.setTitle("Titre de l'event ");
    	        e.setDescription("Description de l'évènement 33");
    	        e.setBeginDate(new GregorianCalendar());
    	        e.setAllDay(false);
     
    	        // Enregistrement de l'event
    	        s.save(e);
     
    	        // Fin de la transaction
    	        t.commit();
     
    	        // Fermeture de la session Hibernate
    	        s.close();
    	    }
     
     
    }

    -La class hibernateUtils.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    package ra.cabinet.persistence.jpa;
     
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.AnnotationConfiguration;
     
    public class HibernateUtils {
     
    	 private static  final SessionFactory sessionFactory;
    	    // Crée une unique instance de la SessionFactory à partir de hibernate.cfg.xml
    	    static {
    	        try {
    	            sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
    	        } catch (HibernateException ex) {
    	            throw new RuntimeException("Problème de configuration : " + ex.getMessage(), ex);
    	        }
    	    }
     
    	    // Renvoie une session Hibernate
    	    public static Session getSession() throws HibernateException {
    	        return sessionFactory.openSession();
    	    }
     
    }
    Le fichier hibernate.cfg.xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
      "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
     
    <hibernate-configuration>
        <session-factory>
     
            <!--  Paramètres de connexion à la base de données -->
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password"></property>
            <!-- Comportement pour la conservation des tables -->
            <!--property name="hbm2ddl.auto">create</property>-->
            <!-- Fichiers à mapper -->
            <mapping class="ra.cabinet.persistence.pojos.Event" />
            <!-- Affiche les logs SQL -->
     
         </session-factory>
     </hibernate-configuration>

    Et l'entity Event :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    package ra.cabinet.persistence.pojos;
     
    import java.util.Calendar;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;
     
    /**
    *
    * @author USER
    */
     
    @Entity
    @Table(name="events_01")
    public class Event {
       @Id
       @GeneratedValue(strategy=GenerationType.AUTO)
       @Column(name="events_id")
       private Integer id;
       @Column(name="events_title", nullable=false)
       private String title;
       @Column(name="events_description")
       private String description;
       @Column(name="events_beginDate")
       @Temporal(TemporalType.DATE)
       private Calendar beginDate;
       @Column(name="events_allDay")
       private boolean allDay;
     
       public Event() {
       }
     
       public boolean isAllDay() {
           return allDay;
       }
     
       public void setAllDay(boolean allDay) {
           this.allDay = allDay;
       }
     
       public Calendar getBeginDate() {
           return beginDate;
       }
     
       public void setBeginDate(Calendar beginDate) {
           this.beginDate = beginDate;
       }
     
       public String getDescription() {
           return description;
       }
     
       public void setDescription(String description) {
           this.description = description;
       }
     
       public Integer getId() {
           return id;
       }
     
       public void setId(Integer id) {
           this.id = id;
       }
     
       public String getTitle() {
           return title;
       }
     
       public void setTitle(String title) {
           this.title = title;
       }
     
    }
    -Maintenant je veux faire la couche métier en spring, la couche qui manipules les résultats renvoyé par la couche persistance.

    Alors que pensez-vous de ça?

    Sinon franchement je vois pas comment faire pour configurer spring pour al couche métier, merci de m'indiquer comment faire.

    Merci d'avance.

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Spring doit tout manager, avec entre autres la couche de persistance.

    Tu trouveras un exemple concret d'une mise en place dans le billet du blog developpez suivant:

    http://blog.developpez.com/djo-mos/p...ge-par-spring/


    Cette partie métier doit elle être intégrée directement dans le client lourd, ou être séparée et et communiquer avec le client lourd via des WebServices?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Merci d'abord pour tes réponses.

    Oui j'ai vu ce blog, je suis entrain de le faire, mais j'ai un seul souci, comment indiquer a mon application (de type java application) qu'elle doit récupérer le fichier applicationContext du spring, l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ApplicationContext context = new ClassPathXmlApplicationContext("/spring-hibernate-jpa-config.xml");
    est suffisant?

    En faîte ce qui concerne l'intégration on va générer le .jar de cette partie métier et l'intégrer dans la couche présentation (l'application Swing).

    Tu penses que ça posera un problème?.

    Merci d'avance.

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il suffit de lui indiquer le chemin du fichier de config dans le classpath.


    Si le fichier de config se trouve dans le package com.monentreprise.monapplication il faudra écrire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ApplicationContext context = new ClassPathXmlApplicationContext("/com/monentreprise/monapplication/spring-hibernate-jpa-config.xml");

    Personellement je trouve qu'intégrer directement la partie service dans l'application java est une mauvaise idée. En effet, cela nécessite d'ouvrir l'accès à la base de données à tout les clients, et de plus d'intégrer les credentials (login/mot de passe) dans le livrable de l'application.

    Autant dire qu'avec cela n'importe qui pourrait se connecter à la base et faire n'importe quoi dedans.

    L'architecture à recommander est de mettre la partie métier/service sur un serveur d'application (un tomcat fera l'affaire), puis de mettre à disposition les diverses actions possibles sous forme de WebServices ou encore d'EJB. Et de ne permettre la connexion à la base de données que depuis ce serveur (et pour les DBA et développeurs bien sûr).

    Le client lourd devra lui appeler les WebServices (ou EJB) disponibles sur le serveur pour réaliser les diverses actions dont il a besoin.

    Donner un accès direct à la base de données à n'importe quel utilisateur est une faille de sécurité.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Bonjour,

    Je suis tout à fait d'accord avec toi, moi je voulait faire ça car je me suis dit que c'est une application desktop et pas web, donc on 'aura un seul utilisateur, mais comme tu as dit, c'est pas propre.

    Sinon je eux bien faire la solution des web service, mais j'ai jamais travaillé sur ça (pour moi c'est l'occasion).

    Donc coté architecture j'aurai :

    1)la couche metier/service managé par spring.
    2)la couche webservice pour accéder à la couche métier/service.
    3)la couche présentation (l'application Swing) qui fait appel au webService.

    C'est bien ça?

    un dernier point, STP tu connais un exemple simple de manipulation des webService?.
    Pour la gestion des habilitation (droits aux utilisateur),y'-t-il a un framework qui facilite ça? car ce que je veux faire, c'est récupérer à chaque fois le login/mot de passe saisi et vérifier (dans la couche service) si l'utilisateur à les droits, ces droits serons stocké dans la table de base de données.

    Tu penses c'est bien ça?

    Merci infiniment pour ton aide et tes indications.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Rebonjour,

    J'ai une petite question, dans le fichier applicationContexte.xml de spring, on' a bien les déclarations suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    beans xmlns="http://www.springframework.org/schema/beans" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:p="http://www.springframework.org/schema/p" 
      xmlns:context="http://www.springframework.org/schema/context" 
      xmlns:tx="http://www.springframework.org/schema/tx"
    Donc pour que l'application marche, il faut obligatoirement que le client aie une connexion internet?car le client c'est un cabinet médical, il se peut qu'il n' a pas de connexion, donc ça pose un problème?.

    Merci d'avance.

  9. #9
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    La couche WebService sera également gérée par Spring. De fait la couche métier et la couche service feront partie d'un seul et même livrable (celui qui va se placer sur Tomcat)

    Pour le management de la couche WebService, va voir ce que propose Spring-Ws: http://static.springsource.org/spring-ws/sites/1.5/

    Petiti tuto: http://hikage.developpez.com/java/tu...ice/spring-ws/

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Merci pour le lien du tutorial,sinon pour la gestion des habilitations des utilisateurs, je la fais d'une façon normal en java?(class qui vérifie les droits à partir d'une table de base de données).

    Sinon pour le problème de client qui ne dispose pas d'une connexion internet? les url du fichier de config de spring poserons problème, y pas de solution pour ça?.

    Merci d'avance.

  11. #11
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pour la partié sécurité, tu as Spring Security, à toi de voir ensuite si tu en as besoin...

    Tuto http://static.springsource.org/sprin...-tutorial.html

    Ton client n'a pas forcément besoin de Spring. En effet c'est la couche métier qui doit être gérée par Spring...

    Et de toute façon, ton client n'a pas besoin de connexion internet, juste d'accéder au réseau interne de la boite.

    Et puis sans réseau, pas d'accès à la base, donc ton client ne fonctionnera pas de toute façon...

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Merci pour la partie sécurité.

    Sinon pour le problème de connexion internet, je vois pas comment le client n'aura pas besoin, comme j'ai dit, le client est un cabinet médical, je vais lui donner le livrable de la couche metier aussi, et dans ce livrable on' a le fichier applicationContext.xml du spring, donc ça posera problème.

    le client (l'application swing) et la couche métier, vont être installé sur le même poste.

    Remarque: le cabinet ou on va installer le projet ne dispose pas de connexion internet.

    j'espère que j'ai bien expliqué le problème.

  13. #13
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Et la base de données?

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Je t'expliques mieux ce que je veux faire exactement.

    Il y' a deux installations possible :

    1)le Médecin en dispose pas de secrétaire, dans ce cas, la base de données et la couche métier et la couche présentation, tout sera sur son poste (c'est le cas le plus simple).

    2)Le médecin a une secrétaire, donc on aura deux pc, un chez la secrétaire et un autre chez le médecin qui seront liées par le réseau, dans ce cas la, je vais installer la base de données chez la secrétaire, la couche métier et client (avec des droits sur quelques écrans), et chez le médecin je vais installer seulement la couche présentation (je vais accéder à la couche métier installé chez la secrétaire via le webservice que tu m'as dit).

    Alors aucun pc ne dispose de connexion internet.

    Donc je veux un moyen si possible de pouvoir avoir tout les namspace etc... nécessaire au configuration de spring (pour le cas d'installation 1).

    Merci d'avance.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Pour plus de précision, lorsqu'on a un projet SPRING, et on génère le .jar de ce projet, et on livre ce jar au client qui n' a pas de connexion internet, ça va marcher? le jar va contenir les namespace nécessaires?

    Merci d'avance.

  16. #16
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Quand tu dis chez la secrétaire, tu signifies sur le poste de la secrétaire, dans le cabinet je suppose?

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Oui, c'est exactement ça .

    Sinon ça posera problème ça ? :
    Pour plus de précision, lorsqu'on a un projet SPRING, et on génère le .jar de ce projet, et on livre ce jar au client qui n' a pas de connexion internet, ça va marcher? le jar va contenir les namespace nécessaires?

    Merci d'avance.

  18. #18
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il n'y a pas besoind e connexion internet, il faudra par contre qu'il y ait un réseau local dans le cabinet, afin que les deux postes puissent communiquer (un simple Switch et deux cables ethernet feront l'affaire, ou un routeur Wifi...

    Les namespaces n'ont aucun besoin d'internet pour fonctionner. Ils pourraient tout à fait contenir toto qu'une URL.

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Merci beaucoup pour les réponses.

    Sinon j'ai essayé de faire le tutriel
    http://blog.developpez.com/djo-mos/p...ge-par-spring/

    Mais ça pas marché.

    Je dois créer moi même la classe User?.

    j'ai essayé de télécharger l'exemple mais ça donne une erreur (page non disponible), est-ce normal?Car dans le tutoriel, y'a pas de détails, comment lancer l'application?comment manipuler le fichier persistence.xml.

    Peux-tu m'aider pour ça STP?

  20. #20
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Oui, tu dois créer ta propre classe User...

    Ce tutoriel est juste là pour te montrer la partie Spring/JPA

    L'exemple global de l'application se trouve dans ce sujet: http://blog.developpez.com/djo-mos/p...prin/#more5861

    Quant au fichier persistence.xml, bah il fait partie de la norme JPA, je te redirige donc vers le cours de jmdoudoux sur ce même site: http://jmdoudoux.developpez.com/cour...a/chap-jpa.php

    Tu peu aussi voir des cours et tutoriels programmation Java : http://java.developpez.com/cours/

Discussions similaires

  1. Recherche sources JSF + Spring 3 + Hibernate / JPA
    Par pschiit dans le forum Spring
    Réponses: 2
    Dernier message: 28/11/2012, 16h09
  2. [Data] Spring hibernate JPA : second level cache
    Par nahtanojb dans le forum Spring
    Réponses: 0
    Dernier message: 11/04/2010, 19h32
  3. [Batch] Spring Batch + Hibernate JPA + Oracle
    Par spaw3003 dans le forum Spring
    Réponses: 1
    Dernier message: 09/03/2010, 18h28
  4. Réponses: 0
    Dernier message: 03/12/2008, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo