如何将ResultSet的对象转换为Hibernate Entity Bean

时间:2012-03-16 08:01:30

标签: hibernate entity resultset jooq

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

所以,我有几个问题!

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

2 个答案:

答案 0 :(得分: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 fetch data from a JDBC ResultSet

ResultSet rs = // [ your querying here ]
List<POJO> result = create.fetch(rs).into(POJO.class);

答案 1 :(得分:0)

因为你决定使用JDBC,你必须编写hibernate为你做的代码。这意味着,您需要编写代码以从ResultSet读取并填写Bean。

像,

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

现在,忘掉上面的内容,如果您刚开始参与项目,我强烈建议您考虑使用Hibernate。开始休眠here