¿Cuál es el diseño de la aplicación Spring MVC hibernate?

Aprenda sobre Spring Framework antes de que necesite comprender sobre servlet y jsp.

Déjame explicarte sobre primavera e hipernate.

Marco de primavera:

Spring framework basado en el patrón MVC 2

MVC:

El controlador de vista modelo es un patrón de diseño de arquitectura de software. Proporciona una solución para superponer una aplicación separando tres preocupaciones de negocios, presentación y flujo de control.

  • El modelo puede ser una capa DAO o algunas capas de servicio que brindan información sobre la solicitud o la información solicitada o el modelo puede ser un POJO que encapsula los datos de la aplicación proporcionados por el controlador.
  • La Vista es responsable de representar los datos del modelo y, en general, genera una salida HTML que el navegador del cliente puede interpretar.
  • El controlador es responsable de procesar las solicitudes de los usuarios y construir el modelo apropiado y lo pasa a la vista para su representación.

¿Qué es la primavera?

Spring es un gran marco para el desarrollo de aplicaciones de grado empresarial. Spring es un marco ligero para el desarrollo de aplicaciones listas para la empresa. Proporciona instalaciones muy simples y ricas para integrar diversos marcos, tecnologías y servicios en las aplicaciones. Una de las razones principales para usar Spring Framework es mantener el código lo más simple posible. Impulsa el camino para desarrollar aplicaciones empresariales con Java Beans simples y poco acoplados. Por esta razón, el marco de primavera también se puede llamar un marco de Objeto Java antiguo simple (POJO).

Spring es un marco de código abierto desarrollado por Spring Source, una división de VMware. El trabajo de marco de primavera se puede resumir de dos maneras.

  • Contenedor: el marco de resorte se puede describir como un contenedor liviano, ya que no implica la instalación, configuración, inicio y detención de actividades asociadas con un contenedor. Es solo una colección simple de pocos archivos Java ARchive (JAR) que deben agregarse al classpath. Spring Container toma las clases en la aplicación, crea objetos y gestiona el ciclo de vida de esos objetos.
  • Marco: el marco de Spring se puede describir como una interfaz de programación de aplicaciones (API) que contiene una gran colección de clases, métodos, interfaces, anotaciones y etiquetas XML que se pueden usar en una aplicación. La API proporciona una variedad de clases de fábrica y fachada que lo ayudan a usar cualquier marco o funcionalidad muy fácilmente en su aplicación.

Acceso a datos mediante Java Database Connectivity (JDBC): el marco de Spring proporciona una gran compatibilidad para trabajar con JDBC. Un código JDBC típico implica trabajos de fontanería, como crear conexiones, declaraciones, ejecutar consultas y manejar excepciones para realizar operaciones de base de datos. Spring Framework proporciona un conjunto de clases que se ocupan de estas operaciones JDBC centrales.

Acceso a datos mediante el mapeo relacional de objetos (ORM): hay muchos marcos ORM, como Hibernate, Toplink, iBatis, etc. que se pueden usar en aplicaciones Java. Spring Framework proporciona muchas clases que hacen que trabajar con ORM sea muy fácil.

Programación Orientada a Aspectos (AOP): uno de los paradigmas principales que usa Spring para proporcionar servicios empresariales para sus aplicaciones es AOP. AOP es un mecanismo por el cual puede introducir funcionalidad en su código existente sin modificar su diseño. En resumen, podemos decir que AOP se usa para tejer funcionalidades o aspectos transversales en el código. Spring Framework utiliza AOP proporciona varios servicios empresariales, como transacciones y seguridad en una aplicación.

Core Spring Framework: el paquete Core es la parte más fundamental del marco y proporciona las características de inyección de dependencia y IoC . El concepto básico aquí es BeanFactory , que proporciona una implementación sofisticada del patrón de fábrica que elimina la necesidad de singletons programáticos y le permite desacoplar la configuración y especificación de dependencias de su lógica de programa real.

