DevJava 20250112-1 Flashcards

1
Q

¿Qué es Apache Maven y cuál es su propósito principal?

A

Apache Maven es una herramienta de automatización de compilación y gestión de proyectos para proyectos Java. Su propósito principal es simplificar el proceso de construcción, gestión de dependencias y documentación de proyectos, permitiendo a los desarrolladores enfocarse en el desarrollo del código.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Describe la estructura básica de un archivo POM en Maven.

A

Un archivo POM (Project Object Model) en Maven es un archivo XML que contiene la configuración del proyecto. Sus elementos básicos incluyen:
- <modelVersion>: versión del modelo POM.
- <groupId>: identifica el grupo o la organización.
- <artifactId>: identifica el artefacto único dentro del grupo.
- <version>: versión del artefacto.
- <dependencies>: lista de dependencias del proyecto.
- <build>: configuraciones de construcción, incluyendo plugins.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Cómo se gestiona una dependencia en Maven y qué información se necesita?

A

Para gestionar una dependencia en Maven, se agrega un bloque <dependency> dentro del <dependencies> en el POM. La información necesaria incluye:
- <groupId>: grupo de la dependencia.
- <artifactId>: artefacto de la dependencia.
- <version>: versión específica de la dependencia.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Explica el ciclo de vida de construcción en Maven.

A

El ciclo de vida de construcción en Maven está compuesto por varias fases que se ejecutan en orden secuencial. Las fases principales incluyen:
1. validate: valida que el proyecto está correcto y todas las dependencias necesarias están disponibles.
2. compile: compila el código fuente del proyecto.
3. test: ejecuta pruebas unitarias.
4. package: empaqueta el código compilado en un formato distribuible, como JAR o WAR.
5. verify: verifica el paquete para asegurar que cumple con los criterios de calidad.
6. install: instala el paquete en el repositorio local.
7. deploy: despliega el paquete en un repositorio remoto para compartir con otros desarrolladores.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué son los repositorios en Maven y cuáles son los tipos principales?

A

Los repositorios en Maven son ubicaciones donde se almacenan artefactos como dependencias y plugins. Los tipos principales son:
1. Repositorio local: ubicado en el sistema de archivos del desarrollador, generalmente en ~/.m2/repository.
2. Repositorio central: un repositorio público mantenido por Maven donde se encuentran muchas dependencias comunes.
3. Repositorio remoto: repositorios adicionales configurados por la organización para alojar artefactos personalizados o privados.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Qué es el Inversion of Control (IoC) en el contexto de Spring Framework?

A

El Inversion of Control (IoC) en Spring Framework es un principio de diseño donde el control de los objetos y sus dependencias es delegado al contenedor de Spring. Esto permite una gestión más flexible y desacoplada de las dependencias, facilitando la configuración y prueba de aplicaciones.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Define Dependency Injection (DI) y sus tipos en Spring.

A

Dependency Injection (DI) es un patrón de diseño donde las dependencias de un objeto son proporcionadas por un contenedor en lugar de ser creadas internamente. En Spring, los tipos principales de DI son:
1. Inyección por constructor: las dependencias se proporcionan a través del constructor de la clase.
2. Inyección por setter: las dependencias se establecen mediante métodos setter.
3. Inyección por campo: las dependencias se inyectan directamente en los campos de la clase, generalmente usando anotaciones como @Autowired.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Qué es el contenedor de Spring y cómo gestiona los beans?

A

El contenedor de Spring es el núcleo del framework que gestiona la creación, configuración y ciclo de vida de los beans (objetos) en una aplicación. El contenedor lee las configuraciones de los beans desde archivos XML, anotaciones o Java Config, y utiliza Dependency Injection para resolver y suministrar las dependencias entre ellos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Explica el concepto de Aspect-Oriented Programming (AOP) en Spring.

A

Aspect-Oriented Programming (AOP) en Spring permite separar preocupaciones transversales (como logging, seguridad, transacciones) del código de negocio principal. Utiliza conceptos como aspectos, puntos de corte, consejos y uniones para definir dónde y cómo se aplican las funcionalidades transversales sin afectar el código principal.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

¿Qué es Spring MVC y cuáles son sus componentes principales?

A

Spring MVC es un framework basado en el patrón Modelo-Vista-Controlador para desarrollar aplicaciones web en Spring. Sus componentes principales son:
1. Modelo: representa los datos y la lógica de negocio.
2. Vista: presenta la interfaz de usuario.
3. Controlador: maneja las solicitudes del usuario, interactúa con el modelo y selecciona la vista adecuada para responder.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Qué es Spring Boot y cuáles son sus principales ventajas?

