Class DatabaseConfig
Esta clase configura los aspectos relacionados con la persistencia de datos, incluyendo la habilitación de repositorios JPA y la gestión de transacciones.
Funcionalidades Configuradas
- Repositorios JPA: Escaneo automático en el paquete repository
- Gestión de Transacciones: Soporte para @Transactional
- EntityManager: Gestión automática del contexto de persistencia
Anotaciones Principales
- @Configuration: Indica que es una clase de configuración de Spring
- @EnableJpaRepositories: Habilita la detección automática de repositorios JPA
- @EnableTransactionManagement: Habilita el soporte de transacciones declarativas
Configuración de Repositorios
Los repositorios JPA se escanean automáticamente en el paquete
com.proyecto.jpa.repository. Cualquier interfaz que extienda
JpaRepository será detectada y se creará una implementación automáticamente.
Gestión de Transacciones
Con @EnableTransactionManagement, todos los métodos anotados con
@Transactional se ejecutarán dentro de una transacción. Si el método
se completa sin errores, se hace commit; si hay una excepción, se hace rollback.
Ejemplo de Uso de Transacciones
@Service
public class OrderService {
@Transactional
public void createOrder(Order order) {
// Si algo falla aquí, se hace rollback automáticamente
orderRepository.save(order);
// ...otras operaciones
}
}
Propiedades de Configuración
Las propiedades específicas de la base de datos se definen en
application.properties:
- spring.datasource.url - URL de conexión
- spring.jpa.hibernate.ddl-auto - Estrategia de generación del esquema
- spring.jpa.show-sql - Mostrar consultas SQL en logs
- spring.sql.init.mode - Modo de inicialización de scripts SQL
- Since:
- 1.0.0
- Version:
- 1.0.0
- Author:
- Proyecto JPA
- See Also:
-
EnableJpaRepositoriesEnableTransactionManagementConfiguration
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
DatabaseConfig
public DatabaseConfig()Constructor por defecto.Spring Boot se encarga automáticamente de crear el DataSource, EntityManagerFactory y TransactionManager basándose en las propiedades definidas en application.properties.
-