Play Ebean:Play Framework 的 ORM 集成模块

📅 2026/7/8 8:04:40 👁️ 阅读次数 📝 编程学习
Play Ebean:Play Framework 的 ORM 集成模块

文章目录

  • Play Ebean:Play Framework 的 ORM 集成模块
    • 1、 这玩意儿是干嘛的
    • 2、 版本对应关系
    • 3、 怎么用
    • 4、 适合什么场景
    • 5、 维护状态

Play Ebean:Play Framework 的 ORM 集成模块

play-ebean 在 GitHub 上拿到 108 Star 了。

playframework 团队维护的这个模块,专门干一件事——把 Ebean ORM 接到 Play Framework 里。Scala 项目用 Play 做后端,需要数据库访问层,又不想写一堆 MyBatis 风格的 XML,这个模块就是为此准备的。

1、 这玩意儿是干嘛的

给 Play Framework 加上 Ebean ORM 的支持。Ebean 是基于 JPA 注解的 Java ORM,配置简单,查询语义接近 SQL,不像 Hibernate 那么重。play-ebean 把它接到 Play 的插件体系里,配置文件加上一行就能跑。

API 风格上,Ebean 走的是 finder 路线,Model 类继承基类后直接find.byId(1L)就拿到对象,复杂查询用Ebean.find(class).where().eq("name", value).findList(),比手写 SQL 简洁,又不像 Criteria API 那样啰嗦。

2、 版本对应关系

模块版本、Play 版本、Ebean 版本三者绑死。挑错了直接起不来。

Plugin versionPlay versionEbean version
8.5.03.0.9+17.1.0
8.4.03.0.9+15.11.0
7.5.02.9.9+17.1.0
6.2.02.8.18+12.16.1
5.0.22.7.011.39.x
4.1.42.6.x11.32.x

Play 3.x 走 8.x 系列,Play 2.9 走 7.x,Play 2.8 走 6.x。低版本 Play 升级前先看这张表。

3、 怎么用

工程里加依赖:

libraryDependencies+="org.playframework"%%"play-ebean"%"8.5.0"

build.sbt 启用插件:

lazyvalroot=(project in file(".")).enablePlugins(PlayJava,PlayEbean)

conf/application.conf 配数据源和模型扫描路径:

db.default.driver = org.h2.Driver db.default.url = "jdbc:h2:mem:play" ebean.default = ["models.*"]

实体类照 JPA 风格写:

@Entity@Table(name="users")publicclassUserextendsModel{@IdpublicLongid;@ColumnpublicStringname;publicstaticFinder<Long,User>find=newFinder<>(User.class);publicstaticUserbyName(Stringname){returnfind.query().where().eq("name",name).findOne();}}

API 流转过程里,Play 注入 EbeanServer,Model 直接调用静态 finder,控制器拿到 user 后返回 JSON,链路一气呵成。

4、 适合什么场景

  • 想用 Play 做 Java/Scala 后端,又不想碰 Hibernate 全套配置的项目
  • 已经在用 Ebean,需要接到 Play 体系的工程
  • 团队偏好 JPA 注解风格但想用更轻量的 ORM
  • 老的 Play 2.7、2.8 项目升级,需要按版本号挑选匹配分支

模块本身代码不多,主要做的是配置桥接和生命周期管理,真正的活是 Ebean 在干。

5、 维护状态

playframework 组织还在持续更新,最近版本对齐到 Play 3.0.9 和 Ebean 17.1.0。仓库体积不大,issue 响应慢一些但不废弃。生产环境建议看准对应版本号再上,候选版(RC)不要碰。

官方还推荐一个 payintech 的 fork,在原版基础上加了一些企业级特性,需要审计、多租户、复杂权限场景可以一并看看。

建议看准对应版本号再上,候选版(RC)不要碰。

官方还推荐一个 payintech 的 fork,在原版基础上加了一些企业级特性,需要审计、多租户、复杂权限场景可以一并看看。