Prefacio
En el desarrollo de Javaweb, los más clásicos son la combinación de marco SSH y la combinación de marco SSM. Ahora muchas compañías de TI están dispuestas a usar SSM. Para H y M aquí, Hibernate y MyBatis, permítanme hablar brevemente de eso hoy.
Jugando con hacha en la puerta
Durante la clase, a menudo les digo a los estudiantes que debe comprender cualquier técnica:
Explicación del conocimiento
Hibernate y MyBatis son Orm muy populares (mapeo relacional de objetos, para decir sin rodeos, una tecnología que se mapea a las bases de datos) marcos de capas de persistencia. En esencia, todavía está encapsulado JDBC para facilitar nuestro uso y simplificar nuestro desarrollo. Primero descubramos algunos problemas:
¿Por qué la introducción de una capa de persistencia puede resolver este problema? Análisis: se puede introducir un mecanismo en la capa de persistencia, que puede usarse como una traducción. Para diferentes bases de datos en la parte inferior, las declaraciones HQL y las declaraciones de consulta dinámica se traducen en diferentes declaraciones SQL. Esto resuelve el problema de que no es necesario cambiar las declaraciones SQL después de reemplazar la base de datos, y la cantidad de código se reducirá considerablemente.
Es tan bueno, entonces, ¿cómo implementaron Hibernate y MyBatis la solución anterior, es decir, ¿cómo se implementó su ORM?
Hibernar
En Hibernate, este mecanismo es un archivo de configuración hibernate.cfg.xml (colocado en el directorio SRC)
<Hibernate-Configuration> <session-factory> <Property name = "Connection.url"> jdbc: mysql: // localhost/hibernate </propiedad> <propiedad name = "Connection.username"> root </property> <Property name = "Connection.password"> Saber </propine> <Property Name = "Connection.Driver_Class" <Property name = "dialect"> org.hibernate.dialect.mysqldialect </property> <!-La instrucción ddl crea automáticamente las tablas-> <propiedad name = "hbm2ddl.auto"> Ninguna </propiedad> <propiedad name = "show_sql"> verdadero </sulée </name de propiedad = "format_sql"> true </propiedad> <! name = "Hibernate.Connection.Provider_Class"> org.hibernate.service.jdbc.connections.internal.c3p0connectionProvider </property> <!- Número mínimo de conexiones JDBC en el grupo de conexión. Hibernate predeterminados a 1-> <propiedad name = "hibernate.c3p0.min_size"> 5 </property> <!-El número máximo de conexiones JDBC en el grupo de conexión. Hibernate predeterminado a 100-> <propiedad name = "hibernate.c3p0.max_size"> 20 </property> <!-Cuándo eliminar una conexión inactiva en segundos desde el grupo de conexión. El valor predeterminado es 0, nunca caduca-> <propiedad name = "hibernate.c3p0.timeout"> 300 </property> <!-El número de declaraciones precompiladas en caché. Utilizado para mejorar el rendimiento. Hibernate predeterminados a 0, Cache no está disponible-> <propiedad name = "hibernate.c3p0.max_statements"> 100 </property> <!-Tiempo de inactividad (en segundos) antes de que una conexión se verifique automáticamente. Hibernate predeterminados a 0-> <propiedad name = "hibernate.c3p0.idle_test_period"> 3000 </sperties> <!-ejecutándose de forma independiente. Si obtiene la sesión a través de getCurrentSession (), debe configurarla de la siguiente manera-> <Property name = "current_session_context_class"> Thread </property> <!-Dos formas de asignar clases persistentes-> <mapping/> <asignación de recursos = "com/acero/modelo/maestro.hbm.xml"/> </session-factory> </hibbernate-confiaturation
Una vez que el proyecto ha cambiado la base de datos, lo que debe modificarse son solo varios atributos en este archivo, y el código lógico de la capa comercial no necesita modificarse.
Se recomienda usar Hibernate para el desarrollo:
** Objeto de dominio ---> Mapeo ---> Base de datos En otras palabras, los objetos y las tablas deben tener una asignación, y esta asignación tiene dos métodos de configuración en Hibernate **
1. Método XML (nombre de clase.hbm.xml)
Establecer una relación de mapeo entre tabla y clase a través del archivo HBM
2. Método de anotación
Más tarde, con ingeniería inversa, se volvió mucho más simple y puede generar directamente el archivo correspondiente a través de la tabla de la base de datos.
Mybatis
En MyBatis, este mecanismo también se basa en un archivo de configuración myBatis-Config.xml (colocado en el directorio SRC)
<Configuration> <Properties Resource = "SqlServerInfo.Properties"/> <!-Configuración Archivo de la base de datos-> <typealiases> <paquete name = "com.dema.domain"/> <!-escanear paquetes con alias para escanear un archivo por separado-> </typealiases> <entornos predeterminados = "desarrollo" <diinio = "Desarrollo"> <granación de plantas "> <place alias"> <surperserer " type = "jdbc"/> <dataSource type = "agrupado"> <propiedad name "valor" valor = "$ {controlador}"/> <propiedad name = "url" value = "$ {url}"/> <Property name = "username" value = "$ {usernameame" </entornos> <mappers> <!-Mapeo de archivos para completar operaciones CRUD específicas-> <mapper resource = "com/demo/domain/usermapper.xml"/> </mappers> </figuration> De esta manera, cada vez que cambia la base de datos, solo necesita modificar el archivo de configuración.
El uso de MyBatis para el desarrollo recomienda esto:
** Crear una base de datos y crear varias tablas ---> Ingeniería inversa genera automáticamente el código requerido para MyBatis Ejecución (Mapper.java, mapper.xml, po ..) ---> Escriba la capa de control y la capa de servicio de acuerdo con la lógica comercial. **
Diferencias
Hay varias comparaciones en Internet, y solo hablo de algunos puntos diferentes, creo que
1. Hibernate tiene un lenguaje de consulta orientado a objetos llamado HQL. Esto es muy poderoso. Permite que los simios que no conocen las declaraciones SQL agregan, eliminan, modifiquen y buscan la base de datos, pero esta es también su debilidad. Las declaraciones SQL no se pueden optimizar.
2. MyBatis requiere la configuración de la declaración SQL, lo que significa que todavía requiere un conocimiento básico de la base de datos para comenzar. Además, los principiantes deben haber encontrado muchas dificultades en el mapeo de resultados.
3. Nunca he hecho un proyecto particularmente grande. Si no hay requisitos de rendimiento especiales, Hibernate es aún más fácil de implementar funciones.
Ajuste del sistema
Solución de ajuste de Hibernate
Solución de ajuste mybatis
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.