文章目录Play EbeanPlay Framework 的 ORM 集成模块1、 这玩意儿是干嘛的2、 版本对应关系3、 怎么用4、 适合什么场景5、 维护状态Play EbeanPlay 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 version8.5.03.0.917.1.08.4.03.0.915.11.07.5.02.9.917.1.06.2.02.8.1812.16.15.0.22.7.011.39.x4.1.42.6.x11.32.xPlay 3.x 走 8.x 系列Play 2.9 走 7.xPlay 2.8 走 6.x。低版本 Play 升级前先看这张表。3、 怎么用工程里加依赖libraryDependenciesorg.playframework%%play-ebean%8.5.0build.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 风格写EntityTable(nameusers)publicclassUserextendsModel{IdpublicLongid;ColumnpublicStringname;publicstaticFinderLong,UserfindnewFinder(User.class);publicstaticUserbyName(Stringname){returnfind.query().where().eq(name,name).findOne();}}API 流转过程里Play 注入 EbeanServerModel 直接调用静态 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在原版基础上加了一些企业级特性需要审计、多租户、复杂权限场景可以一并看看。