首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Hibernate envers查找最近删除的实体

Hibernate Envers是一个用于实体版本控制的开源框架。它可以帮助开发人员跟踪和管理实体对象的历史变化,包括创建、更新和删除操作。通过使用Hibernate Envers,开发人员可以轻松地查找最近删除的实体。

Hibernate Envers的主要特点包括:

  1. 版本控制:Hibernate Envers可以自动创建实体对象的版本历史记录。每次对实体对象进行更改时,都会生成一个新的版本,并将其存储在历史表中。
  2. 查询历史记录:开发人员可以使用Hibernate Envers提供的API来查询实体对象的历史记录。这包括查询特定版本的实体对象,查询特定时间段内的实体对象,以及查询最近删除的实体对象。
  3. 审计信息:Hibernate Envers还可以记录每个版本的实体对象的审计信息,例如谁进行了更改、何时进行了更改以及更改的具体内容。

使用Hibernate Envers查找最近删除的实体的步骤如下:

  1. 配置Envers:在Hibernate配置文件中,启用Envers并为需要进行版本控制的实体对象添加@Audited注解。
  2. 查询最近删除的实体:使用Envers提供的API,通过指定查询条件来获取最近删除的实体对象。可以使用AuditReader接口的createQuery()方法来创建查询,并使用add()方法添加查询条件。

下面是一个示例代码片段,演示如何使用Hibernate Envers查找最近删除的实体:

代码语言:java
复制
// 创建AuditReader对象
AuditReader auditReader = AuditReaderFactory.get(entityManager);

// 创建查询
AuditQuery query = auditReader.createQuery()
    .forDeletedEntities()
    .add(AuditEntity.revisionType().eq(RevisionType.DEL));

// 添加查询条件
query.add(AuditEntity.property("propertyName").eq(propertyValue));

// 执行查询
List<Object[]> results = query.getResultList();

// 处理查询结果
for (Object[] result : results) {
    Object deletedEntity = result[0];
    Object revisionEntity = result[1];
    // 处理删除的实体对象和版本信息
}

在腾讯云的生态系统中,没有直接与Hibernate Envers相对应的产品或服务。然而,腾讯云提供了一系列与云计算和数据库相关的产品,如云数据库 TencentDB、云服务器 CVM、云原生容器服务 TKE、云存储 COS 等,可以与Hibernate Envers结合使用,以构建完整的应用解决方案。

更多关于腾讯云产品的信息,请访问腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring Boot整合Ehcache实现缓存功能

当对象自从最近一次被访问后, 如果处于空闲状态时间超过了timeToIdleSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清空。...如果该属性值为0,则表示对象可以无限期地处于空闲状态 --> 3、实体类 这里新建一个实体类,用来创造对象存入数据库和缓存。...", storeDataAtDelete); hibernateProperties.setProperty("org.hibernate.envers.global_with_modified_flag...,即可缓存方法,如查找方法:先从缓存中读取,如果没有再调 用方法获取数据,然后把数据添加到缓存中,适用于查找; 3)@CachePut:主要针对方法配置,能够根据方法请求参数对其结果进行缓存,和...id=1就可以查询到数据,这时候观察控制台或者日志就可以发现,查询时候并没有去访问数据库,而是直接在缓存中查询了,至于更新和删除,道理是一样

