Hibernate 6.3 CR1 (及 6.2.7)

发布者:    |       Hibernate ORM 发布

Hibernate ORM 6.3.0.CR1 已发布。[查看发布详情] 同时,6.2.7 也已发布。[查看发布详情]

新文档

6.3 版本提供了 2 个新的文档指南

查询方法

Hibernate 现在可以在其 JPA 静态元模型生成器中生成命名查询的 DAO 风格方法。

以下是一个实体示例

@NamedQuery(name = "#findByTitleAndType",
        query = "select book from Book book where book.title like :titlen and book.type = :type")
@Entity
public class Book { ... }

经过元模型生成器处理后,我们将在静态元模型中生成以下内容

class Book_ {
    // as normal
    ...

    public static final String QUERY_FIND_BY_TITLE_AND_TYPE = "#findByTitleAndType";

    public static List<Book> findByTitleAndType(@Nonnull EntityManager entityManager, String title, Type type) {
        return entityManager.createNamedQuery(QUERY_FIND_BY_TITLE_AND_TYPE)
                .setParameter("titlePattern", title)
                .setParameter("type", type)
                .getResultList();
    }
}

然后应用程序可以使用

List<Book> books =
        Book_.findByTitleAndType(entityManager, titlePattern, Type.BOOK);

这些查询方法有很多功能;请参阅Hibernate 6 指南以获取完整讨论。

查找方法

使用新的 @Find 注解,现在可以由生成器处理任意方法,以创建类似于查询方法的查找方法。

interface Dao {
    @Find
    Book findBookByIsbn(String isbn);
}

生成器将生成

class Dao_ {
        public static Book findBookByIsbn(@Nonnull EntityManager entityManager, String isbn) {
                return entityManager.unwrap(Session.class)
                                .byNaturalId(Book.class)
                                .using(Book_.isbn, isbn)
                                .load();
        }
}

同样,这些查找方法有很多功能;请参阅Hibernate 6 指南以获取完整讨论。

社区

有关更多信息,请参阅以下内容

访问网站以与我们联系。


返回顶部