-
¿Cómo funciona Hibernate y por qué debería usarlo?
principio:
1. Leer y analizar el archivo de configuración.
2. Leer y analizar información de mapeo y crear SessionFactory
3.Sesión abierta
4. Crear transacción Transacción
5. Operaciones de persistencia
6. Enviar transacción
7.Cerrar sesión
8. Cerrar SessionFactory
Por qué utilizar:
1. El código para el acceso JDBC a la base de datos está encapsulado, lo que simplifica enormemente el código tedioso y repetitivo en la capa de acceso a datos.
2. Hibernate es un marco de persistencia convencional basado en JDBC y una excelente implementación de ORM. Simplifica enormemente el trabajo de codificación de la capa DAO.
3. Hibernate utiliza el mecanismo de reflexión de Java en lugar del programa de mejora del código de bytes para lograr transparencia.
4. El rendimiento de hibernación es muy bueno porque es un marco liviano. La flexibilidad del mapeo es excepcional. Admite varias bases de datos relacionales, que van desde relaciones complejas de uno a uno hasta de muchos a muchos.
2. ¿Cómo se carga de forma diferida Hibernate?
1. Implementación de carga diferida de Hibernate2: a) objeto de entidad b) colección (Colección)
2. Hibernate3 proporciona una función de carga diferida de propiedades
Cuando Hibernate consulta los datos, los datos no existen en la memoria. Cuando el programa realmente opera con los datos, el objeto existe en la memoria, lo que ahorra la sobrecarga de memoria del servidor y mejora así el rendimiento del servidor. . actuación.
3. ¿Cómo implementar la relación entre clases en Hibernate (como: relación de uno a muchos, de muchos a muchos)?
La relación entre clases se refleja principalmente en el funcionamiento de la relación entre tablas. Todas operan en objetos. Todas las tablas y clases se asignan juntas en nuestro programa y se asignan juntas a través de muchos a en el archivo de configuración. uno a muchos, muchos a muchos,
4. Hablemos del mecanismo de almacenamiento en caché de Hibernate.
1. El caché interno existe en Hibernate, también llamado caché de primer nivel, que pertenece al caché de nivel de transacción de la aplicación.
2. Caché de segundo nivel:
a) Aplicación y caché
b) Condiciones de caché distribuida: los datos no serán modificados por un tercero, el tamaño de los datos está dentro de un rango aceptable, la frecuencia de actualización de los datos es baja, el sistema utiliza los mismos datos con frecuencia, datos no críticos
c) Implementación de caché de terceros
5. Método de consulta de hibernación
Sql, Criterios, composición de objetos.
Hql:
1. Consulta de atributos
2. Consulta de parámetros, consulta de parámetros denominada
3. Consulta relacionada
4. Consulta de paginación
5. Funciones estadísticas
6. ¿Cómo optimizar la hibernación?
1. Utilice una asociación bidireccional de uno a muchos en lugar de una asociación unidireccional de uno a muchos.
2. Uso flexible de asociaciones unidireccionales de uno a muchos
3. En lugar de uno a uno, utilice muchos a uno.
4. Configure el caché de objetos y no use el caché de colección
5. Utilice Bolsa para colecciones de uno a muchos y Conjunto para colecciones de muchos a muchos.
6. Utilice polimorfismo explícito en clases heredadas.
7. Debería haber menos campos de tabla, no tener miedo de demasiadas asociaciones de tablas y contar con el soporte de caché de segundo nivel.
7. ¿Cómo funciona Struts? ¿Por qué utilizar Struts?
Mecanismo de trabajo:
Flujo de trabajo de puntales:
Cuando se inicia la aplicación web, se cargará el ActionServlet de inicialización. El ActionServlet se iniciará desde.
Lea la información de configuración del archivo struts-config.xml y guárdela en varios objetos de configuración. Cuando ActionServlet reciba una solicitud de un cliente, ejecutará el siguiente proceso.
-(1) Recuperar la instancia de ActionMapping que coincide con la solicitud del usuario. Si no existe, devolver información de ruta de solicitud no válida;
-(2) Si la instancia de ActionForm no existe, cree un objeto ActionForm y guarde los datos del formulario enviado por el cliente en el objeto ActionForm;
-(3) Determine si se requiere validación del formulario en función de la información de configuración. Si se requiere validación, llame al método validar () de ActionForm;
-(4) Si el método validar () de ActionForm devuelve nulo o devuelve un objeto ActuibErrors que no contiene un ActionMessage, significa que la validación del formulario fue exitosa;
-(5) ActionServlet decide a qué Acción reenviar la solicitud en función de la información de mapeo contenida en ActionMapping. Si la instancia de Acción correspondiente no existe, primero cree esta instancia y luego llame al método ejecutar () de la Acción;
-(6) El método ejecutar () de Action devuelve un objeto ActionForward y ActionServlet reenvía la solicitud del cliente al componente JSP señalado por el objeto ActionForward;
-(7) El objeto ActionForward apunta al componente JSP para generar una página web dinámica y la devuelve al cliente;
Por qué utilizar:
La aparición de las tecnologías JSP, Servlet y JavaBean nos permite crear potentes sistemas de aplicaciones empresariales. Pero los sistemas construidos con estas tecnologías son muy complicados, por lo que además de esto, necesitamos una regla, una regla para organizar estas tecnologías. Este es el marco y surgió Struts.
Las aplicaciones desarrolladas en base a Struts se componen de tres tipos de componentes: componentes de controlador, componentes de modelo y componentes de vista.
8. ¿Cómo se verifica el marco de validación de Struts?
Configure mensajes de error específicos en el archivo de configuración de struts y luego llame específicamente al método validar () en FormBean.
9. Hablemos del patrón de diseño de Struts.
Modo MVC: ActionServler se carga e inicializa cuando se inicia la aplicación web. Cuando el usuario envía el formulario, se crea un objeto ActionForm configurado y se completa con los datos correspondientes del formulario. ActionServler determina si se requiere la validación del formulario en función de la configuración configurada en el archivo Struts-config.xml. Si es necesario, llama. Validar() de ActionForm Después de la verificación, seleccione a qué Acción enviar la solicitud. Si la Acción no existe, ActionServlet primero creará este objeto y luego llamará al método ejecutar() de la Acción. Execute () obtiene datos del objeto ActionForm, completa la lógica empresarial y devuelve un objeto ActionForward y luego reenvía la solicitud del cliente al componente jsp especificado por el objeto ActionForward. El jsp especificado por el objeto ActionForward genera una página web dinámica. lo devuelve al cliente.
10. ¿Cómo funciona el resorte y por qué debería usarse?
1. Spring MVC solicita que todas las solicitudes se envíen a DispatcherServlet, que confiará a otros módulos del sistema de aplicaciones la responsabilidad del procesamiento real de las solicitudes.
2.DispatcherServlet consulta uno o más HandlerMapping para encontrar el controlador que maneja la solicitud.
3.DispatcherServlet envíe la solicitud al controlador de destino
4. Después de que el Controlador realice el procesamiento de lógica de negocios, devolverá un ModelAndView
5.Dispathcher consulta uno o más analizadores de vistas ViewResolver para encontrar el objeto de vista especificado por el objeto ModelAndView
6. El objeto de vista es responsable de renderizarlo y devolverlo al cliente.
Por qué utilizar:
{AOP permite a los desarrolladores crear inquietudes no conductuales, denominadas inquietudes transversales, e insertarlas en el código de la aplicación. Después de usar AOP, los servicios públicos (como registro, persistencia, transacciones, etc.) pueden descomponerse en aspectos y aplicarse a objetos de dominio sin aumentar la complejidad del modelo de objetos de los objetos de dominio.
IOC permite la creación de un entorno de aplicación que puede construir objetos y luego pasarles a estos objetos sus objetos colaboradores. Como indica la palabra inversión, el COI es como JNDI al revés. En lugar de utilizar un montón de fábricas abstractas, localizadores de servicios, singletons y construcciones directas, cada objeto se construye a partir de sus objetos colaboradores. Por tanto, el contenedor gestiona el objeto de colaboración (colaborador).
Aunque Spring es un marco AOP, también es un contenedor IOC. Lo mejor de Spring es que te ayuda a reemplazar objetos. Con Spring, simplemente agregue dependencias (objetos colaboradores) usando propiedades y archivos de configuración de JavaBean. Entonces es fácil reemplazar los objetos colaboradores con interfaces similares cuando sea necesario. }
Spring Framework es una arquitectura en capas que consta de 7 módulos bien definidos. Los módulos Spring se construyen sobre el contenedor principal, que define cómo crear, configurar y administrar beans, como se muestra en la Figura 1.
Cada módulo (o componente) que constituye el marco Spring puede existir solo o implementarse junto con uno o más módulos. Las funciones de cada módulo son las siguientes:
☆ Contenedor principal: el contenedor principal proporciona las funciones básicas del marco Spring. El componente principal del contenedor principal es BeanFactory, que es la implementación del patrón de fábrica. BeanFactory utiliza el patrón de Inversión de Control (IOC) para separar la configuración de la aplicación y las especificaciones de dependencia del código de la aplicación real.
☆ Contexto Spring: el contexto Spring es un archivo de configuración que proporciona información de contexto al marco Spring. Spring Context incluye servicios empresariales como JNDI, EJB, correo electrónico, internacionalización, validación y funciones de envío.
☆ Spring AOP: a través de las funciones de gestión de configuración, el módulo Spring AOP integra directamente funciones de programación orientadas a aspectos en el marco Spring. Por lo tanto, es fácil hacer que cualquier objeto administrado por el marco Spring admita AOP. El módulo Spring AOP proporciona servicios de gestión de transacciones para objetos en aplicaciones basadas en Spring. Al utilizar Spring AOP, puede integrar la gestión de transacciones declarativas en su aplicación sin depender de componentes EJB.
☆ Spring DAO: la capa de abstracción JDBC DAO proporciona una jerarquía de excepciones significativa que se puede utilizar para gestionar el manejo de excepciones y los mensajes de error emitidos por diferentes proveedores de bases de datos. La jerarquía de excepciones simplifica el manejo de errores y reduce en gran medida la cantidad de código de excepción que debe escribirse (como abrir y cerrar conexiones). Las excepciones orientadas a JDBC de Spring DAO siguen la jerarquía de excepciones DAO común.
☆ Spring ORM: el marco Spring inserta varios marcos ORM para proporcionar herramientas relacionales de objetos ORM, incluidos JDO, Hibernate e iBatis SQL Map. Todos estos cumplen con la jerarquía de excepciones DAO y transacciones genéricas de Spring.
☆ Módulo Spring Web: el módulo de contexto web se basa en el módulo de contexto de la aplicación y proporciona contexto para aplicaciones basadas en web. Por lo tanto, Spring Framework admite la integración con Jakarta Struts. El módulo web también simplifica el manejo de solicitudes de varias partes y la vinculación de parámetros de solicitud a objetos de dominio.
☆ Marco Spring MVC: el marco MVC es una implementación MVC con todas las funciones para crear aplicaciones web. A través de la interfaz de estrategia, el marco MVC se vuelve altamente configurable y MVC admite una gran cantidad de tecnologías de visualización, incluidas JSP, Velocity, Tiles, iText y POI.
Las funciones de Spring Framework se pueden utilizar en cualquier servidor J2EE y la mayoría de las funciones también son adecuadas para entornos no administrados. El punto central de Spring es admitir objetos comerciales y de acceso a datos reutilizables que no están vinculados a servicios J2EE específicos. No hay duda de que dichos objetos se pueden reutilizar entre diferentes entornos J2EE (Web o EJB), aplicaciones independientes y entornos de prueba.
COI y AOP
El concepto básico del patrón de Inversión de Control (también llamado intervención de dependencia) es que no creas objetos, sino que describe cómo crearlos. No está directamente conectado a objetos y servicios en el código, pero qué componente requiere qué servicio se describe en el archivo de configuración. El contenedor (en el marco Spring, el contenedor IOC) es responsable de unirlos.
En un escenario típico de IOC, el contenedor crea todos los objetos y establece las propiedades necesarias para conectarlos y decidir cuándo llamar a los métodos. La siguiente tabla enumera un modo de implementación de IOC.
El contenedor IOC del marco Spring se implementa utilizando el tipo 2 y el tipo 3.
programación orientada a aspectos
La programación orientada a aspectos, o AOP, es una técnica de programación que permite a los programadores modularizar comportamientos que trascienden preocupaciones o líneas de responsabilidad típicas, como el registro y la gestión de transacciones. La construcción central de AOP son los aspectos, que encapsulan el comportamiento que afecta a múltiples clases en módulos reutilizables.
AOP e IOC son tecnologías complementarias que utilizan un enfoque modular para resolver problemas complejos en el desarrollo de aplicaciones empresariales. En un enfoque típico de desarrollo orientado a objetos, las declaraciones de registro se pueden colocar en todos los métodos y clases de Java para implementar la funcionalidad de registro. En el enfoque AOP, los servicios de registro pueden, a su vez, modularizarse y aplicarse de forma declarativa a componentes que requieren registro. Por supuesto, la ventaja es que la clase Java no necesita conocer la existencia del servicio de registro ni considerar el código relacionado. Por lo tanto, el código de aplicación escrito en Spring AOP está débilmente acoplado.
La funcionalidad de AOP está completamente integrada en el contexto de la gestión de transacciones, el registro y varias otras características de Spring.
contenedor del COI
El núcleo del diseño de Spring es el paquete org.springframework.beans, que está diseñado para usarse con componentes JavaBean. Por lo general, el usuario no utiliza este paquete directamente, pero el servidor lo utiliza como intermediario de bajo nivel para la mayoría de las demás funciones. La siguiente abstracción de nivel más alto es la interfaz BeanFactory, que es una implementación del patrón de diseño Factory y permite crear y recuperar objetos por nombre. BeanFactory también puede gestionar las relaciones entre objetos.
BeanFactory admite dos modelos de objetos.
□ El modelo monomórfico proporciona una instancia compartida de un objeto con un nombre específico que se puede recuperar en el momento de la consulta. Singleton es el modelo de objetos predeterminado y más utilizado. Ideal para objetos de servicio sin estado.
□ El modelo prototipo garantiza que se cree un objeto separado para cada recuperación. El modelo prototipo es más adecuado cuando cada usuario necesita su propio objeto.
El concepto de fábrica de frijoles es la base de Spring como contenedor de COI. El COI transfiere la responsabilidad de manejar las cosas desde el código de la aplicación al marco. Como demostraré en el siguiente ejemplo, el marco Spring utiliza propiedades de JavaBean y datos de configuración para indicar qué dependencias se deben establecer.
Interfaz BeanFactory
Debido a que org.springframework.beans.factory.BeanFactory es una interfaz simple, se puede implementar para varios métodos de almacenamiento subyacentes. La definición de BeanFactory más utilizada es XmlBeanFactory, que carga beans según las definiciones de un archivo XML, como se muestra en el Listado 1.
Listado 1. XmlBeanFactory
Fábrica BeanFactory = new XMLBeanFactory(new FileInputSteam("mybean.xml"));
Los beans definidos en archivos XML se cargan pasivamente, lo que significa que el bean en sí no se inicializa hasta que se necesita. Para recuperar un bean de BeanFactory, simplemente llame al método getBean() y pase el nombre del bean que se va a recuperar, como se muestra en el Listado 2.
Listado 2. getBean()
MiBean mibean = (MiBean) factory.getBean("mibean");
Cada definición de bean puede ser un POJO (definido con un nombre de clase y propiedades de inicialización de JavaBean) o un FactoryBean. La interfaz FactoryBean agrega un nivel de direccionamiento indirecto a las aplicaciones creadas con el marco Spring.
ejemplo del COI
La forma más sencilla de entender la inversión de control es verla en acción. Concluí la Parte 1 de mi serie Spring de tres partes con un ejemplo que demuestra cómo inyectar las dependencias de su aplicación (en lugar de construirlas) a través del contenedor Spring IOC.
Utilicé el caso de uso de abrir una cuenta de crédito en línea como punto de partida. Para esta implementación, la apertura de una cuenta de crédito requiere que el usuario interactúe con los siguientes servicios:
☆ Servicio de calificación crediticia, consulta la información del historial crediticio del usuario.
☆ Servicio de vinculación de mensajes remotos para insertar información del cliente y conectar la información del cliente con la tarjeta de crédito y la información bancaria para débito automático (si es necesario).
☆ Servicio de correo electrónico para enviar correos electrónicos sobre el estado de la tarjeta de crédito a los usuarios.
tres interfaces
Para este ejemplo, asumo que los servicios ya existen e idealmente los integro de una manera poco acoplada. La siguiente lista muestra las API para los tres servicios.
Listado 3. Interfaz CreditRating
interfaz pública CreditRatingInterface {
getUserCreditHistoryInformation booleano público (ICustomer iCustomer);
}
La interfaz de calificación crediticia que se muestra en el Listado 3 proporciona información del historial crediticio. Requiere un objeto Cliente que contenga información del cliente. La implementación de esta interfaz la proporciona la clase CreditRating.
Listado 4. CreditLinkingInterface
interfaz pública CreditLinkingInterface {
cadena pública getUrl();
setUrl público vacío (URL de cadena);
enlace público vacíoCreditBankAccount() arroja una excepción;
}
La interfaz de vinculación de crédito une la información del historial crediticio con la información bancaria (si es necesaria) e inserta la información de la tarjeta de crédito del usuario. La interfaz de enlace de crédito es un servicio remoto y su consulta se realiza mediante el método getUrl(). La URL la establece el mecanismo de configuración de beans del marco Spring, que analizaré más adelante. La implementación de esta interfaz la proporciona la clase CreditLinking.
Listado 5. Interfaz de correo electrónico
interfaz pública EmailInterface {
envío de correo electrónico vacío público (ICustomer iCustomer);
cadena pública getFromEmail();
setFromEmail público vacío (String fromEmail);
Cadena pública getPassword();
setPassword público vacío (contraseña de cadena);
Cadena pública getSmtpHost();
setSmtpHost público vacío (String smtpHost);
cadena pública getUserId();
setUserId público vacío (String userId);
Este artículo proviene del blog de CSDN. Indique la fuente al reimprimir: http://blog.csdn.net/loshu2003/archive/2009/12/31/5111344.aspx.
-