java - 关于mybatis和hibernate的困惑
巴扎黑
巴扎黑 2017-04-18 09:32:16
0
19
1639
  • 由于java视频里以前好多都是SSH。但是在实际工作中没见过用hibernate的,基本都用mybatis。

  • 我有一些疑问:

    • hibernate碰到什么样的业务会变成致命的弱点,都说hibernate效率低,能否举个例子(例如同一个查询用mybatis查询耗时1秒,用hibernate查询耗时10秒)

    • 可能是有部分人遇到了hibernate的瓶颈,但是这部分人的业务量我觉得,不是大部分使用hibernate的人都能遇到的。一般的小项目,不超过100个用户,这样的项目综合考虑的话更适合用mybatis还是hibernate?主要从开发效率上来说的话。为什么?

谢谢

巴扎黑
巴扎黑

répondre à tous(19)
Peter_Zhu

Vous pouvez essayer : http://www.oschina.net/p/monalisa-core Il est plus pratique à utiliser avec le plug-in Eclipse :

.
  • Prend en charge la génération automatique de DTO

    Les requêtes SQL n'ont pas besoin d'écrire des DTO comme Mybatis, puis de configurer un tas de mappages de champs. Le plug-in fait tout cela automatiquement pour vous.
    Article de référence : Comment générer automatiquement des DTO basés sur du code SQL dynamique.

  • Syntaxe de chaîne multiligne

    Écrire des chaînes multilignes en code Java devient très simple.

  • Opérations DataTable

    DataTable peut être utilisé pour interroger des tables de base de données avec une sélection de champs, un filtrage, une agrégation, un regroupement, JOIN, etc. pratiques.

大家讲道理

hibernate convient aux ajouts, suppressions et modifications d'une seule table, et l'efficacité du développement est très élevée. Cependant, une fois que l'entreprise se développe ou que la conception db originale n'est pas bonne, vous devez rejoindre la table. requête (car l'idée d'hibernation est de classer la table, mais dans la vraie vie, il n'est pas facile d'obtenir une généralisation complète au début d'un projet) Des résultats différents ainsi que la suppression et la correspondance réduiront l'efficacité (sauf si vous écrivez sql, mais de cette façon, il est préférable d'utiliser mybatis au début), surtout lorsque vous rencontrez de grandes quantités de données, l'efficacité chutera de façon exponentielle.
Pas plus de 100 utilisateurs ? , l'ordre de grandeur ici n'est pas calculé sur la base d'un seul tableau. Si un seul tableau dépasse une certaine quantité de données, il ne peut pas être résolu en utilisant simplement hibernate ou mybatis. à changer si vous utilisez mybatis. D'après mon expérience, s'il s'agit d'un grand nombre de requêtes de table de jointure et que l'affaire est complexe (c'est généralement le cas jusqu'à la fin du projet), il est préférable d'utiliser mybatis les requêtes simples sont plus rapides que hibernate. (开发效率)

伊谢尔伦

Le coût d'apprentissage de la mise en veille prolongée est relativement élevé, mais il existe des spécifications JPA dans j2ee, et l'apprentissage des spécifications est acceptable. Mybatis est relativement simple, facile à utiliser et contrôlable. Hibernate a des coûts d'apprentissage élevés, est trop orienté objet et est difficile à régler. Quant à l'utilisation, cela dépend de chacun. Pour les applications toB ou toC, je préfère mybatis, mais pour la gestion backend, hibernate c'est bien

Peter_Zhu

Merci pour l'invitation ! Les réponses suivantes sont toutes très bonnes. Premièrement, MyBatis est facile à apprendre. Deuxièmement, il est flexible et facile à contrôler en écrivant directement du SQL. Quant aux performances, ce n'est pas l'efficacité du développement et la maintenabilité qui sont bien plus importantes que les performances. .

左手右手慢动作

hiberbate utilise des objets Java pour écrire du SQL, tandis que mybatis écrit directement du SQL natif. Le premier est amusant à développer pendant un certain temps et entretient le crématorium (modification) ; le second nécessite une certaine compréhension des connaissances SQL (par rapport au premier si l'entreprise dispose d'un DBA, il est beaucoup plus intuitif pour lui de lire en natif). SQL que le code Java. Quant aux performances, dans la plupart des cas, il n'est pas nécessaire d'en tenir compte (si vous voulez vraiment y réfléchir, vous pouvez rechercher "supprimer ORM" dont certaines personnes ont discuté ces dernières années. La chose la plus importante est la maintenabilité).

伊谢尔伦

Hibernate et mybatis ne sont que des encapsulations de JDBC. Le fait que les performances du programme soient bonnes ou non dépend principalement du fait que le SQL soit bien écrit et que la conception de la base de données soit raisonnable. Bien sûr, de nombreux SQL en veille prolongée sont implémentés par programme. les deux frameworks sont tous très compétents, et il ne devrait pas y avoir beaucoup de différence de performances lorsqu'ils sont utilisés. Ensuite, le problème vient du fait qu'Hibernate est trop encapsulé, et il est en fait assez difficile de le maîtriser. , et le coût d'apprentissage est faible. De plus, la mise en veille prolongée est utilisée dans de nombreux scénarios. Si vous n'êtes pas particulièrement compétent, le programme que vous écrivez aura parfois des situations inattendues et ne fera pas grand-chose. les résultats du programme sont généralement plus faciles à prévoir.
Les deux frameworks sont en fait très bien conçus, mais les habitudes d'utilisation personnelles sont plus importantes. Les personnes habituées à mybatis auront généralement du mal à passer en veille prolongée. En revanche, les personnes qui maîtrisent vraiment la mise en veille prolongée ne le feront probablement pas. utilisez-le délibérément mybatis (humble opinion personnelle).

伊谢尔伦

L'utilisation de Mybatis dans le travail réel n'est fondamentalement pas basée sur des considérations de performances ou de convivialité, mais sur des habitudes personnelles.
Les vieux programmeurs comme nous sont habitués à écrire du SQL et se sentiraient mal à l'aise si nous ne l'écrivions pas. En revanche, une mise en veille prolongée trop automatisée peut nous faire paniquer.
C'est tout.

黄舟

L'ayant utilisé pendant la phase d'apprentissage, mon sentiment personnel est que l'hibernation est trop encapsulée. Souvent, j’ai l’impression que cela n’apporte pas de commodité, mais que je dois effectuer des opérations apparemment inutiles afin de « m’adapter » à ce cadre.

伊谢尔伦

Si le volume d'affaires est relativement faible, cela dépend de celui que vous maîtrisez le mieux. Tout ira bien. Pas besoin de s'inquiéter à ce sujet. Mybatis est plus flexible, donnant aux développeurs plus de marge pour leur propre implémentation. L'association d'hibernation devrait être la raison pour laquelle elle est légèrement plus lente.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal