【问题标题】:play framework and postgresql multiple schemasplay框架和postgresql多模式
【发布时间】:2012-09-27 15:33:16
【问题描述】:

在我寻找一种处理多租户播放框架和 postgresql 模式的方法时,我发现了这篇文章 Here.
问题是我无法弄清楚我可以在游戏中执行普通 sql 语句的方式(我完全是菜鸟),有人可以帮忙吗?。

【问题讨论】:

    标签: playframework-1.x


    【解决方案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();
    }
    

    【讨论】:

      【解决方案2】:

      我们使用模式对 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();
      

      【讨论】:

        猜你喜欢
        • 2011-12-05
        • 2015-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-31
        • 1970-01-01
        • 2015-01-16
        • 1970-01-01
        相关资源
        最近更新 更多