Bases de datos

SQL

Sponge provee una abstracción adecuada para establecer conexiones de la base de datos JDBC, que puede manejar las complejidades de establecer una conexión agrupada eficientemente desde una URL JDBC.

Mientras que el servicio SQL soporta a cualquier conector JDBC, la implementación Forge de Sponge carga con los más comunes:

  • MySQL
  • Sqlite
  • H2

Advertencia

Ya que Sqlite tiene muchas limitaciones, su uso no es recomendado, a menos que el caso requiera compatibilidad de legado. Recomendamos la implementación de H2 como base de datos de apoyo.

Uso

Se puede acceder a la fuente de datos a través del administrador de servicios del complemento:

import org.spongepowered.api.Sponge;
import org.spongepowered.api.service.sql.SqlService;

import java.sql.Connection;
import java.sql.SQLException;

private SqlService sql;
public javax.sql.DataSource getDataSource(String jdbcUrl) throws SQLException {
    if (sql == null) {
        sql = Sponge.getServiceManager().provide(SqlService.class).get();
    }
    return sql.getDataSource(jdbcUrl);
}

// Later on
public void myMethodThatQueries() throws SQLException {
    Connection conn = getDataSource("jdbc:h2:imalittledatabaseshortandstout.db").getConnection();
    try {
        conn.prepareStatement("SELECT * FROM test_tbl").execute();
    } finally {
        conn.close();
    }

}

El servicio SQL proporciona una conexión agrupada, por lo que obtener una conexión del DataSource devuelto no es costoso. Por lo tanto, recomendamos no mantener conexiones, y cerrarlas luego de usarlas, como se muestra en el ejemplo anterior. (La gestión adecuada de los recursos significa que tienes que cerrar las conexiones).

NoSQL

Actualmente Sponge no proporciona ninguna abstracción especial sobre las bases de datos NoSQL (MongoDB, etc.). Los complementos que desean utilizar bases de datos NoSQL deben proporcionar sus propios conectores.