A

Spring Boot es un proyecto de Spring que facilita la creación de aplicaciones basadas en Spring con configuración mínima. Sus principales ventajas incluyen:
1. Auto-configuración: configura automáticamente los componentes necesarios según las dependencias.
2. Standalone: permite crear aplicaciones ejecutables con un servidor embebido.
3. Starter POMs: simplifica la gestión de dependencias mediante paquetes predefinidos.
4. Actuator: proporciona herramientas para monitorear y gestionar la aplicación en producción.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Qué son los Starters en Spring Boot y cómo se utilizan?

A

Los Starters en Spring Boot son conjuntos de dependencias preconfiguradas que facilitan la incorporación de funcionalidades específicas en una aplicación. Se utilizan agregando dependencias Starter en el archivo pom.xml o build.gradle, lo que simplifica la configuración inicial y asegura que las dependencias necesarias estén disponibles.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Describe el uso de perfiles en Spring Boot.

A

Los perfiles en Spring Boot permiten definir configuraciones específicas para diferentes entornos (desarrollo, pruebas, producción). Se utilizan mediante la anotación @Profile en beans o archivos de propiedades separados (application-dev.properties, application-prod.properties), lo que facilita la gestión de configuraciones que varían según el entorno.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Qué es Spring Boot Actuator y para qué se utiliza?

A

Spring Boot Actuator es una herramienta que proporciona endpoints listos para usar para monitorear y gestionar una aplicación Spring Boot en producción. Se utiliza para obtener métricas, información sobre la salud de la aplicación, detalles de la configuración, y otros aspectos operativos, facilitando la administración y supervisión de la aplicación.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Cómo se configura una aplicación Spring Boot para usar una base de datos específica?

A

Para configurar una aplicación Spring Boot para usar una base de datos específica, se deben añadir las dependencias del controlador de la base de datos en el pom.xml o build.gradle, y luego definir las propiedades de conexión en el archivo application.properties o application.yml, como la URL de la base de datos, el nombre de usuario, la contraseña y el dialecto de JPA.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

¿Qué es Spring Boot DevTools y cuáles son sus características principales?

A

Spring Boot DevTools es un módulo que proporciona herramientas de desarrollo que mejoran la experiencia de desarrollo con características como el reinicio automático de la aplicación cuando se detectan cambios en el código, la recarga de plantillas, y la habilitación de funcionalidades de depuración avanzada. Los beneficios incluyen una mayor productividad y un ciclo de desarrollo más rápido.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

¿Qué es JavaServer Faces (JSF) y cuál es su propósito?

A

JavaServer Faces (JSF) es un framework Java para construir interfaces de usuario web basadas en componentes. Su propósito es simplificar el desarrollo de aplicaciones web al proporcionar una estructura basada en componentes reutilizables, manejo de eventos y integración con el ciclo de vida del servidor.

18
Q

Describe el ciclo de vida de JSF.

A

El ciclo de vida de JSF consta de varias fases:
1. Restore View: Se restaura o crea la vista actual.
2. Apply Request Values: Se aplican los valores de la solicitud a los componentes.
3. Process Validations: Se validan los valores de los componentes.
4. Update Model Values: Se actualizan los valores del modelo (backing beans).
5. Invoke Application: Se ejecutan las acciones del usuario.
6. Render Response: Se renderiza la respuesta y se envía al cliente.

19
Q

¿Qué es un Managed Bean en JSF y cómo se define?

A

Un Managed Bean en JSF es una clase Java que actúa como un controlador o modelo de datos para la interfaz de usuario. Se define mediante anotaciones como @ManagedBean o @Named y se configura en el archivo faces-config.xml. Los Managed Beans manejan la lógica de la aplicación y se vinculan a los componentes de la vista mediante expresiones EL (Expression Language).

20
Q

¿Qué son los componentes UI en JSF y cómo se utilizan?

A

Los componentes UI en JSF son elementos de la interfaz de usuario reutilizables, como formularios, botones, tablas y campos de entrada. Se utilizan en las páginas JSF (usando XHTML) mediante etiquetas específicas de JSF, como <h:form>, <h:inputText>, <h:commandButton>, que se vinculan con Managed Beans para manejar la interacción del usuario.

21
Q

¿Qué es JAX-WS y para qué se utiliza?

A

JAX-WS (Java API for XML Web Services) es una API de Java para crear y consumir servicios web basados en SOAP. Se utiliza para implementar servicios web que pueden ser invocados a través de protocolos estándar como HTTP, facilitando la comunicación entre aplicaciones distribuidas.