Spring’s MVC : el paquete Spring MVC proporciona una implementación de Modelo-Vista-Controlador (MVC) para aplicaciones web. El marco MVC de Spring no es una implementación cualquiera; proporciona una separación limpia entre el código del modelo de dominio y los formularios web, y le permite utilizar todas las demás funciones de Spring Framework.

Asignación de XML de objetos: Spring 3.0 presenta el módulo OXM que anteriormente no formaba parte del marco principal. OXM es un mecanismo que reúne o convierte objetos en formato XML y viceversa. Existen muchos marcos OXM, como Caster, Xstream, JiBX, Java API para XML Binding (JAXP) y XMLMeabs. Spring 3.0 proporciona una API uniforme para acceder a cualquiera de estos marcos OXM para ordenar y desarmar objetos y XML.

Inyección de dependencias (DI): La tecnología con la que más se identifica Spring es el sabor de la Inversión de control de Inyección de dependencias (DI) . La Inversión de Control (IoC) es un concepto general, y puede expresarse de muchas maneras diferentes y la Inyección de Dependencia es simplemente un ejemplo concreto de Inversión de Control.
¿Qué es exactamente la inyección de dependencia? Miremos estas dos palabras por separado. Aquí la parte de dependencia se traduce en una asociación entre dos clases. Por ejemplo, la clase X depende de la clase Y. Ahora, veamos la segunda parte, inyección . Todo esto significa que la clase Y será inyectada en la clase X por el IoC. Aquí no necesitamos escribir mucho código para crear la instancia de las clases dependientes.

La inyección de dependencia promueve el acoplamiento flojo. Allana el camino para la eliminación de la fábrica usal y las clases de utilidad que escribimos en nuestras aplicaciones.
Mira a continuación:

  • Las clases DAO usan fuentes de datos que pueden inyectarse en ellas.
  • Las clases de servicio pueden necesitar agregar algunos frijoles Java

La inyección de dependencia también se conoce como inversión de control o IoC. Ioc se refiere al control de creación de instancias que realiza Spring Container. El control para crear y construir objetos está a cargo del contenedor. El contenedor crea objetos e inyecta luego en nuestras aplicaciones.

Beneficios de usar Spring Framework:

La siguiente es la lista de algunos de los grandes beneficios de usar Spring Framework:

  • Spring permite a los desarrolladores desarrollar aplicaciones de clase empresarial utilizando POJO. El beneficio de usar solo POJOs es que no necesita un producto contenedor EJB como un servidor de aplicaciones pero tiene la opción de usar solo un contenedor de servlet robusto como Tomcat o algún producto comercial.
  • La primavera se organiza de forma modular. Aunque la cantidad de paquetes y clases es considerable, solo debe preocuparse por los que necesita e ignorar el resto.
  • Spring no reinventa la rueda, en realidad hace uso de algunas de las tecnologías existentes, como varios marcos ORM, marcos de registro, temporizadores JEE, Quartz y JDK, otras tecnologías de visualización.
  • Probar una aplicación escrita con Spring es simple porque el código dependiente del entorno se mueve a este marco. Además, al usar POJO de estilo JavaBean, se vuelve más fácil usar la inyección de dependencia para inyectar datos de prueba.
  • El framework web de Spring es un framework MVC web bien diseñado, que proporciona una gran alternativa a los frameworks web como Struts u otros frameworks web de ingeniería o menos populares.
  • Spring proporciona una API conveniente para traducir excepciones específicas de la tecnología (lanzadas por JDBC, Hibernate o JDO, por ejemplo) en excepciones consistentes y no verificadas.
  • Los contenedores livianos de IoC tienden a ser livianos, especialmente en comparación con los contenedores EJB, por ejemplo. Esto es beneficioso para desarrollar e implementar aplicaciones en computadoras con memoria y recursos de CPU limitados.
  • Spring proporciona una interfaz de administración de transacciones consistente que puede reducirse a una transacción local (usando una sola base de datos, por ejemplo) y aumentar a transacciones globales (usando JTA, por ejemplo)

