Java JOOQ与Hibernate行为
正如我们所知,Java JOOQ与Hibernate行为,java,sql,hibernate,jooq,Java,Sql,Hibernate,Jooq,正如我们所知,Hibernate有一个非常好的特性,当我们将任何对象传递给这个方法时,它知道数据将update或者新记录将添加到数据库中。这项功能在JOOQ中也可用吗?还是在我的代码中我必须处理这项功能 jOOQ也这样做。如果更改记录的主键,则它将使用插入,否则,它将使用更新 实际上,当您从数据库中读取记录时,调用store()将触发更新,正如您所期望的那样。如果您创建一个新记录,那么它将被INSERTed 在2.6版本中,克隆一条记录然后要求jOOQ更新它有点困难(因为克隆将在新实例中设置主键
Hibernate
有一个非常好的特性,当我们将任何对象传递给这个方法时,它知道数据将update
或者新记录将添加到数据库中。这项功能在JOOQ
中也可用吗?还是在我的代码中我必须处理这项功能 jOOQ也这样做。如果更改记录的主键,则它将使用插入
,否则,它将使用更新
实际上,当您从数据库中读取记录时,调用store()
将触发更新
,正如您所期望的那样。如果您创建一个新记录,那么它将被INSERT
ed
在2.6版本中,克隆一条记录然后要求jOOQ更新它有点困难(因为克隆将在新实例中设置主键,因此将其标记为“new”->insert)。jOOQ也会这样做。如果更改记录的主键,则它将使用
插入
,否则,它将使用更新
实际上,当您从数据库中读取记录时,调用store()
将触发更新
,正如您所期望的那样。如果您创建一个新记录,那么它将被INSERT
ed
在2.6中,克隆一条记录然后要求jOOQ更新它有点困难(因为克隆会在一个新实例中设置主键,从而将其标记为“new”->insert)。如果从数据库中读取一条记录并调用record.store(),您将具有与hibernate saveOrUpdate方法相同的行为,它可以完美地工作 但在大多数情况下,您不会从数据库中读取记录,而是会从控制器或视图中接收记录。例如,在这种情况下,方法record.store()不会更新,即使您设置了id,它也会始终插入 现在我正在实现我自己的saveOrUpdate,通过记录id进行检查
public int saveOrUpdate(Record record) {
if(record.getId() != null) {
return record.update();
}
return record.store();
}
如果您从数据库中读取一条记录并调用record.store(),您将拥有与hibernate saveOrUpdate方法相同的行为,它可以完美地工作 但在大多数情况下,您不会从数据库中读取记录,而是会从控制器或视图中接收记录。例如,在这种情况下,方法record.store()不会更新,即使您设置了id,它也会始终插入 现在我正在实现我自己的saveOrUpdate,通过记录id进行检查
public int saveOrUpdate(Record record) {
if(record.getId() != null) {
return record.update();
}
return record.store();
}
不,我的意思是
store()
方法与saveOrUpdate()
你所说的“触发更新()”到底是什么意思?我想触发更新()查询已经详细回答了这个问题。请再读一遍我的答案。@subodh:在我看来,亚伦的答案已经很清楚了。真的没有什么可补充的了store()
执行更新
或插入
,具体取决于主键信息在该记录中是否可用。我建议您阅读,并在堆栈溢出问题之外(或之前)自己尝试1-2件事。不,我的意思是store()
方法与saveOrUpdate()
您所说的“触发更新()”的确切含义是什么?我想触发更新()查询已经详细回答了这个问题。请再读一遍我的答案。@subodh:在我看来,亚伦的答案已经很清楚了。真的没有什么可补充的了store()
执行更新
或插入
,具体取决于主键信息在该记录中是否可用。我建议您阅读,并尝试1-2件事,除了(或之前)您的堆栈溢出问题。