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

在项目开发中,数据库的删除一般都是逻辑删除,可以很好的保持数据的完整性,但是很多时候我们写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这里就一一介绍了,功能都差不多。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值