数据库

SQL

Sponge 为建立 JDBC 数据库连接提供了一个方便的抽象,它处理了从 JDBC URL 建立高效化连接池的复杂度。

虽然 SQL 服务支持任何 JDBC 连接器,但是 Sponge 的 Forge 实现只包含最常见的:

  • MySQL
  • SQlite
  • H2

警告

因为 SQLite 有着诸多的限制,所以强烈建议不要使用它,除非是为了向旧版本兼容。H2 是我们建议的文件支持的数据库实现。

使用方法

可以通过插件的服务管理器访问数据源(Data Source):

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

}

SQL 服务提供池连接,因此从返回的数据源获取连接不需要付出多少昂贵的代价。因此,我们建议不要保持连接,也就是使用后不久关闭它们,如上面的示例所展示的那样(正确的资源管理意味着你 必须 关闭连接)。

NoSQL

Sponge 目前不提供任何特别的针对 NoSQL 数据库(MongoDB 等)的抽象。希望使用 NoSQL 数据库的插件必须自己处理数据库连接。