CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Java 生态与工具链/课时/EBean ORM
RawBlame
课时目录12 节

Java 生态与工具链

  1. 01Java 生态地图
  2. 02数据库访问
  3. 03Hibernate 深入
  4. 04EBean ORM
  5. 05日志框架
  6. 06Javadoc 与文档
  7. 07Play Framework
  8. 08Javalin 微框架
  9. 09REST Assured
  10. 10JMeter 性能测试
  11. 11Java 加密基础
  12. 12综合练习

EBean ORM

ebean;轻量 ORM 选型。

25 分钟

EBean ORM

Hibernate 功能全、生态大;EBean 走轻量路线——注解接近 JPA,运行时无字节码增强代理,查询 API 偏 Active Record 风格。本课帮你在 orm-essentials 的 JPA 基础上多一个选型,并与 jev-hibernate 对照,再决定是否上 spring-boot-essentials 的全家桶。

学习目标

  • 用 EBean 定义实体并完成 CRUD 与简单关联查询
  • 对比 EBean 与 Hibernate 在启动速度、API 风格、Spring 集成上的差异
  • 判断「小服务 / 工具项目」何时选 EBean 而非 Spring Data JPA

实体与 Database 入口

@Entity
@Table(name = "books")
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    long id;

    String isbn;
    String title;

    @ManyToOne
    Author author;
}

// 启动时注册实体包
Database database = DatabaseFactory.create(new DatabaseConfig()
    .setDataSource(hikariDataSource)
    .addClass(Book.class)
    .addClass(Author.class));

EBean 也可通过 ebean-spring-txn 与 Spring 事务对齐,但社区体量小于 Hibernate。

CRUD 与 Query API

public class BookService {
    private final Database db;

    public BookService(Database db) {
        this.db = db;
    }

    public Book findByIsbn(String isbn) {
        return db.find(Book.class)
            .where()
            .eq("isbn", isbn)
            .findOne();
    }

    public void save(Book book) {
        db.save(book); // insert 或 update 由 id 是否为零推断
    }

    public List<Book> findByAuthorCountry(String country) {
        return db.find(Book.class)
            .fetch("author")
            .where()
            .eq("author.country", country)
            .findList();
    }
}

fetch("author") 类似 Hibernate 的 join fetch,一次拉齐关联,避免 N+1。

与 Hibernate 选型对照

维度Hibernate / JPAEBean
标准Jakarta Persistence自有 API,JPA 注解兼容子集
Spring 集成一等公民需额外 starter,文档较少
学习曲线概念多(Session、Cache)上手快,API 直观
适用中大型业务、Spring 生态CLI 工具、微服务原型、非 Spring 项目

若团队已标准化 Spring Boot + JPA,生产环境仍以 Hibernate 为主;EBean 适合 快速原型 或 脱离 Spring 的独立 JVM 程序。

练习

  • 用 EBean + H2 实现 Book / Author 一对多,写三个 CRUD 测试
  • 对比同一查询在 Hibernate 与 EBean 下的 SQL 日志条数
  • 列出你的项目若迁移到 EBean 需要改动的三层(配置、DAO、事务)

小结

EBean 是「够用且轻」的 ORM 选项,不是 Hibernate 的完全替代。 理解差异后,选型比追新框架更重要。下一课进入日志门面 SLF4J。

加载本节练习…
← 上一课Hibernate 深入下一课 →日志框架