Bases de données

SQL

Sponge fournit une abstraction pratique pour établir une connexion avec une base de données JDBC. Cette dernière gère la complexité qu’est d’établir une connexion groupée et efficace à partir d’une URL JDBC.

Tandis que le service SQL prend en charge n’importe quel connecteur JDBC, l’implémentation Forge de Sponge est fournie uniquement avec les plus courants :

  • MySQL
  • Sqlite
  • H2

Avertissement

Puisque Sqlite a de nombreuses limitations, son usage est fortement déconseillé, excepté dans le cas ou une rétrocompatibilité est nécessaire. H2 est notre implémentation de base de données basée sur fichiers de préférence.

Usage

Une source de donnés peut être accédée via le gestionnaire de service du plugin:

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();
    }

}

Comme le service SQL fournit une connexion groupée, donc obtenir une connexion depuis la ``DataSource `` renvoyée est économe en ressources. Néanmoins, nous recommandons de ne pas garder de connexions ouvertes, et de les fermer juste après leur utilisation, comme dans l’exemple ci-dessous. (Une gestion appropriée des ressources signifie que vous devez fermer les connexions).

NoSQL

Actuellement, Sponge ne fournit pas d’abstraction spécifique pour accéder à la base de données NoSQL (MongoDB etc). Les plugins qui veulent utiliser la base de données NoSQL doivent fournir leur propre connecteur.