数据库
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 数据库的插件必须自己处理数据库连接。