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 version | Play version | Ebean version |
|---|---|---|
| 8.5.0 | 3.0.9+ | 17.1.0 |
| 8.4.0 | 3.0.9+ | 15.11.0 |
| 7.5.0 | 2.9.9+ | 17.1.0 |
| 6.2.0 | 2.8.18+ | 12.16.1 |
| 5.0.2 | 2.7.0 | 11.39.x |
| 4.1.4 | 2.6.x | 11.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,在原版基础上加了一些企业级特性,需要审计、多租户、复杂权限场景可以一并看看。
