【问题标题】:Get JDBC connection working in play framework (java)让 JDBC 连接在 play 框架(java)中工作
【发布时间】:2014-06-19 13:00:47
【问题描述】:

想知道,要让 jdbc 嵌入式 h2 数据库在我的 play 应用程序中工作,我缺少哪些步骤?关注these docs.

  1. 到目前为止,已编辑 Application.conf 文件以包含以下内容: db.default.driver=org.h2.Driver db.default.url="jdbc:h2:databases/test" db.default.user=test db.default.password="testtest"
  2. 接下来我创建了一个 libs 目录并添加了 jar 文件 h2-1.3.174.jar 这是必要的还是提供的驱动程序处理所有类型的 h2 数据库(嵌入式和服务器 - 我知道它在内存中处理)?
  3. 现在在控制器中如何访问数据库?我必须启动/关闭数据库吗?
  4. 我知道我可以从 play.db 中的 getConnection() 方法获取连接。但是每次我通过这个连接执行一个语句时,我都会收到一个异常,说没有可用的数据。如果我再检查 - 看起来像目录 数据库/测试 未创建,因此不存在数据库文件。

我错过了什么?

【问题讨论】:

    标签: java jdbc playframework h2


    【解决方案1】:

    H2 开箱即用。只需在终端中创建一个新项目即可。

    否则,对您的列表:

    1. 我觉得你应该把db.default.url="jdbc:h2:databases/test"改成db.default.url="jdbc:h2:mem:play"
    2. 不需要创建 lib 目录。这一切都由依赖 mgmt sbt 的构建处理
    3. 只需使用模型对象并调用save/update。无需致电start/shutdown
    4. 你在一个框架中,一切都准备好了......

    我认为您应该从头到尾阅读文档并检查示例应用程序。这就是您要寻找的一切。

    【讨论】:

    • 谢谢 - 澄清一下,我认为我不能使用 h2:mem:... 因为我需要数据库不在内存中。它需要坚持下去。我必须使用 mem: 吗?
    • 我使用 H2 进行开发和测试。稍后您可以将应用程序与 mysql 之类的 sql 数据库连接起来:db.default.url="jdbc:mysql://localhost/dbname",您需要一个连接器库,在project/Build.scala"mysql" % "mysql-connector-java" % "5.1.18" 中声明它
    • 只是为了确保 - 一旦我更改了数据库中的某些内容,它会自动保存还是我必须调用某种保存/更新方法?刚刚让嵌入式 h2 db 工作,它似乎正确保存了所有内容。我只是因为你的第三个要点才问
    • 模型实例有 save() 和 update() 方法,它们的作用与命名相同。
    • 创建模型实体的新操作符,持久化的保存方法,更新进行更改。使用单元测试,最好的学习方式。不要忘记为答案投票。
    【解决方案2】:

    除了 myborobudur 的回答我只提一下,您不需要使用内存数据库,因为您可以使用文件存储(嵌入式)甚至将 H2 作为服务器,然后在 Server Mode 下使用 TCP 连接到它...H2 documentation 中清楚地描述了一切。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 2022-12-13
      相关资源
      最近更新 更多