4.3K10
  • Hibernate 5 模块包(modulesartifacts)

    Hibernate 功能被拆分成一系列模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。...模块名称 说明 hibernate-core 这个是 Hibernate 主要(main (core))模块。定义了 ORM 特性和 API 以及一系列整合 SPIs。...hibernate-envers Hibernate 历史实体版本特性 hibernate-spatial Hibernate Spatial/GIS 数据类型支持 hibernate-osgi...整合 Proxool 连接池库到 Hibernate hibernate-jcache 整合 JCache 缓存特性到 Hibernate,使任何与其兼容缓存实现能够成为 Hibernate 二级缓存提供者...hibernate-ehcache 整合 Ehcache 缓存库到 Hibernate 中成为 Hibernate 二级缓存提供者 https://www.cwiki.us/display/HIBERNATE

    46620

    Spring Boot+JPA+Mysql完成数据库整合操作

    Specification:是Spring Data JPA提供一个查询规范, 要做复杂查询,类似hibernate QBC查询 Spring Data JPA使用十分简单,只需要我们编写...开发者只是多写了 "Crud" 四个字母,即刻便为域对象提供了开箱即用十个增删改查方法。 但是,使用 CrudRepository 也有副作用,它可能暴露了你不希望暴露给业务层方法。...比如某些接口你只希望提供增加操作而不希望提供删除方法。...Pageable 或 Sort 类型参数,用于指定分页或排序信息即可,这比直接使用 PagingAndSortingRepository 提供了更大灵活性。...", "true"); hibernateProperties.setProperty("org.hibernate.envers.global_with_modified_flag",

    2.4K20

    hibernate5新特性展示

    想要连接更多关于新引导API配置指南可到hibernate 官网User Guide部分 在一定限制上,Configuration配置方法仍然可以使用,不过它一些方法已被删除。...从hibernate5.0开始Hibernate Spatial已经是Hibernate项目的一部分,来使其跟上发展主流,如果你项目需要使用到GIS数据,我们高度推荐你尝试使用hibernate-spatial...支持Java 8 虽然并非完全支持,更准确来说,hibernate5.0增加了对Java 8 Date 和Time API支持,以使我们能够更轻松地完成我们实体映射类配置属性到数据库支持.这种支持通过使用专用利器...我们使用表或列没有明确指定一个使用名称 2. org.hibernate.boot.model.naming.PhysicalNamingStrategy:用于转换“逻辑名称”(隐式或显式)表或列成一个物理名称...整合了hibernate-envers 5. 集合数值,映射键值 6. 现在能够有效处理null值 7.

    1.4K40

    springdata入门(纯赶货)

    建议使用@Query,可读性较高接口清单 JpaRepository接口提供方法与说明方法描述List\ findAll();查找所有实体。...List\ findAll(Sort var1);排序、查找所有实体。List\ findAllById(Iterable var1);返回制定一组ID实体。...long count();返回实体数量void deleteById(ID var1);根据ID删除数据。void delete(T var1);删除给定实体。...extends T> var1);删除实体。void deleteAll();删除所有实体。开发建议这里列出是常用方法CrudRepository 中findAll() 方法要慎用。...语句(HQL)1 查询时使用实体字段,而不是数据库中字段2 变量使用:变量名形式,在方法参数中还有使用@Param("xx")3 更新操作需要加上 @Modifying--接口代码--//查找用户

    60020

    hibernate二级缓存作用、配置

    ● 当Hibernate根据ID访问数据对象时候,首先会从Session一级缓存中查找,如果查不到并且配置了二级缓存,那么会从二级缓存中查找,如果还查不到,就会查询数据库,把结果按照ID放入到缓存中。...:缓存算法,有LRU(默认)、LFU、LFU 关于缓存算法,常见有三种: ● LRU:(Least Rencently Used)新来对象替换掉使用时间算最近很少使用对象 ● LFU:(Least...> 和实体并发策略有相同含义; 但集合缓存只缓存集合元素标识符,在二级缓存中只存放相应实体标识符,然后再通过标识符去二级缓存查找相应实体最后组合为集合返回 Collection缓存和前面查询缓存...使用二级缓存前置条件 对于那些查询非常多但插入、删除、更新非常少应用程序来说,查询缓存可提升性能。但写入多查询少没有用,总失效。...这个限制相当棘手,有时候hibernate做批量更新、删除很慢,但是你却不能自己写jdbc来优化。

    96920

    实战:应用对持久数据访问| 从开发角度看应用架构9

    二、Java对持久数据访问方式 前文已经提到,Java应用对应用数据访问,最终通过ORM方式实现。 ? 而ORM实现,通过JPA标准,底层使用Hibernate等技术。...Removed State:持久实体可以通过多种方式从数据库表中删除。 当提交事务或调用实体管理器remove方法时,可以从数据库表中删除一个托管实体实例。 一个实体然后处于移除状态。...javax.persistence.EntityManager API用于创建新实体实例,通过主键查找实体实例,通过实体实例进行查询以及删除现有的实体实例。...要删除分离实体,请调用一个返回受管实例find()方法,然后调用remove()方法。...JPA提供程序在启动时使用JNDI查找服务按名称查找数据源。 4可以在属性元素中设置其他标准或特定于供应商属性。 hibernate.Dialect属性指定使用哪个数据库。

    1.6K30

    Spring Boot第八章-Spring Data JPA

    前言: 最近比较忙,拖了好久才开始写springboot相关博客,springboot实战那本书已经练习完毕,感觉挺有意思,从第八章开始才是后端最关心部分,经常用到。...Hibernate是数据访问解决技术绝对霸主,使用O/R映射(Object-Relational Mapping) 技术实现数据访问,O/R映射即将领域模型类和数据库表进行映射,通过程序操作对象而实现表数据操作能力...JPA主要实现由Hibernate、EclipseLink和OpenJPA等,这也意味着我们只要使用JPA来开发,无论哪一个开发方式都是一样。...根据实体类维护数据表结构功能 #create:启动时删除上一次生成表,并根据实体类生成表,表中数据会被清空 #create-drop:启动时根据实体类生成表,sessionFactory关闭时表会被删除...,可以直接保存 * 保存单个,多个,根据id查找,id列表查找查找所有,判断是否存在,计算总数,根据id删除删除对象,删除一堆对象,删除所有等等, * 自带很多实现,不需要我们单独写了

    3.3K20

    10 个影响程序性能Hibernate 错误,学会让你少走弯路

    这迫使Hibernate对所有被管理实体执行脏检查,并为所有未决插入、更新或删除操作创建和执行SQL语句。这会减慢应用程序,因为它阻止了Hibernate使用一些内部优化。...错误9:逐个更新或删除巨大实体列表 在你看着你Java代码时,感觉逐个地更新或删除实体也可以接受。这就是我们对待对象方式,对吧?...不幸是,用JPA和Hibernate操作起来则没有那么容易。每个实体都有自己生命周期,而你如果要更新或删除多个实体的话,则首先需要从数据库加载它们。...幸运是,你可以使用JPQL、原生SQL或Criteria查询对JPA和Hibernate执行相同操作。 但是它有一些你应该知道副作用。在数据库中执行更新或删除操作时,将不使用实体。...正如我在最近测试中显示那样,即使你读取了相同数据库列,DTO projections也比实体快得多。 在SELECT子句中使用构造函数表达式而不是实体只是一个小小改变。

    2K50

    Hibernate那点事儿】—— Hibernate知识总结

    总结知识点: 1 关于hibernate映射实体类标识符访问权限   2 关于对象描述标识符OID及其生成策略   3 Session缓存——清理缓存   4 Session中状态变更...这种方式生成主键一般是由hibernate完成,所以我们在编写实体对象时候,idget和set方法权限应该注意: class XXX{ private long id; public long...由于hibernate在访问实体模型时,是不考虑权限,因此这样就避免了用户指定主键。   另外一个知识点就是,如果不通过property指定一个列,而使用field。...删除对象:OID不为null、从Session中删除、有相关记录、已经计划从数据库中删除、清理缓存就会执行删除、不能再使用。...merge()   对象复制,它首先获取到OID,然后去session中查找是否存在这样对象,如果存在直接修改或者使用;如果不存在,就复制这个对象属性。

    1K80

    Spring Boot 正确中使用JPA实战

    JPA通过JDK 5.0注解描述对象-关系表映射关系,并将运行期实体对象持久化到数据库中。...简单方便 JPA主要目标之一就是提供更加简单编程模型:在JPA框架下创建实体和创建 Java 类一样简单,没有任何约束和限制,只需要使用 javax.persistence.Entity 进行注释...查询能力 JPA查询语言是面向对象而非面向数据库,它以面向对象自然语法构造查询语句,可以看成是Hibernate HQL等价物。...JPA定义了独特JPQL(Java Persistence Query Language),JPQL是EJB QL一种扩展,它是针对实体一种查询语言,操作对象是实体,而不是关系数据库表,而且能够支持批量更新和修改...高级特性 JPA 中能够支持面向对象高级特性,如类之间继承、多态和类之间复杂关系,这样支持能够让开发者最大限度使用面向对象模型设计企业应用,而不需要自行处理这些特性在关系数据库持久化。

    1.5K20

    Spring Data JPA使用及开启二级缓存

    Hibernate 是一个广泛使用 Java ORM(对象关系映射)框架,它提供了对关系型数据库映射和操作功能,使开发者能够以面向对象方式来处理数据库操作,而不用直接编写 SQL 语句。...create 表示每次启动应用时都会删除现有表并重新创建。 update 表示每次启动应用时会根据实体定义,更新已存在表结构(增加或修改列),但不会删除数据。如果表不存在也会创建。...cascade 属性表示级联操作,这里使用 CascadeType.ALL 表示在删除 User 实体时同时删除其关联所有 Address 实体。...(Iterable ids) 根据主键批量获取实体对象 long count() 获取实体对象数量 void deleteById(ID id) 根据主键删除实体对象 void delete(T entity...使用二级缓存 在使用 Spring Data JPA 进行数据访问时,可以使用二级缓存来提高程序性能。 注意 这里使用不是基于Hibernate Ehcache实现。

    71110

    【SSH测试整合Demo】企业人事管理系统

    功能分类: 【管理员模块】 注册/登陆 【员工模块】 1) 添加一个员工, 指定添加部门 2) 对指定员工信息修改 3) 删除选择员工 4) 列表展示 数据库设计 管理员表: t_admin 员工表...【在添加员工、修改员工时需要用】-->getAll() * 2.通过id查找所在部门信息--->find() */ public List getAllDept...1) 添加一个员工, 指定添加部门 2) 对指定员工信息修改 3) 删除选择员工 4) 列表展示 列表展示 UserAction package zhongfucheng.action; import...这里写图片描述 总结 本篇主要使用SSH框架来开发一个比较简易CRUD项目。让我们熟悉SSH框架开发流程。...设计实体 编写每个实体映射文件 把映射文件加载到Hibernate中管理起来 使用BaseDao来管理全部Dao,使得每个Dao都有Curd方法。

    2.6K131
    领券