22
Q

Describe el uso de anotaciones en JAX-WS para definir un servicio web.

A

En JAX-WS, se utilizan anotaciones para definir y configurar servicios web. Las principales anotaciones incluyen:
- @WebService: Se coloca en una clase para indicar que es un servicio web.
- @WebMethod: Se usa en métodos para exponerlos como operaciones del servicio.
- @WebParam: Define los parámetros de los métodos del servicio.
- @WebResult: Especifica el resultado de una operación del servicio.

23
Q

¿Qué es WSDL y cómo se relaciona con JAX-WS?

A

WSDL (Web Services Description Language) es un lenguaje basado en XML utilizado para describir la estructura y los detalles de un servicio web SOAP. En JAX-WS, WSDL define las operaciones que ofrece el servicio, los mensajes de entrada y salida, y las ubicaciones de los endpoints, facilitando la interacción entre consumidores y proveedores de servicios web.

24
Q

¿Cómo se publica un servicio web JAX-WS en un servidor de aplicaciones?

A

Para publicar un servicio web JAX-WS en un servidor de aplicaciones, se implementa una clase Java anotada con @WebService y se despliega en el servidor de aplicaciones compatible (como GlassFish o Tomcat con soporte JAX-WS). Alternativamente, se puede usar la API de publicación, creando una instancia de Endpoint y llamando al método publish con la URL del servicio.

25
Q

¿Cómo se consume un servicio web JAX-WS en una aplicación Java?

A

