没有选择的 Hibernate 更新

Ale*_*ioG 5 java sql hibernate sql-update

我有一个关于休眠操作的问题:更新。

这里有一些代码:

Campaign campaign = campaignDAO.get(id);
campaign.setStatus(true);
campaignDAO.update(campaign);
Run Code Online (Sandbox Code Playgroud)

如果我只有活动对象的所有数据,是否有任何方法可以在不先执行 select (campaignDAO.get(id)) 的情况下执行更新?

谢谢,

阿莱西奥

And*_*san 6

HQL一定会帮助你。

为了保持关注点分离,您可以在 DAO 对象中添加更专门的方法:

public void updateStatusForId(long id, boolean status){
//provided you obtain a reference to your session object
session.createQuery("UPDATE Campaign SET status = " + status + " WHERE id = :id").setParameter("id", id).executeUpdate();
//flush your session
}
Run Code Online (Sandbox Code Playgroud)

然后您可以简单地从业务方法中调用此方法。show_sql您可以通过将hibernate 属性设置为 来检查应用程序日志中生成的 SQL 语句true

  • 还有其他方法吗?我认为使用 Hibernate 的目的是因为在代码中编写 SQL 是一个非常糟糕的方法。如果我们需要写HQL,那似乎没什么意义。另外,在dao中涉及逻辑也是一个不好的做法,对吧?谢谢。 (3认同)