J'ai essayé XStream, et c'est pas super sexy. En plus de rajouter 350ko à mon applet.
Mon problème est que j'ai des objets contenant des objets contenant des listes d'objets... à un point tel qu'il faille éviter les requêtes de 5Mo.
Si j'ai un établissement de 2000 élèves, XStream peut envoyer en XML l'objet listeEleve, mais incluera des données sur chaque élève. Alors que l'id me suffit.
Doit bien y a voir de quoi bidouiller (si je me souviens bien XStream comporte 3 modes de fonctionnement), mais au final j'évite de me reposer sur une techno pour le moins peu encline à prospérer pendant 5-10 ans.
D'ailleurs je change ma signature
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
JDBC, Sympa, dans la même phrase
Sinon, oui, justement, le point fort de JDBC est qu'il est bas-niveau, et qu'il ne fait pas de la magie derrière ton dos ... mais il est trop pénible à utiliser ... correctement du moins, d'où ma proposition de Spring JDBC qui se propose d'ôter l'aspect casse-gueule de JDBC en le rendant sympa
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
???
J'utilise pas directement JDBC mais via un petit JDBCManager qui tient en 30-50 lignes. Je réduit considérablement le code dans les autres classes en gardant le contrôle de ce que je fait.
Pas envie d'aller me taper tout Hibernate avec ses fichiers de configuration.
Bonjour !
Personnellement, je conseille hibernate qui peut te fournir une première approche "facile" de tout ce qui touche à JPA et au mapping O/R. Disons que pour commencer à appréhender, c'est un excellent outil dans le sens où :
- Il est *assez* simple à mettre en place, et à utiliser
- Il possède une des docs Frameworks les plus abouties que j'ai vues à ce jour (et en français)
- Les rudiments sont rapides à assimiler, en progressant dans le domaine tu pourras te rendre compte qu'hibernate offre moults possibilités supplémentaires et tu pourras les utiliser au fur et à mesure que tes besoins évoluent
- Il permet de réaliser rapidement des couches de persistances très performantes et permettant une conception très souple de tes applications
Nous avons l'habitude de travailler dans une architecture classique disons du type Front + Services + DAOs les services et daos étant exposés par des interfaces et leur implémentations sont des POJOs, à part pour les DAOs qui possèdent une sessionFactory, mais ça s'arrête là. Hibernate ne dépeint à aucun moment sur le reste de notre application et on pourrait donc passer à du iBatis ou du JDBC demain en se contentant de réécrire les implémentations des DAOs. (Ca c'est pour convaincre les sceptiques qui disent que le fait d'avoir des proxys hibernate fout le boxon dans toutes les couches d'une application).
Pour garder en souplesse, tu peux utiliser Spring qui est un excellent outil pour gérer tes transactions, sessions, etc...
Sinon au niveau de l'utilisation d'hibernate tu peux décrire en quelques lignes en XML les liens entre tes objets métier et ta base de donnée. Tout est paramètrable, et pour un peu que tes objets correspondent avec un minimum de logique à ton schéma de base de donnée tu ne devrais pas avoir de problèmes à tout décrire. Sinon si tu es en Java 5+ et que tu n'attaches pas d'importance à ce genre de détails tu peux gagner un temps monstre en mettant des annotations dans tes objets métiers.
Et niveau utilisation c'est du pur bonheur, après très peu de configuration tu récupères et enregistre tes données aussi simplement que tu fais des get et sets sur des objets Java. (J'éxagère à peine).
Quant aux performances, je les trouve personnellement excellentes, pour un peu qu'on se donne la peine d'essayer d'optimiser un minimum la chose. Rien qu'en mettant un EhCache et en configurant des commits par lots ce qui prend peu de temps on se retrouve avec quelque chose de très performant.
Après énormément de gens crachent sur Hibernate à cause de ses performances, et c'est à peu près sûr, il ne sera jamais aussi performant qu'une couche JDBC classique. Mais ne plus écrire une seule ligne de SQL est à ce prix. Personnellement je préfère sacrifier 15% de performances et gagner 70% en temps de développement et en maintenabilité, mais tout dépend de ton contexte d'utilisation (pourcentages arbitraires, je ne me base sur rien d'autre que mon expérience personnelle pour dire ça).
Enfin voilà, après je manque d'expérience sur les concurrents, mais j'ai utilisé un autre Framework maison qui s'approche d'un hibernate, des EJB2 (pouah !), du JDBC classique et aucun ne m'a jamais apporté la même satisfaction qu'un Hibernate qui je pense reste le must en terme de rapidité de développement d'une couche de persistance. Le rapport qualité/prix est vraiment intéressant.
PS : et je conseille de piloter tout ça avec Spring histoire de faire les choses proprement
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Salut,
Perso, je te conseillerai bien Hibernate, parce qu'il est stable, et surtout bien documenté (tu n'auras pas trop de mal à trouver des tutos et des experts qui peuvent t'aider dans le domaine).
Concernant JPA, c'est une bonne alternative, mais moins complete. J'ai écrit un billet sur le sujet "Hibernate ou JPA" (il date un peu...) :http://www.dotnetguru2.org/bmarchess...&c=1&tb=1&pb=1
a+
Bruno
Bonjour à tous,
j'ai eu l'opportunité d'utiliser Hibernate sur plusieurs projets et effectivement j'ai trouvé cela "simple" à mettre en place. Par contre si on veut bien optimiser la chose, et ce qui est indispensable à mon avis (pool de connexion...), là c'est moins simple et il faut avoir la bonne information.
Je pense aussi que dans la mapping OMR il ne faut pas oublier Ibatis qui est très bien pour commencer cette approche. C'est un Hibernate like et light mais qui répond à beaucoup de besoins. J'ai eu l'occasion de le mettre en place dans une appli client en Eclipse RCP et on a eu aucun prb.
Merci jlechardeur. Quand je me suis intéressé aux outils D'ORM, ça m'a donné l'impression d'être une véritable jungle. J'ai mis beaucoup de temps à m'y retrouver dans cette foultitide d'implémentations, avant de m'arrêter sur iBatis. Moins connu mais simple et efficace. Je l'utilise actuellement sur un gros projet et le résultat est franchement là.
Comparaison avec Hibernate à voir ici (en anglais): http://www.nofluffjuststuff.com/media.jsp?mediaId=27
Si un jour on te reproche que ton travail n'est pas un travail de professionnel, dis-toi bien que l'Arche de Noé a été construite par des amateurs et le Titanic par des professionnels...
Olé,
Je suis toujours assez étonné qu'on ne parle jamais de Cayenne (http://cayenne.apache.org/) qui est un outil plutôt récent, et qui a la particularité de fournir un GUI très simple d'utilisation pour paramétrer le mapping (plus vraiment besoin d'aller directement touiller dans des fichiers de config XML ... en tout cas pour un mapping "simple").
Pour l'avoir utilisé (sans aucune connaissance préalable de la problématique des ORM) je le recommande chaudement . Il est vraiment très simple à prendre en main ... sans être limité à un usage simpliste. Enfin .. je vous laisse juge en allant lire la doc !
A+
Est-ce réellement plus simple qu'un mapping hibernate avec annotations ? Perso, j'annote mes enties pour les agrégations, je définie un datasource. Et c'est fini. Hibernate va même jusqu'à générer la structure de la base automatiquement...
Lorsque vous faites du Mapping, vous utilisez des outils UML style PowerAMC (PowerBuilder) pour mettre en phase le model et les données ?
Ou votre IDE permet de faire des trucs automatiques ?
Bonjour,
En fait, en travaillant avec JPA, je ne fais pas exactement du mapping dans la mesure où je pars du Java et que j'ai pas de schéma existant: je modélise mon domain model en terme d'objets (PAO) et j'annote le tout par les annotations JPA, ce qui me permet ensuite de générer (automatiquement) le schéma correspondant dans la base de données.
PochyPoch a fait un bon résumé de ce que je penses également quant à savoir une implémentation assez facile et qui te permet de bien garder la séparation entre toutes les couches. Pour ce qui est de la syntaxe des requêtes, tu fais en quelques lignes des requêtes qui t'aurais mis 2 jours à écrire.
Dans notre projet, on a une architecture n-tiers et on a généré les fichiers mapping et le modèle avec un outil hibernate, on a mis une couche "gestion des données" par dessus qui peut être remplacer sans problème si on change d'ORM et tout se fait proprement.
Tu peux paramétrer l'accès à chaque donnée comme bon te semble avec les fichiers XML.
Bref, c'est ma première expérience avec un ORM et j'en suis très content! ET détail non négligeable, tu as une communauté assez vaste et il y a du monde pour te répondre à tes questions autant en français qu'en anglais.
Mes logiciels n’ont jamais de bug. Ils développent juste certaines fonctions aléatoires.
Au moyen de Hibernate Tools
Mes logiciels n’ont jamais de bug. Ils développent juste certaines fonctions aléatoires.
Pourquoi les EJB (entity) n'ont pas été evoqués? C'est bien des objets de mapping avec gestion intégrée de la persistance non?
Bah peut être parceque ça date un peu (EJB 2) ,que ça a été viré de EJB 3 et remplacé par une solution infiniment plus propre, simple et flexible qui est JPA ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager