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