Marco Hipernate:

  • Una herramienta ORM
  • Se utiliza en la capa de datos de las aplicaciones.
  • Implementa JPA ( Java Persistence API ), es decir, su conjunto de estándares que se han prescrito para cualquier persistencia de cualquier implementación debe cumplirse con las reglas de persistencia en Java que, dado un cambio mínimo de códigos, significa seguir todas las reglas de persistencia más adelante, si las hay. cambio en las herramientas ORM con un cambio mínimo en el código.

Arquitectura hibernada

Arquitectura Hibernate y API-

En este tutorial de Hibernate Architecture incluimos todos los componentes. Hibernate Architecture está en capas con muchos objetos tales como objetos persistentes, fábrica de sesiones, fábrica de transacciones, fábrica de conexiones, sesión, transacción, etc. Veamos el siguiente diagrama que describe algunas funciones básicas de hibernación.

Configuración
Representa un archivo de configuración o propiedades para Hibernate. El objeto de configuración generalmente se crea una vez durante la inicialización de la aplicación. El objeto de configuración lee y establece las propiedades que Hibernate utiliza para conectarse a una base de datos y configurarse para el trabajo. Un objeto de configuración se usa para crear una SessionFactory y luego se descarta.

SessionFactory
SessionFactory se crea a partir de un objeto Configuration y, como su nombre lo indica, es una fábrica de objetos Session. SessionFactory es un objeto costoso de crear. Al igual que el objeto de configuración, generalmente se crea durante el inicio de la aplicación. Sin embargo, a diferencia del objeto de configuración, debe crearse una vez y mantenerse para su uso posterior.

El objeto SessionFactory es utilizado por todos los hilos de una aplicación. Es un objeto seguro para subprocesos. Se crea un objeto SessionFactory por base de datos. Se crean múltiples objetos SessionFactory (cada uno requiere una configuración separada) cuando se conecta a múltiples bases de datos. SessionFactory también puede proporcionar el almacenamiento en caché de objetos persistentes. -Dinesh

Sesión
Los objetos de sesión proporcionan la interfaz principal para realizar el trabajo con la base de datos. Los objetos persistentes se guardan y recuperan a través de un objeto Session. Un objeto de sesión es ligero y económico de crear. Un objeto Session hace el trabajo de obtener una conexión física a la base de datos. Los objetos de sesión mantienen una memoria caché para un único subproceso de aplicación (solicitud).

Los objetos de sesión no son seguros para subprocesos. Por lo tanto, los objetos de sesión no deben mantenerse abiertos durante mucho tiempo. Las aplicaciones los crean y destruyen según sea necesario. Por lo general, se crean para completar una sola unidad de trabajo, pero pueden abarcar muchas unidades. -Dinesh

Transacción
Representa la unidad de obras.

Consulta y criterios
Estos objetos se utilizan para recuperar (y recrear) objetos persistentes.

Primavera con integeración hipernada:

Spring puede soportar en el controlador MVC, modelo, vista.

hipernate trabajando en la parte del modelo de capa DAO para interactuar con la base de datos.

En el desarrollo de aplicaciones necesita integerar hibernar con spring.

Ambos están usando el patrón MVC.

Sin embargo, el principal objeto de diseño arquitectónico de MVC es separar los aspectos frontales de la estructura de los datos para aumentar la capacidad de mantenimiento de la aplicación. No fue necesariamente diseñado para el rendimiento sino para mejorar la reutilización. En algunos casos, las personas consideran alternativas a los enfoques MVC, como el modelo Actor (propugnado por Akka) para más aplicaciones impulsadas por mensajería.

El uso de Spring Data JPA es definitivamente una opción. Fue creado para simplificar y crear plantillas de aplicaciones de acceso a datos.

Ambos están usando el mismo patrón MVC.

Spring Data JPA es bueno para usar. La arquitectura subyacente utilizada en Spring Data JPA usa solo Hibernate.

Si se trata de una base de datos con más frecuencia y hay simultaneidad, recomendaría tener una capa de servicio con anotación @Transactional.

Personalmente, prefiero el primer diseño, porque este tipo de aplicaciones solicitan una arquitectura basada en capas que se asigna en la arquitectura MVC.