Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > NHibernate
NHibernate Forum d'entraide sur l'utilisation du mappeur objet/relationnel NHibernate.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 23/09/2011, 12h05   #1
Xploit
Nouveau Membre du Club
 
Étudiant
Inscription : mai 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2009
Messages : 102
Points : 39
Points : 39
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
Xploit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 10h25   #2
B.AF
Membre Expert
 
Inscription : février 2005
Messages : 1 238
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 238
Points : 1 655
Points : 1 655
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.
B.AF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 16h36   #3
Xploit
Nouveau Membre du Club
 
Étudiant
Inscription : mai 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2009
Messages : 102
Points : 39
Points : 39
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 :
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 :
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
Xploit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 18h28   #4
B.AF
Membre Expert
 
Inscription : février 2005
Messages : 1 238
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 238
Points : 1 655
Points : 1 655
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.
B.AF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 09h41   #5
Xploit
Nouveau Membre du Club
 
Étudiant
Inscription : mai 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2009
Messages : 102
Points : 39
Points : 39
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 ...
Xploit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 16h03   #6
B.AF
Membre Expert
 
Inscription : février 2005
Messages : 1 238
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 238
Points : 1 655
Points : 1 655
Ca vient d'ailleurs alors...Je vais essayer, si ça fonctionne je te donne le bout de code.
B.AF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 16h29   #7
Xploit
Nouveau Membre du Club
 
Étudiant
Inscription : mai 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2009
Messages : 102
Points : 39
Points : 39
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.
Xploit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 10h54   #8
Xploit
Nouveau Membre du Club
 
Étudiant
Inscription : mai 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2009
Messages : 102
Points : 39
Points : 39
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
Xploit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 14h31   #9
Xploit
Nouveau Membre du Club
 
Étudiant
Inscription : mai 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2009
Messages : 102
Points : 39
Points : 39
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.
Xploit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 15h26   #10
Xploit
Nouveau Membre du Club
 
Étudiant
Inscription : mai 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2009
Messages : 102
Points : 39
Points : 39
[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
Xploit est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h16.


 
 
 
 
Partenaires

Hébergement Web