J'ai moi-même fait des recherches et je comprends le concept de base. Mais certaines connaissances ne peuvent être acquises que par l'expérience réelle.
Quels sont les avantages de myBatis qui rendraient l’apprentissage d’un nouveau cadre intéressant?
Dans quel cas éviterais-tu de l'utiliser?
orm
database-development
hibernate
Kshitiz Sharma
la source
la source
Réponses:
Considérez ce que vous essayez d'atteindre. En règle générale, le modèle de séparation des réponses de requête de commande fonctionne bien pour les domaines complexes.
La raison en est que vous essayez généralement de faire l'une des deux choses suivantes:
Hibernate fonctionne bien pour le cas 1 vous permettant de créer un POJO et de le conserver / mettre à jour. Il le fait également rapidement, à moins que votre domaine ne soit assez volumineux.
myBatis est idéal pour les requêtes d'extraction (cas 2) pour lesquelles vous voulez juste une réponse. Hibernate essaierait de charger tout le graphe d'objet et vous auriez besoin de commencer à ajuster les requêtes avec des astuces LazyLoading pour qu'il continue à fonctionner sur un grand domaine. Ceci est important lors de l'exécution de requêtes analytiques complexes qui ne renvoient même pas d'objets d'entité. Hibernate n'offre dans ce cas que des transformateurs SqlQuery et bean Transformers avec d'énormes types par défaut tels que BigDecimal, tandis que myBatis pourrait facilement être mappé sur une simple non-entité POJO.
Ces deux cas sont la différence entre les commandes pour lesquelles vous souhaitez modifier les données du domaine et les Réponses pour lesquelles vous souhaitez simplement extraire des données.
Alors, considérons ces deux cas et ce que fait votre application. Si vous avez un domaine simple et récupérez simplement des informations, utilisez myBatis. Si vous avez un domaine complexe et des entités persistantes, utilisez Hibernate. Si vous faites les deux, envisagez une approche hybride. C’est ce que nous utilisons dans notre projet qui compte des milliers d’entités pour le garder sous contrôle. ;)
la source
MyBatis est centré sur SQL. Il vous permet d’appeler des instructions SQL et d’affecter des résultats (tables) à des arborescences d’objets.
Le principal avantage est que ce n'est pas un ORM. Il ne mappe pas les tables sur les objets et ne souffre donc pas du désadaptation des impédances orm. Convient aux bases de données complexes ou existantes ou à l'utilisation de fonctionnalités de base de données telles que les procédures stockées, les vues, etc.
Il est assez simple et facile à apprendre, il convient donc également aux équipes peu qualifiées, car il n’est pas nécessaire d’avoir un gourou en veille prolongée parmi elles.
Jetez un coup d'œil à jpetstore 6 http://mybatis.org/spring/sample.html
la source
Puisque la question fait référence à mon commentaire , voici ce que j'avais en tête de l'écrire.
Tout d'abord, cela découle du contexte de votre question initiale. Dans d'autres circonstances, je pourrais donner un conseil différent. Le point qui m'a fait suggérer MyBatis est la suivante:
Dans l'un des projets précédents, notre équipe a envisagé de quitter Hibernate pour les raisons que vous décrivez. Comme vous, nous allions passer à JDBC, mais des collègues d’un autre projet nous ont recommandé MyBatis. L'équipe a décidé d'essayer, tout en conservant JDBC comme option de secours en cas de problème.
À ce moment-là, je ne connaissais rien à MyBatis, mais j’avais suffisamment d’expérience avec JDBC pour être sûr que cela fonctionnerait. Malgré cela, je soutenais fortement l'idée d'essayer MyBatis, principalement parce que, selon mon expérience passée, la quantité de code passe-partout que nous aurions à écrire avec JDBC serait simplement décourageante.
Quoi qu'il en soit, nous avons essayé MyBatis et cela a fonctionné comme annoncé. C'est pourquoi j'ai écrit le commentaire que vous demandez.
Au cas où, si vous attendez de moi que je vous donne un aperçu détaillé de la technologie, ou que vous louiez sa supériorité, désolé, je ne peux pas le faire. Si je pouvais - je l’aurais déjà écrit dans une réponse distincte à votre question initiale, au lieu de faire un bref commentaire. J'ai mentionné que je ne savais rien de MyBatis à l'époque - eh bien, j'en ai encore assez peu de connaissances désolé. La transition à partir d'Hibernate a été effectuée par d'autres membres de l'équipe et cela n'a pas eu d'incidence sur le code sur lequel je travaillais. Je n’ai fait que rappeler les points à retenir (sur la base desquels j’ai fait mon commentaire), à savoir que 1) MyBatis a résolu les problèmes que nous avions avec Hibernate, 2) il n’a pas introduit de problèmes propres et 3) il nous a permis d’éviter d’écrire le code standard I s’attendait au cas où nous passerions à JDBC. C'est tout.
la source
Hibernate est bien connu pour sa magie , son comportement inattendu et sa courbe d’apprentissage. Il existe d'autres cadres plus axés sur la simplicité et qui vous permettront de garder le contrôle.
myBatis en fait partie, mon projet MentaBean en est un autre. J'ai écrit un billet de blog à ce sujet qui pourrait aider.
la source
J'ai utilisé Hibernate pour un projet de chargement et de transformation de données il y a 5 ans avec Hibernate 3 et j'ai pensé que c'était merveilleux. Je fais une petite application de commerce électronique et j'ai essayé d'utiliser Hibernate 4 et j'ai été extrêmement déçu. Ils ont supprimé les outils et étroitement intégrés à l'IDE. J'ai essayé MyBatis et je travaille tout en une nuit et je suis ravi de la facilité avec laquelle il est facile de l'intégrer à une application. Je pense que Hibernate est devenu trop lourd et que j'utiliserais maintenant EJB 3 par rapport à Hibernate.
la source