Play Frameworkとpostgresqlスキーマのマルチテナンシーに対処する方法を探していたところ、この記事を
ここで見つけました。
問題は、プレイ中にプレーンSQLステートメントを実行する方法を理解できないことです(私は完全に初心者です)、誰か助けてもらえますか?
質問する
711 次
2 に答える
1
実際には、生のjdbcオブジェクトを取得するのに役立つDBオブジェクトがあります。クエリがパラメータのない単純な更新である場合は、次のことができます
DB.execute(simpleUpdate)
クエリがパラメータのない単純な選択である場合は、次のことができます
DB.executeQuery(simpleSelect)
パラメータを使用してより複雑なものがある場合は、接続を直接取得することで、PreparedStatementを使用できます。
PreparedStatement deleteStmt = DB.getConnection().prepareStatement(myStatement);
try {
deleteStmt.setString(1, myString);
deleteStmt.executeUpdate();
} finally {
deleteStmt.close();
}
于 2012-10-03T06:52:08.977 に答える
0
スキーマを使用してPostgresデータベースをシャーディングします。これは私たちが思いついた解決策です。application.confに複数のDB接続を追加し、カスタムSQLで接続を初期化します。
# application.conf
db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost/mytest"
db.default.user=your_user
db.default.password=passwd
db.default.initSQL="SET timezone = 'UTC';"
db.tp0.driver=org.postgresql.Driver
db.tp0.url="jdbc:postgresql://localhost/mytest"
db.tp0.user=your_user
db.tp0.password=passwd
db.tp0.initSQL="SET search_path TO tp0, public;SET timezone = 'UTC';"
Javaコード
EbeanServer tp0 = Ebean.getServer("tp0");
List<moneylog> res = tp0.find(moneylog.class).findList();
于 2014-12-04T15:01:59.000 に答える