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

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/81564797 在项目开发中,数据库的删除一般都是逻辑删除,可以很好的保持数据的完整性,但是很多时候我们写SQL的是时候查询的时候不得不加上SQL后面加上where delete_flag=xxx,这样,导致这样我们工作量繁琐,特别是hibernate 中通过ID查询的时候,很是恼火。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/81564797

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

相关文章
|
1月前
|
网络安全
ssh(Spring+Spring mvc+hibernate)——DeptDaoImpl.java
ssh(Spring+Spring mvc+hibernate)——DeptDaoImpl.java
12 0
|
1月前
|
网络安全
ssh(Spring+Spring mvc+hibernate)——BaseDaoImpl.java
ssh(Spring+Spring mvc+hibernate)——BaseDaoImpl.java
12 0
|
1月前
|
Shell
sh(Spring+Spring mvc+hibernate)——IEmpDao.java
sh(Spring+Spring mvc+hibernate)——IEmpDao.java
11 0
|
1月前
|
Shell
sh(Spring+Spring mvc+hibernate)——IDeptDao.java
sh(Spring+Spring mvc+hibernate)——IDeptDao.java
13 0
|
30天前
|
Java 数据库连接
hibernate注解实体类(Dept.java)
hibernate注解实体类(Dept.java)
13 1
|
30天前
|
Java 数据库连接
Hibernate中使用Criteria查询及注解——(Dept.java)
Hibernate中使用Criteria查询及注解——(Dept.java)
14 1
|
4月前
|
XML Java 数据库连接
Spring Boot的数据访问之Spring Data JPA以及Hibernate的实战(超详细 附源码)
Spring Boot的数据访问之Spring Data JPA以及Hibernate的实战(超详细 附源码)
47 0
|
1月前
|
网络安全
ssh(Spring+Spring mvc+hibernate)——Dept.java
ssh(Spring+Spring mvc+hibernate)——Dept.java
12 0
|
30天前
|
Java 数据库连接
hibernate注解实体类(Emp.java)
hibernate注解实体类(Emp.java)
14 1
|
30天前
|
Java 数据库连接
hibernate注解的测试
hibernate注解的测试
11 1