我对使用jooq很陌生,我正在尝试实现Java程序员喜欢在DAO /存储库中执行的常规CRUD操作。我有以下代码用于按ID选择记录:
public class JooqRepository<ID, E extends BaseObject<ID>, T extends Table<R>, R extends Record> {
...
private final T table; // would be coming from constructor to concrete reference in the generated classes
...
protected Optional<E> findById(ID id) {
final TableField<R, ID> idField = (TableField<R, ID>) table.getIdentity().getField();
return dsl.fetchOptional(table, idField.eq(id)).map(toEntity()); // conversion method omitted here
}
...
}
我的问题是,首先该方法适用于所有类型的表/记录还是仅适用于使用身份/自动增量的表/记录?
如果我使用不具有此功能的DBMS(例如Oracle)怎么办?
如果表具有复合键怎么办?
最后:甚至建议以这种方式使用jooq还是我们应该为每个表显式设计专用查询?
答案 0 :(得分:1)
虽然可以将jOOQ用作Spring存储库实现,但您也可以直接使用jOOQ的DAO
support,其工作方式类似。主要区别在于jOOQ DAO是非操作辅助工具,不会将DDD用作建模范例,它们只是简化了每个表上最常见的CRUD操作。
您可以对生成的DAO进行子类化,以添加更多功能,并将其注入到诸如Spring的存储库之类的服务中。