由于java视频里以前好多都是SSH。但是在实际工作中没见过用hibernate的,基本都用mybatis。
我有一些疑问:
hibernate碰到什么样的业务会变成致命的弱点,都说hibernate效率低,能否举个例子(例如同一个查询用mybatis查询耗时1秒,用hibernate查询耗时10秒)
可能是有部分人遇到了hibernate的瓶颈,但是这部分人的业务量我觉得,不是大部分使用hibernate的人都能遇到的。一般的小项目,不超过100个用户,这样的项目综合考虑的话更适合用mybatis还是hibernate?主要从开发效率上来说的话。为什么?
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 conceptiondb
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
oumybatis
. à changer si vous utilisezmybatis
. 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'utilisermybatis
les requêtes simples sont plus rapides quehibernate
. (开发效率
)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
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.