使用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这里就一一介绍了,功能都差不多。
不过好在hibernate中有@SQLDelete和@Where这两个注解帮我们解决了这个难题。
在entity中使用这两个注解,如图所示
在sql中写上删除的时候的SQL语句,到调用delete方法的时候,hibernate将自动执行该语句将实现软删除。
下面将展示效果:
首先查询一条数据库中存在的数据。
然后查看结果,发现存在这条数据,并且没有被删除的。
然后查看数据库的操作SQL,发现在SQL的最后加上了@Where注解的内容
我们将数据删除看看数据还存不存在,操作代码如下
操作后查询出的数据为空,表明已经删除成功。
再看看hibernate的删除SQL
hibernate删除只是操作了@SQLDelete中的SQL语句。
至此,通过@SQLDelete和@Where搭配完成了数据库的逻辑删除。
当然,对于一些关联查询的问题,只要查询的对象没有删除,那关联的对象就算删除了也可以查询出来,当然,这里指的删除是逻辑删除。
通过查看hibernate的源码可以看到还有@SQLDeleteAll、@SQLInsert和@SQLUpdate这里就一一介绍了,功能都差不多。
相关文章推荐
- SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete) 一条语句实现两表同步(添加、删除、修改)
- Hibernate3.1.3使用自定义实体类实现对SQL查询语句的映射
- hibernate中使用sql语句删除
- 【Java EE 学习 50】【Spring学习第二天】【使用注解的DI实现】【spring中的继承】【动态代理伪hibernate实现】
- Hibernate使用sql语句实现多表关联查询
- Hibernate使用sql语句实现多表关联查询
- Lind.DDD.ILogicDeleteBehavor~逻辑删除的实现
- SQL Server使用触发器删除重复的列(Delete duplicate rows using cursor in SQL Server)
- hibernate使用注解实现多对多关联映射
- 谈论Hibernate级联删除——JPA根据Hibernate实现许多级联删除CascadeType.DELETE_ORPHAN
- Mybatis 使用动态语句实现批量删除(delete结合foreach)
- SQL 使用 DELETE 语句删除行
- Hibernate使用原生的动态sql实现带条件的查询分页功能
- sql-删除delete涉及到三个表,这个时候就要使用from,比如这样
- 使用Hibernate SQLquery实现动态表
- Hibernate级联删除——JPA下的Hibernate实现一对多级联删除CascadeType.DELETE_ORPHAN基于注解方式
- SS3.2_Hibernate_Annotation 使用Annotation注解实现的Hibernate范例
- 使用注解和spring的JdbcTemplate进行封装实现类似Hibernate的功能
- BasicDAO与SpringDAO区别,使用Hibernate验证,注解方式实现主键自增,注解方式注入外键(一对多)
- hibernate使用@where实现条件过滤功能