您的位置:首页 > 数据库

使用hibernate的@SQLDelete和@Where注解实现逻辑删除

2017-11-29 23:20 543 查看
在项目开发中,数据库的删除一般都是逻辑删除,可以很好的保持数据的完整性,但是很多时候我们写SQL的是时候查询的时候不得不加上SQL后面加上where delete_flag=xxx,这样,导致这样我们工作量繁琐,特别是hibernate 中通过ID查询的时候,很是恼火。

不过好在hibernate中有@SQLDelete和@Where这两个注解帮我们解决了这个难题。

在entity中使用这两个注解,如图所示


在sql中写上删除的时候的SQL语句,到调用delete方法的时候,hibernate将自动执行该语句将实现软删除。

下面将展示效果:

首先查询一条数据库中存在的数据。


然后查看结果,发现存在这条数据,并且没有被删除的。


然后查看数据库的操作SQL,发现在SQL的最后加上了@Where注解的内容


我们将数据删除看看数据还存不存在,操作代码如下



操作后查询出的数据为空,表明已经删除成功。



再看看hibernate的删除SQL


hibernate删除只是操作了@SQLDelete中的SQL语句。

至此,通过@SQLDelete和@Where搭配完成了数据库的逻辑删除。

当然,对于一些关联查询的问题,只要查询的对象没有删除,那关联的对象就算删除了也可以查询出来,当然,这里指的删除是逻辑删除。

通过查看hibernate的源码可以看到还有@SQLDeleteAll、@SQLInsert和@SQLUpdate这里就一一介绍了,功能都差不多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