3

我有一个项目,在这个项目开始的时候我们选择了Hibernate而不是JDBC进行持久化,但是我们发现Hibernate不能适用于这个应用中的所有情况,所以在这些Hibernate不能应用的情况下我们必须使用JDBC进行持久化申请。最后,我们选择 jooq 而不是 JDBC。所以这个应用中有两种持久化技术,即Hibernate&Jooq。现在,我们要将 jooq 创建的 ResultSet 转换为 Hibernate Entity Beans。我搜索了有关 Hibernate 的资源,但没有找到任何东西。似乎 Hibernate 没有它的 API。

所以,我有几个问题!

  1. 如何获取 Hibernate 的当前上下文?
  2. 如何使用此上下文(在问题 1 中提到)将 ResultSet 的对象转换为 Hibernate Entity Bean?

谢谢大家。

4

2 回答 2

3

你看过 jOOQ 的Record.into()ResultQuery.fetchInto()方法吗?它们支持将 jOOQ 记录映射到自定义 POJO。您可以直接使用 jOOQ 生成这些 POJO,也可以自己定义它们。如果您的 POJO 上存在 JPA 注释,则将使用这些注释。否则,jOOQ 会根据方法命名约定将记录映射到您的 POJO。

一个例子:

@Entity
public class POJO {
  private int id;

  @Column(name = "ID")
  public void setId(int id) {
    this.id = id;
  }

  public int getId() {
    return id;
  }
}

// Fetch several of the above POJO's into a list
List<POJO> result = 
DSL.using(connection, dialect)
   .select(MY_TABLE.ID)
   .from(MY_TABLE)
   .fetchInto(POJO.class);

// Fetch single POJO's
POJO pojo = 
DSL.using(connection, dialect)
   .select(MY_TABLE.ID)
   .from(MY_TABLE)
   .where(MY_TABLE.ID.equal(1))
   .fetchOne()
   .into(POJO.class);

现在在上面的示例中,您将使用 jOOQ 来执行查询。由于您正在谈论将ResultSet对象转换为您的自定义 POJO,我猜您只是将 jOOQ 用作查询构建器。也许,在这种情况下,您仍然可以使用 jOOQ从 JDBC 中获取数据,ResultSet如下所示:

ResultSet rs = // [ your querying here ]
List<POJO> result = create.fetch(rs).into(POJO.class);
于 2012-03-17T19:50:22.927 回答
0

既然你决定使用JDBC,你必须编写 hibernate 为你做的事情。这意味着,您需要编写代码来读取ResultSet并填写 Bean。

喜欢,

MyBean mb = new MyBean();
mb.setValue1(resultSet.get...);

现在,忘记上面的,如果你是在一个项目的开始,我强烈建议考虑 Hibernate。在这里开始休眠

于 2012-03-16T09:32:56.623 回答