PlayFramework、Ebean 和 HickariCP 如何连接起来?

How are PlayFramework, Ebean and HickariCP all connected?

我在 Play 2.4 中使用 Ebean,但我不清楚 JDBC 池的连接是如何处理的。目前我只是创建一个 EbeanServer 并用它向数据库发出请求。

谁能解释一下这个话题。 PlayFramework、Ebean 和 HickariCP 是如何连接在一起的?我需要配置什么吗?我需要担心将此设置投入生产吗?

播放框架

Play Framework 是您用来开发应用程序的框架。几乎所有应用程序都需要某种数据存储,而这(在大多数情况下)由数据库提供。

连接池

现在,为了访问此数据库,您需要检索连接然后使用这些连接 - 执行 INSERTs、UPDATEs 等等。没有人会阻止您自己管理所有这些。但是有些人对这个主题有更好的了解,他们创建了 so-called 连接池 (CP) 实现——这些库为你 - 他们关心获得有效连接,他们关心管理 'ready-to-go' 连接池,这样你就不会浪费时间,他们关心正确关闭数据库连接等等。大多数时候,您并不真正直接与连接池实现交互。之所以如此,是因为作为开发人员,您的工作水平更高。

有不同的 CP 实现 - HikariCP, BoneCP, c3p0 等等。 Play Framework 2.4默认的是HikariCP,2.3默认的是BoneCP

ORM

与数据库连接一样,在使用某些模型并从数据库中保存/检索它们时,您不想处理低级别的东西。你想要一些抽象。

在您的应用程序中,您已经为某些东西建模 - 假设是在线商店 - 您有产品、订单、客户等。你已经写了一些 Java/Scala 类 代表这些实体 - Product.java 有一些字段,Order.java 有一些字段等等。现在,如果你有一个关系数据库(想想 PostgreSQL、Oracle、MySQL 等),你就会知道你有包含行和列的表。所以为了保存你的数据,你需要映射到这个table-based结构。这就是 ORM 实现发挥作用的地方。 ORM 是 object-relational 映射的缩写。这就像您的每个 类 和字段如何对应表和列的蓝图。

与连接池一样,有不同的 ORM 实现 - Hibernate, Ebean 等等。 Ebean 是以前 Play 版本中的默认设置。


碰巧 Play Framework 带有一些默认设置。您几乎可以完全自由地交换 Play 中的任何东西——您甚至可以更改模板引擎。好消息是这些都是合理的默认值——如果你想构建一些东西而不用花太多时间——只需从默认选项开始。如果你的架构设计得当,替换特定实现的工作应该是最小的。


关于生产设置的最后说明:如果没有适当的措施并且对您的用例了解不多,没有人能说生产性能是否良好。您可以在此处阅读有关调整 Play 的 JDBC 方面的更多信息:https://playframework.com/documentation/2.4.x/SettingsJDBC

我希望这能概述 Play、HikariCP 和 Ebean 之间的关系。