spring-data-ebean v1.3.0 发布,超强大的 ORM 框架

yuanxuegui
 yuanxuegui
发布于 2018年03月19日
收藏 29

超简单、超强大的 ORM 框架,OQL、SQL、ES 多查询引擎,超越 JPA、Hibernate、Mybatis。

支持的一些特性

  • 对标准 Entity 支持完整 CRUD 操作,包括常用的查询操作

  • 支持通过接口中的注解生成对应的查询(orm查询、sql查询、命名orm查询、命名sql查询、dto查询)

  • 支持通过接口中的方法名生成对应的查询

  • 支持 QueryChannel 服务

  • 提供基础属性的实体基类和面向领域编程基类

  • 原生支持使用注解实现审计(如创建人、创建时间、修改人、最后修改时间)

  • 支持自定义编写基于 Ebean 的查询,方便而不失灵活性

  • 方便的与 Spring 集成

  • 支持 MySQL、Oracle、SQL Server、H2、PostgreSQL 等数据库

为什么选择 Ebean ORM

基于 JPA 注解的轻量级 ORM 实现,支持 Mybatis 不支持的实体关联,但相比 Hibernate/JPA 具有 Mybatis 的查询灵活性,支持查询 partial objects 。

对于实现领域模型仓储接口的聚合根实体保存(保存聚合根实体同时保存聚合根上的关联实体、值对象)和 partial objects 等技术要求,Ebean 都非常适用。

我选择关系型数据持久化框架的基本原则:

  1. 拥抱 SQL 而非隐藏

  2. 可以实现面向领域编程

  3. 可以利用 JPA 注解,但不能是 JPA 的完整实现(这点我偏向于 Ebean )

  4. 足够成熟以应对企业级应用( Ebean 和 Hibernate 同时期作品,资格老,而且持续更新以满足更高需求)

框架优缺点比较

Hibernate/JPA

反正比 Hibernate/JPA 好

MyBatis

优点

  • 在 XML 映射文件里写 SQL 语句很爽

缺点

  • 实现一个 DAO、仓储要写很多文件(DAO/Repository、XXXMapper、XXXMapper.xml),方法多了比较繁琐

  • 无法在一个方法里做批处理,无法级联加载

  • 即时是简单的 CRUD,都显得繁琐,导致存在各种弥补 mybatis 这一缺陷的第三方封装框架

  • 无法面向对象,无法实现 DDD

EBean

  • 优点

  • 所有场景都实现非常完美,代码可读性高

  • 实现批处理超级简单

  • ORM 查询、sql 查询、DTO 查询都非常简单

  • 缺点

  • DTO 查询功能较新,有待增加 XML mapping 对 DTO 的支持

更新内容:

  • 升级对 spring-data-commons to 2.0.5.RELEASE 和 spring boot 2.0.0 的支持

  • 配置文件使用 application.properties 或 application.yml

  • 增加对 DTO 查询的支持

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:spring-data-ebean v1.3.0 发布,超强大的 ORM 框架
加载中

精彩评论

yong9981
yong9981
找找缺点,仅供参考, 因为我也是持久层工具作者,所以看其它人全是缺点,估计人家看我也是一样:
1. 用Java语法来写SQL, 这貌似是一种反模式,重新发明轮子,逻辑一复杂就不行了,可读性差、可移植性差。
2. eBean相比与Hibernate还是很复杂,数一下它有多少个注解就知道了,相当于没有容器的Hibernate。
3. 古怪的enhence事务方式。
4. 不知道有没有模板功能支持,模板是否可切换
5. DDL功能应当独立出来。
另外这个插件本身,spring+Spring data, 绑定在Spring环境上,依赖太庞大了,不轻量。
九州暮云
九州暮云
超牛逼的一个东西,没有之一

