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

NHibernate Discussion :

[Spring][NHibernate] Application (Winform) de gestion d'une base de données MySQL


Sujet :

NHibernate

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 102
    Points : 68
    Points
    68
    Par défaut [Spring][NHibernate] Application (Winform) de gestion d'une base de données MySQL
    Bonjour à tous,

    Je suis en train de me renseigner pour mettre en place le framework Spring.Net /NHibernate pour une application qui servira à gérer une base de donnée MySQL via une interface graphique.

    J'ai déjà jeté un oeil aux exemples venant avec l'installation de Spring.Net et particulierement le Spring.Data.NHibernate.Northwind

    Il est difficile de trouver un exemple très basique tournant sur une table pour tester le bon fonctionnement de sa config du framework spring et l'acces aux données via NHibernate ainsi que la bonne structure de son application.

    Au final il s'agit de faire une application 3 couches (DAO, Metier, UI) très simple qui permet de faire des opérations sur une table d'une base de données.

    Quelqu'un aurait une base assez simple ou un tuto pour mettre en place cette architecture très basique ? Ou des conseils pour attaquer une premiere application sous Spring.net / NHibernate ?

    Mon application ne sera pas orientée web contrairement à l'exemple Northwind.

    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Pour ce que tu veux faire tu n'as pas besoin d'utiliser Spring.

    Tu as juste besoin de gérer une factory au niveau application et de manipuler des sessions. Spring ne t'apportera rien de plus.

    Les exemples donnés dans le framework Spring sont simplistes au possible, donc si ceux là te sont inabordables, c'est que ce n'est pas ce que tu recherches et ce qu'il te faut (sans méchanceté aucune)

    Spring était utile en 1.2 pour les transactions (entre autres) et pour les architectures multi-tiers pour injecter le contexte nhibernate ("presqu'EJB").

    Aujourd'hui et à plus forte raison dans une application client serveur, tu ne ferais qu'ajouter une couche pas très pratique; déjà qu'un ORM en client serveur n'est pas souvent une bonne idée (perfs).

    Donc si tu veux faire une bonne application basée sur des données, il faut aussi éviter de la construire sur des technologies sur lesquels tu auras une grosse courbe d'apprentissage (spring et nhibernate sont complexes) et peu de certitudes.

    Je vais jeter un pavé dans la mare et m'attirer les foudres de plein de gens, mais pour faire select, insert et update dans une table avec des écrans, être en "couches" on s'en fout, et encore plus si c'est du client serveur. Dans ce cas l'architecture en couche, c'est juste un perf killer.

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    Hmm ton point de vue se defend. Ce qui m'interessait dans le fait d'utiliser un framework, c'était de mettre en place une architecture logicielle qui une fois configurée pourrait servir de base pour n'importe quelle application future (du moins pour les principales fonctionnalités).

    De plus c'est plutot NHibernate qui m'interesse pour faire une application CRUD de gestion de base de données. En effet le fait de laisser NHibernete gerer les transactions, sessions et de pouvoir recupérer les données dans un objet contenant une row de data me plait bcp.

    Actuellement j'ai mis en place un projet utilisant NHibernate. J'ai un deuxieme projet de test (NUnit) qui me permet de tester mes methodes. Actuellement j'arrive à compiler est à exporter un schema sous MySQL.
    Le problème que j'obtiens actuellement et lors de la création d'une session factory j'ai un message me demandant de configurer une factory session
    Pour la creation de l'objet configuration pas de problème par contre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Failures:
    1) FirstSolution.Tests.GenerateSchema_Fixture.Get_SerialNumber : NHibernate.Bytecode.ProxyFactoryFactoryNotConfiguredException : The ProxyFactoryFactory was not configured.
    Initialize 'proxyfactory.factory_class' property of the session-factory configuration section with one of the available NHibernate.ByteCode providers.
    Example:
    <property name='proxyfactory.factory_class'>NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
    Example:
    <property name='proxyfactory.factory_class'>NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
       at FirstSolution.Tests.GenerateSchema_Fixture.Get_SerialNumber() in C:\Documents and Settings\giordaj1\Desktop\SPRING-HIBERNATE\NHibernateCRUD\FirstSolution.Tests\GenerateSchema_Fixture.cs:line 74
    or dans mon hibernate.cfg.xml j'ai bien la ligne en question :

    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
    <?xml version="1.0" encoding="utf-8"?>
    <!-- 
    This template was written to work with NHibernate.Test.
    Copy the template to your NHibernate.Test project folder and rename it in hibernate.cfg.xml and change it 
    for your own use before compile tests in VisualStudio.
    -->
    <!-- This is the ByteFX.Data.dll provider for MySql -->
    <hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
    	<session-factory name="NHibernate.Test">
    		<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
    		<property name="connection.connection_string">
    			Database=spring;Data Source=localhost;User Id=spring;Password=spring
    		</property>
        <property name="proxyfactory.factory_class">NHibernate.ByteCode.Spring.ProxyFactoryFactory, NHibernate.ByteCode.Spring</property>
        <property name="dialect">NHibernate.Dialect.MySQLDialect</property>
        <property name ="show_sql">true</property>
    	</session-factory>
    </hibernate-configuration>
    Quelqu'un aurait une idée ?

    Config :
    NHibernate 3.0
    .Net 2.0
    MySql.Data 6.2.4.0
    Server MySQL 5.5

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Pourquoi utiliser Spring en particulier ?
    Tu as bien référencé la DLL pour le proxy spring ?

    Essayes avec le paramétrage castle qui est la factory par défaut.

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    En fait j'ai essayé avec les générateurs de proxy LinFu et Spring mais pas avec Castle. Je peux essayer en effet avec celui là.

    J'ai referencé les dll suivantes :

    Spring.Aop
    Spring.Core
    NHibernate.ByteCode.Spring

    comme vu dans des tutos.

    J'ai choisi Spring dans l'hypothese d'utiliser Spring.net une fois la configuration et la prise en main de NHibernate réussie...

    MAJ (Essais avec Castle) : idem même probleme des que je veux utiliser session factory... dès que je fais un buildSessionFactory() ça sort en erreur sur le même message que celui cité dans le premier post ...

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Ca vient d'ailleurs alors...Je vais essayer, si ça fonctionne je te donne le bout de code.

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    Je peux filer le code de mon projet si jamais ça peut aider... Y a pas de souci

    Ce qui est étonnant c'est que tout semble marcher jusqu'à ce que je demande à faire une sessionFactory = configuration.BuildSessionFactory().

    Il arrive par exemple à me créer la table sur le serveur MySQL.

  8. #8
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    Toujours au même point.
    Je ne sais plus trop par quel bout attaquer le problème à présent.

    Y a pas des avis éclairés ?

    Merci d'avance.


    PS : je suis parti du tuto http://nhibernate.hibernatingrhinos....ed-application

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    J'ajoute une reflexion à ce sujet.
    En effet, serait-il possible que la version du connecteur mysql que j'utilise n'est pas gérée correctement par le NHibernate.Driver.MySqlDataDriver ?
    J'ai entraperçu sur des fora que les versions de connecteurs pouvaient entrainer des problèmes...

    J'espère qu'une âme charitable aura une petite idée pour m'aider. Sachant que je peux fournir mon code de test sans problème.

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    [MAJ] j'ai mis à jour certaines dll et passé au Proxy LinFu ce qui a reglé mon pb.

    Merci pour votre aide

    Salut à tou(te)s encore une fois.

    Je poste les infos précises concernant ma configuration dans le cas où quelqu'un aurait une configuration similaire et chez qui NHibernate fonctionnerait. Impossible de faire marcher quoi que ce soit pour le moment alors qu'il y a une semaine j'avais une erreur sql qui s'affichait donc NHibernate semblait marcher.

    MySql server : 5.5.13
    MySql connector : 6.2.4.0
    Framework .Net 2.0
    Win Xp Pro sp3

    Serait-il possible que la version du connecteur que j'utilise pose des problèmes avec NHibernate ?

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/06/2012, 15h15
  2. Gestion d'une base de données Access en C++
    Par Mastero dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 01/10/2008, 11h23
  3. Réponses: 13
    Dernier message: 01/02/2008, 12h09
  4. Réponses: 3
    Dernier message: 30/05/2006, 19h09
  5. [JSP][Servlet][Tomcat][JDBC]Gestion d'une base de donnée.
    Par BakaOnigiri dans le forum Servlets/JSP
    Réponses: 31
    Dernier message: 16/05/2006, 20h51

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