Introducción al trabajo con bases de datos en Java
El desarrollo moderno en Java rara vez prescinde de la interacción con sistemas de almacenamiento de datos. La elección entre bases de datos relacionales (SQL) y no relacionales (NoSQL) es una de las tareas arquitectónicas clave. En este artículo, utilizando PostgreSQL (un SGBD relacional clásico) y MongoDB (NoSQL orientado a documentos) como ejemplos, analizaremos los enfoques principales, las mejores prácticas y proporcionaremos ejemplos de código listos para usar. El material será útil tanto para desarrolladores principiantes como para aquellos con experiencia que deseen sistematizar sus conocimientos.
1. Conexión y trabajo con PostgreSQL en Java
1.1 Configuración del controlador JDBC
PostgreSQL es una de las bases de datos relacionales más populares. Para trabajar con ella desde Java se utiliza el controlador JDBC. Agregue la dependencia en pom.xml (Maven):
<dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.6.0</version></dependency>Después de agregar el controlador, se puede establecer la conexión:
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;
public class PostgresConnection { public static void main(String[] args) { String url = "jdbc:postgresql://localhost:5432/mydb"; String user = "admin"; String password = "secret";
try (Connection conn = DriverManager.getConnection(url, user, password)) { System.out.println("¡Conexión con PostgreSQL establecida!"); } catch (SQLException e) { e.printStackTrace(); } }}1.2 Operaciones CRUD (Create, Read, Update, Delete)
Consideremos un ejemplo de trabajo con la tabla users. Creación de un registro:
String insertSQL = "INSERT INTO users (name, email) VALUES (?, ?)";try (PreparedStatement pstmt = conn.prepareStatement(insertSQL)) { pstmt.setString(1, "Iván Petrov"); pstmt.setString(2, "ivan@example.com"); pstmt.executeUpdate();}Lectura de datos:
String selectSQL = "SELECT * FROM users WHERE id = ?";try (PreparedStatement pstmt = conn.prepareStatement(selectSQL)) { pstmt.setInt(1, 1); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { System.out.println(rs.getString("name") + " - " + rs.getString("email")); }}La actualización y eliminación se realizan de manera similar mediante UPDATE y DELETE usando PreparedStatement. Utilice siempre consultas parametrizadas; esto protege contra la inyección SQL.
1.3 Uso de un pool de conexiones (HikariCP)
En producción, no se recomienda abrir una nueva conexión para cada solicitud. Utilice un pool de conexiones. Agregue la dependencia:
<dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>5.0.1</version></dependency>Configuración:
HikariConfig config = new HikariConfig();config.setJdbcUrl("jdbc:postgresql://localhost:5432/mydb");config.setUsername("admin");config.setPassword("secret");config.setMaximumPoolSize(10);
HikariDataSource ds = new HikariDataSource(config);Connection conn = ds.getConnection();2. Conexión y trabajo con MongoDB en Java
2.1 Configuración del controlador MongoDB Java
MongoDB almacena datos en un formato de documentos similares a JSON. Para trabajar con él se utiliza el controlador oficial. Dependencia Maven:
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>4.10.2</version></dependency>Conexión a una base de datos local:
Blogs
Book Recommendations
Leer también
Caché en TypeScript: aceleramos la aplicación sin dolor
Patrones arquitectónicos en Rust: cómo escribir aplicaciones robustas sin dolor
Kotlin 2025: Top libros para profesionales y principiantes
Flujo de trabajo Git para desarrolladores Go: del caos al código limpio
Docker y Rust: contenedorización de aplicaciones en Rust