データベース

SQL

Sponge provides a convenient abstraction for establishing JDBC database connections that handles the complexities of establishing an efficient pooled connection from a JDBC URL.

While the SQL service supports any JDBC connector, the Forge implementation of Sponge only ships with the most common:

  • MySQL

  • Sqlite

  • H2

警告

SQLite には制約が多いため、後方互換性が必要な場合を除き使用をおすすめしません。 file-backed なデータベースの実装として H2 を推奨します。

使い方

データにはプラグインのサービスマネージャを通じてアクセスできます。

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

}

The SQL service provides a pooled connection, so getting a connection from the returned DataSource is not expensive. Therefore, we recommended not keeping connections around, and closing them soon after use instead, as shown in the above example. (Proper resource management means you do have to close connections).

NoSQL

現在 Sponge は NoSQL データベース (MongoDB など) には特別な抽象化の手段を提供していません。 NoSQL データベースを使いたい場合は、それぞれのコネクタを用意しなければなりません。