No he usado MyBatis mucho antes, solo sé que es un marco de base de datos ORM como Hibernate. A medida que aumenta la competencia del uso, descubrí que es muy diferente de la hibernación. Los amigos interesados pueden aprenderlo a través de este artículo.
Aprovechando este fin de semana, me tomé el tiempo para resolver algunas tecnologías de uso común, y el editor actualizará el contenido de vez en cuando.
Primero, presentemos brevemente los conceptos de los dos:
Hibernate: Hibernate es el marco ORM más popular en la actualidad y proporciona una encapsulación relativamente completa de la estructura de la base de datos.
MyBatis: MyBatis también es un marco ORM muy popular, con el enfoque principal en la relación de mapeo entre POJO y SQL.
En segundo lugar, hablemos sobre las diferencias entre los dos en varios aspectos:
1. La mayor diferencia entre los dos:
Para lógica simple, Hibernate y MyBatis tienen herramientas de generación de código correspondientes que pueden generar métodos de capa DAO simples y básicos.
Para consultas avanzadas, MyBatis requiere una escritura manual de declaraciones SQL y resultados de resultados. Hibernate tiene un buen mecanismo de mapeo, por lo que los desarrolladores no necesitan preocuparse por la generación de SQL y el mapeo de resultados, y pueden centrarse más en los procesos comerciales.
2. Comparación de dificultad para el desarrollo
El desarrollo hibernado es más difícil que mybatis. Principalmente porque Hibernate es complejo y grande, y tiene un ciclo de aprendizaje largo.
MyBatis es relativamente simple, y MyBatis se basa principalmente en la escritura SQL, lo que hace que los desarrolladores se sientan más familiarizados.
3. Comparación de la escritura SQL
MyBatis 'SQL está escrito manualmente, por lo que puede especificar los campos para la consulta según sea necesario. Sin embargo, no hay estadísticas de registro propias, por lo que debe usar log4j para registrar registros.
Hibernate también puede escribir SQL para especificar los campos que deben ser consultados, pero esto destruye la simplicidad del desarrollo hibernado. Sin embargo, Hibernate tiene sus propias estadísticas de registro.
4. Comparación de escalabilidad de la base de datos
Dado que todo SQL está escrito en la base de datos, MyBatis tiene mala escalabilidad y migración.
La relación específica entre Hibernate y la base de datos está en XML, por lo que HQL no está muy preocupado por qué base de datos utiliza.
5. Comparación de mecanismos de almacenamiento en caché
Similitudes: además de usar el mecanismo de almacenamiento de almacenamiento predeterminado del sistema, el caché de segundo nivel de Hibernate y MyBatis puede sobrescribir por completo el comportamiento de caché implementando su propio caché o creando adaptadores para otras soluciones de caché de terceros.
Diferencias: la configuración secundaria de caché de Hibernate se configura en detalle en el archivo de configuración generado por SessionFactory, y luego se configura en el mapa específico de objeto de tabla que se configura el caché.
La configuración secundaria de caché de MyBatis se configura en detalle en cada mapa específico de objeto de tabla, de modo que se puedan personalizar diferentes mecanismos de caché para diferentes tablas. Y MyBatis puede compartir la misma configuración e instancia de caché en el espacio de nombres, que se implementa a través de Cache-Ref.
Comparación de los dos: Debido a que Hibernate tiene un buen mecanismo de gestión para los objetos de consulta, los usuarios no necesitan preocuparse por SQL. Por lo tanto, si los datos sucios aparecen cuando se usa el caché secundario, el sistema informará un error y un mensaje.
En este sentido, MyBatis requiere un cuidado especial al usar la caché L2. Si el alcance de las operaciones de actualización de datos no puede determinarse completamente, evite el uso de caché ciego. De lo contrario, la aparición de datos sucios traerá grandes peligros ocultos al funcionamiento normal del sistema.
6. Resumen:
mybatis: pequeño, conveniente, eficiente, simple, directo, semiautomático
Hibernate: potente, conveniente, eficiente, complejo, automático completo
Hibernate y MyBatis pueden generar SessionFactory a partir del archivo de configuración XML a través de SessionFactoryBuider, y luego generar Session desde SessionFactory, y finalmente ejecutar transacciones y declaraciones SQL.
La ventaja de MyBatis es que MyBatis puede realizar una optimización SQL más detallada, reducir los campos de consulta y ser fácil de dominar.
La ventaja de Hibernate es que el desarrollo de la capa DAO es más simple que MyBatis, que requiere el mantenimiento de SQL y el mapeo de resultados. La portabilidad de la base de datos es muy buena, la portabilidad de la base de datos MyBatis no es buena y diferentes bases de datos deben escribir diferentes SQL. Hay un mejor mecanismo de almacenamiento en caché de Nivel 2, y se puede usar almacenamiento en caché de terceros. MyBatis en sí proporciona mecanismos de almacenamiento en caché deficientes.
mybatis:
1. Es simple comenzar, aprender y usar, y proporciona una función de enlace de objetos automático para consultas de bases de datos, y continúa una buena experiencia en el uso de SQL. Es bastante perfecto para proyectos que no tienen requisitos de modelo de objetos tan altos.
2. Se puede realizar una optimización SQL más detallada, lo que puede reducir los campos de consulta.
3. La desventaja es que el marco sigue siendo relativamente simple y las funciones aún faltan. Aunque el código de enlace de datos se simplifica, toda la consulta de la base de datos subyacente en realidad debe ser escrita por usted mismo, la carga de trabajo es relativamente grande y no es fácil adaptarse a la modificación rápida de la base de datos.
4. El mecanismo de almacenamiento de almacenamiento secundario es pobre.
hibernar:
1. Funciones potentes, buena irrelevancia de la base de datos y fuertes capacidades de mapeo O/R. Si es bastante competente en hibernado hibernado y correctamente encapsulado, entonces todo el código de capa de persistencia de su proyecto será bastante simple, hay muy poco código para escribir, la velocidad de desarrollo es muy rápida y es muy genial.
2. Hay un mejor mecanismo de almacenamiento en caché secundario y se puede usar almacenamiento en caché de terceros.
3. La desventaja es que el umbral de aprendizaje no es bajo, y debe ser competente en él. Cómo diseñar el mapeo O/R, cómo equilibrar el modelo de rendimiento y objetos, y cómo usar bien Hibernate bien requiere su experiencia y capacidad para ser fuerte.
Déjame darte una metáfora vívida:
MyBatis: Las herramientas mecánicas son fáciles de usar y se pueden usar lo antes posible, pero el trabajo aún debe hacerse usted mismo, pero las herramientas están vivas, por lo que cómo hacerlas depende de mí.
Hibernate: robot inteligente, pero es muy costoso desarrollarlo (aprendizaje, competencia) y el trabajo puede deshacerse de él, pero solo lo que puede hacer.