He investigado por mi cuenta y entiendo el concepto básico. Pero algunas ideas solo se pueden obtener a través de la experiencia real.
¿Cuáles son las ventajas de myBatis que harían que valiera la pena aprender un nuevo marco?
¿En qué caso evitarías usarlo?
orm
database-development
hibernate
Kshitiz Sharma
fuente
fuente
Respuestas:
Considera lo que estás tratando de lograr. Normalmente, el modelo de segregación de respuesta de consulta de comando funciona bien para dominios complejos.
La razón es que normalmente estás intentando hacer una de dos cosas:
Hibernate funciona bien para el caso 1, lo que le permite hacer un POJO y persistir / actualizarlo. También lo hace rápidamente, a menos que su dominio sea bastante grande.
myBatis es ideal para buscar consultas (caso 2) donde solo desea una respuesta. Hibernate intentaría cargar todo el gráfico de objetos y necesitaría comenzar a ajustar las consultas con trucos de LazyLoading para que funcione en un dominio grande. Esto es importante cuando se ejecutan consultas analíticas complejas que ni siquiera devuelven objetos de entidad. Hibernate solo ofrece transformadores SqlQuery y Bean en este caso con enormes tipos predeterminados como BigDecimal, mientras que myBatis podría mapearse fácilmente a una simple no entidad POJO.
Estos dos casos son la diferencia entre los Comandos donde desea cambiar los datos del dominio y las Respuestas donde solo desea obtener algunos datos.
Por lo tanto, considere estos dos casos y lo que hace su aplicación. Si tiene un dominio simple y solo busca información, use myBatis. Si tiene un dominio complejo y entidades persistentes, use Hibernate. Si haces ambas cosas, considera un enfoque híbrido. Eso es lo que usamos en nuestro proyecto que tiene miles de entidades para mantenerlo bajo control. ;)
fuente
MyBatis está centrado en SQL. Le ayuda a llamar a sentencias SQL y mapear resultados (tablas) a árboles de objetos.
El principal beneficio es que no es un ORM. No asigna tablas a objetos, por lo que no sufre la falta de coincidencia de impedancia de orm. Se adapta bien para bases de datos complejas o heredadas o para usar características de db como procedimientos almacenados, vistas, etc.
Es bastante simple y fácil de aprender, por lo que se adapta bien a los equipos poco calificados porque no hay necesidad de tener un gurú de hibernación entre ellos.
Echa un vistazo a jpetstore 6 http://mybatis.org/spring/sample.html
fuente
Como la pregunta se refiere a mi comentario , esto es lo que tenía en mente al escribirlo.
En primer lugar, se deriva del contexto de su pregunta original. En otras circunstancias, podría dar un consejo diferente. El punto que me hizo sugerir MyBatis es este:
En uno de los proyectos anteriores, nuestro equipo ha considerado mudarse de Hibernate por las razones que usted describe. Al igual que usted, íbamos a cambiar a JDBC, pero colegas de otro proyecto nos recomendaron MyBatis. El equipo decidió intentarlo, manteniendo JDBC como una opción alternativa en el caso de que las cosas salgan mal.
En ese momento, no sabía nada sobre MyBatis, pero tenía suficiente experiencia con JDBC para asegurarme de que haría el trabajo. A pesar de esto, había apoyado firmemente la idea de probar MyBatis, la razón principal es que, según mi experiencia anterior, la cantidad de código repetitivo que tendríamos que escribir con JDBC sería desalentador.
De todos modos, probamos MyBatis y funcionó como se anuncia. Es por eso que escribí el comentario que preguntas.
En caso de que espere que le dé una descripción detallada de la tecnología, o de alguna manera elogie su superioridad, lo siento, no puedo hacer eso. Si pudiera, ya lo escribiría en una respuesta separada a su pregunta original, en lugar de dar un breve comentario. Mencioné que no sabía nada sobre MyBatis en ese entonces, bueno, todavía tengo muy poco conocimiento de eso, lo siento. La transición desde Hibernate fue realizada por otros miembros del equipo y no afectó el código en el que he estado trabajando. Solo recordé las conclusiones clave (en base a las cuales hice mi comentario), a saber, que 1) MyBatis resolvió los problemas que teníamos con Hibernate, 2) no introdujo problemas propios y 3) nos permitió evitar escribir código repetitivo I esperaba en caso de que cambiemos a JDBC. Eso es todo.
fuente
Hibernate es conocido por demasiada magia , comportamiento inesperado y gran curva de aprendizaje. Existen otros marcos que están más enfocados en la simplicidad y le permitirán tener el control.
myBatis es uno de ellos, mi proyecto MentaBean es otro. He escrito una publicación de blog sobre eso que podría ayudar.
fuente
Utilicé Hibernate para un proyecto de carga y transformación de datos hace 5 años utilizando Hibernate 3 y pensé que era maravilloso. Estoy haciendo una pequeña aplicación de comercio electrónico e intenté usar Hibernate 4 y quedé extremadamente decepcionado. Han eliminado las herramientas y se han integrado estrechamente al IDE. Probé MyBatis y todo funciona en una sola noche y estoy muy contento con lo fácil que es integrarlo en una aplicación. Creo que Hibernate se ha hinchado demasiado y usaría EJB 3 sobre Hibernate en este punto.
fuente