Para consumir un servicio web JAX-WS en una aplicación Java, se utiliza wsimport para generar las clases de cliente a partir del archivo WSDL. Luego, se crea una instancia del servicio y se invocan los métodos del servicio web a través de las clases generadas. Por ejemplo:
```java
MyService service = new MyService();
MyPort port = service.getMyPort();
port.myOperation();
~~~

26
Q

¿Qué es Enterprise JavaBeans (EJB) y cuáles son sus tipos principales?

A

Enterprise JavaBeans (EJB) es una especificación de Java para construir componentes de servidor robustos y escalables. Los tipos principales de EJB son:
1. Session Beans: Representan operaciones que realizan tareas específicas (pueden ser stateless o stateful).
2. Message-Driven Beans: Manejan mensajes asíncronos de sistemas de mensajería (ej. JMS).
3. Entity Beans: (Obsoletos en EJB 3.x, reemplazados por JPA) Representaban entidades persistentes.

27
Q

Describe las diferencias entre Session Beans Stateless y Stateful.

A
  • Stateless Session Beans: No mantienen estado entre las invocaciones de métodos. Cada solicitud se trata de manera independiente, facilitando la escalabilidad.
  • Stateful Session Beans: Mantienen estado conversacional entre las invocaciones de métodos. Son adecuados para interacciones donde el contexto necesita ser recordado entre las llamadas.
28
Q

¿Qué son los interceptors en EJB y para qué se utilizan?

A

Los interceptors en EJB son componentes que pueden interceptar y añadir lógica adicional antes o después de la invocación de métodos en EJBs. Se utilizan para implementar cross-cutting concerns como logging, seguridad, transacciones y manejo de excepciones, sin modificar el código de negocio principal.

29
Q

¿Qué es el contenedor EJB y cuáles son sus responsabilidades?

A

El contenedor EJB es el entorno de ejecución que gestiona los Enterprise JavaBeans. Sus responsabilidades incluyen:
1. Creación y destrucción de beans.
2. Gestión de la seguridad y la autenticación.
3. Gestión de transacciones.
4. Gestión del ciclo de vida de los beans.
5. Provisión de servicios de pooling y concurrencia.
6. **Implementación de aspectos como interceptors y callbacks.

30
Q

¿Qué es una base de datos NoSQL y cuáles son sus tipos principales?

A

Una base de datos NoSQL es un sistema de gestión de bases de datos que no utiliza el modelo relacional tradicional y está diseñado para manejar grandes volúmenes de datos variados y distribuidos. Los tipos principales incluyen:
1. Documentales: Almacenan datos en documentos JSON o XML (e.g., MongoDB).
2. Clave-Valor: Almacenan pares clave-valor (e.g., Redis).
3. Columnares: Almacenan datos en columnas en lugar de filas (e.g., Cassandra).
4. Grafos: Almacenan relaciones entre datos como grafos (e.g., Neo4j).

31
Q

¿Qué es Hibernate y cuál es su propósito en el desarrollo de aplicaciones Java?

A

Hibernate es un framework de mapeo objeto-relacional (ORM) para Java que facilita la interacción entre aplicaciones Java y bases de datos relacionales. Su propósito es eliminar la necesidad de escribir código SQL manualmente, gestionando automáticamente la persistencia de datos, las relaciones entre entidades y las transacciones.

32
Q

Explica el concepto de mapeo en Hibernate y los tipos de mapeo disponibles.

A

El mapeo en Hibernate se refiere a la correspondencia entre las clases Java y las tablas de una base de datos. Los tipos de mapeo disponibles incluyen:
1. Mapeo Uno a Uno (One-to-One): Relación donde una entidad está relacionada con exactamente una instancia de otra entidad.
2. Mapeo Uno a Muchos (One-to-Many): Una entidad está relacionada con múltiples instancias de otra entidad.
3. Mapeo Muchos a Uno (Many-to-One): Múltiples instancias de una entidad están relacionadas con una instancia de otra entidad.
4. Mapeo Muchos a Muchos (Many-to-Many): Múltiples instancias de una entidad están relacionadas con múltiples instancias de otra entidad.

33
Q

¿Qué es HQL en Hibernate y cómo se diferencia de SQL?

A

HQL (Hibernate Query Language) es un lenguaje de consulta orientado a objetos proporcionado por Hibernate. Se diferencia de SQL en que opera sobre las entidades y sus propiedades en lugar de sobre las tablas y columnas de la base de datos. Esto permite escribir consultas de una manera más natural para los desarrolladores Java, aprovechando las relaciones entre objetos.

34
Q

Describe el ciclo de vida de una sesión en Hibernate.

A

El ciclo de vida de una sesión en Hibernate comienza cuando se crea una sesión mediante SessionFactory. Las etapas incluyen:
1. Abrir sesión: Se abre una nueva sesión.
2. Iniciar transacción: Se inicia una transacción.
3. Realizar operaciones: Se realizan operaciones CRUD (Crear, Leer, Actualizar, Borrar).
4. Commit/rollback: Se confirma o revierte la transacción.
5. Cerrar sesión: Se cierra la sesión, liberando recursos.

35
Q

¿Qué es el Lazy Loading en Hibernate y cuáles son sus ventajas?

A

El Lazy Loading en Hibernate es una técnica donde las asociaciones o colecciones de una entidad se cargan solo cuando son accedidas por primera vez, en lugar de cargarlas de manera anticipada. Sus ventajas incluyen la mejora del rendimiento y la reducción del uso de memoria al evitar la carga innecesaria de datos, especialmente en relaciones complejas o grandes conjuntos de datos.

36
Q

¿Qué es una Entidad en Hibernate y cómo se mapea a una tabla de base de datos?

A

Una Entidad en Hibernate es una clase Java que representa una tabla en la base de datos. Se mapea a una tabla usando la anotación @Entity y @Table. Las propiedades de la clase se mapean a las columnas de la tabla utilizando anotaciones como @Column, y se define la clave primaria con @Id.

37
Q

¿Qué es HQL y cómo se utiliza en Hibernate?

A

HQL (Hibernate Query Language) es un lenguaje de consulta similar a SQL pero orientado a objetos, utilizado en Hibernate para realizar consultas sobre las entidades mapeadas. Se utiliza para recuperar, actualizar o borrar datos de la base de datos de manera abstracta, permitiendo a los desarrolladores trabajar con objetos Java en lugar de tablas de base de datos.

38
Q

¿Cómo se maneja la transacción en Hibernate?

A

En Hibernate, la gestión de transacciones se realiza utilizando la API de transacciones de Hibernate o integrándose con frameworks de gestión de transacciones como JTA (Java Transaction API). Las transacciones se inician con session.beginTransaction(), se confirman con transaction.commit() y se revierten con transaction.rollback() en caso de errores, asegurando la atomicidad y consistencia de las operaciones.

39
Q

¿Qué es el SessionFactory en Hibernate y cuál es su función?

A

El SessionFactory en Hibernate es una fábrica de sesiones que se configura una vez al inicio de la aplicación. Es responsable de crear instancias de Session, que se utilizan para interactuar con la base de datos. El SessionFactory es thread-safe y diseñado para ser compartido entre múltiples hilos de la aplicación.

40
Q

¿Qué es la anotación @ManyToMany en Hibernate y cómo se utiliza?

A

La anotación @ManyToMany en Hibernate define una relación muchos a muchos entre dos entidades. Se utiliza en ambas entidades para establecer la relación, y generalmente se especifica una tabla de unión mediante @JoinTable.