最新评论(24

xuezhongyu01
xuezhongyu01

引用来自“欧阳葵”的评论

用springboot的目的就是减少xml配置,所以要我再回到用xml配置方式,我是不可能了,
mybatis和springboot整合可以不用xml文件
xuezhongyu01
xuezhongyu01

引用来自“吕兵阳”的评论

不如jooq

引用来自“yuanxuegui”的评论

@吕兵阳 Jooq以java代码写查询,相对string和xml方式写查询语句片段,是一种技术上的进步。ebean的querybean也有类似的功能,按照表和字段生成一堆定义类,直接用这些类写出可读,易纠错的语句。

引用来自“吕兵阳”的评论

不单单这些,还可以支持原生sql还支持代码自动生成,还可以支持jpa注解,强大的DSL对象。能干你任何想干的事,最主要的是天生和boot完美结合。
jooq写复杂的sql想死,一个是对alias的字段名支持不好,一个是想根据条件动态添加查询条件不如mybatis方便,这是我工作中遇到的很不方便的两点~
九州暮云
九州暮云
超牛逼的一个东西,没有之一
yuanxuegui
yuanxuegui

引用来自“吕兵阳”的评论

不如jooq

引用来自“yuanxuegui”的评论

@吕兵阳 Jooq以java代码写查询,相对string和xml方式写查询语句片段,是一种技术上的进步。ebean的querybean也有类似的功能,按照表和字段生成一堆定义类,直接用这些类写出可读,易纠错的语句。

引用来自“吕兵阳”的评论

不单单这些,还可以支持原生sql还支持代码自动生成,还可以支持jpa注解,强大的DSL对象。能干你任何想干的事,最主要的是天生和boot完美结合。
@吕兵阳 这些ebean都有,除了与spring boot的结合不是官方出的
吕兵阳
吕兵阳

引用来自“吕兵阳”的评论

不如jooq

引用来自“yuanxuegui”的评论

@吕兵阳 Jooq以java代码写查询,相对string和xml方式写查询语句片段,是一种技术上的进步。ebean的querybean也有类似的功能,按照表和字段生成一堆定义类,直接用这些类写出可读,易纠错的语句。
不单单这些,还可以支持原生sql还支持代码自动生成,还可以支持jpa注解,强大的DSL对象。能干你任何想干的事,最主要的是天生和boot完美结合。
资本
jooq就很不错了,轻量级,功能也很全!用起来很舒服
yuanxuegui
yuanxuegui

引用来自“yong9981”的评论

找找缺点,仅供参考, 因为我也是持久层工具作者,所以看其它人全是缺点,估计人家看我也是一样:
1. 用Java语法来写SQL, 这貌似是一种反模式,重新发明轮子,逻辑一复杂就不行了,可读性差、可移植性差。
2. eBean相比与Hibernate还是很复杂,数一下它有多少个注解就知道了,相当于没有容器的Hibernate。
3. 古怪的enhence事务方式。
4. 不知道有没有模板功能支持,模板是否可切换
5. DDL功能应当独立出来。
另外这个插件本身,spring+Spring data, 绑定在Spring环境上,依赖太庞大了,不轻量。
@yong9981 1,用java代码替代string和xml方式是一种技术上的进步,提升编写和纠错体验,问题是需要产生一堆表和字段定义类,2,相对于hibernate,重点是删去了有状态,难用的会话管理和实体生命周期管理,3,事务管理技术特别但收获批处理功能,4,有模板但目前不可换,5,ddl即将独立
yuanxuegui
yuanxuegui

引用来自“吕兵阳”的评论

不如jooq
@吕兵阳 Jooq以java代码写查询,相对string和xml方式写查询语句片段,是一种技术上的进步。ebean的querybean也有类似的功能,按照表和字段生成一堆定义类,直接用这些类写出可读,易纠错的语句。
yong9981
yong9981
找找缺点,仅供参考, 因为我也是持久层工具作者,所以看其它人全是缺点,估计人家看我也是一样:
1. 用Java语法来写SQL, 这貌似是一种反模式,重新发明轮子,逻辑一复杂就不行了,可读性差、可移植性差。
2. eBean相比与Hibernate还是很复杂,数一下它有多少个注解就知道了,相当于没有容器的Hibernate。
3. 古怪的enhence事务方式。
4. 不知道有没有模板功能支持,模板是否可切换
5. DDL功能应当独立出来。
另外这个插件本身,spring+Spring data, 绑定在Spring环境上,依赖太庞大了,不轻量。
吕兵阳
吕兵阳
不如jooq
返回顶部
顶部