Veritabanları
Uyarı
These docs were written for SpongeAPI 7 and are likely out of date. If you feel like you can help update them, please submit a PR!
SQL
Sponge, bir JDBC URL’sinden verimli bir havuzlanmış bağlantı kurmanın karmaşıklıklarını işleyen JDBC veritabanı bağlantılarını oluşturmak için uygun bir soyutlama sağlar.
SQL hizmeti herhangi bir JDBC bağlayıcısını desteklerken, Sponge Forge uygulaması yalnızca en yaygın olanıyla birlikte gelir:
MySQL
Sqlite
H2
Uyarı
Sqlite’in birçok kısıtlaması olduğundan, eski uyumluluğun gerekli olduğu durumlar haricinde kullanımı kesinlikle önerilmemektedir. H2, önerilen dosya destekli veritabanı uygulamasıdır.
Kullanım
Veri tabanına eklentinin servis yöneticisi ile erişilebilir:
import org.spongepowered.api.Sponge;
import org.spongepowered.api.service.sql.SqlService;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
private SqlService sql;
public 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 {
String uri = "jdbc:h2:imalittledatabaseshortandstout.db";
String sql = "SELECT * FROM test_tbl";
try (Connection conn = getDataSource(uri).getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet results = stmt.executeQuery()) {
while (results.next()) {
// ...
}
}
}
JDBC URLleri Sponge’un evrensel düzenlemesinde (config/sponge/global.conf
) listelenen``sponge.sql.aliases``anahtarının altındaki JDBC URL takma adlarından biri ile eşleşen :javadoc:`SqlService#getConnectionUrlFromAlias(String)`den alınmış olmalıdır.
SQL servisi birleştirilmiş bir bağlantı sağlar,dolayısıyla geri göndürülmüş DataSource``Bir bağlantı almak pahalı değildir. Bu yüzden, bağlantıların yakınlarda bulundurulmamasını ve kullanımdan sonra yukarıda gösterildiği gibi kapatılmasını tavsiye ediyoruz. Oluşturulan her ``PreparedStatement
ve ResultSet
kullanıldıktan sonra object.close()
ile veya,tercihe bağlı olarak, bir kaynakla dene engeli vasıtası ile kapatılmalıdır.
NoSQL
Sponge does not currently provide any special abstraction over NoSQL databases (MongoDB etc.). Plugins that wish to use NoSQL databases must provide their own connectors.