Java大量事务对象缓存

标签 java caching

我正在寻找在内存中缓存大量简单事务性 pojo 结构的最佳解决方案。外部应用程序在 3-4 个表上的 oracle 数据库中发生事务。另一种应用程序是一种商业智能类型,它基于数据库中的事务评估更新的 pojos(映射到表)并应用各种业务规则。

Hibernate 解决方案依赖于同一台服务器上的事务;在我们的案例中,事务发生在其他地方,并且不确定是否可以查询缓存的对象。

问题:

  1. 是否有 oracle jdbc API 可以触发 java 端的更新事件?
  2. 哪种缓存解决方案将支持#1,
  3. 是否可以查询缓存的对象?

最佳答案

Oracle 数据库支持 Java 触发器,因此理论上您可以自己实现类似的东西,请参阅 this guide .理论上,您的 Java 触发器可以调用您正在使用的任何分布式缓存解决方案的客户端库,以更新或清除过时的条目。

Oracle 也有自己的缓存解决方案,称为 Coherence .它可能内置了这样的集成,或者至少值得一试。搜索“java 分布式缓存”以获得一些替代方案。

据我所知,Hibernate 不支持查询存储在其缓存中的对象。

但是,如果您单独缓存整个对象集合,那么有一些库将允许您对这些集合执行类似 SQL 的查询:

  • LambdaJ - 支持高级查询,但不是那么快
  • CQEngine - 支持典型查询,速度极快

顺便说一句,我是 CQEngine 的作者。我喜欢这两个图书馆。但是请原谅我对自己的偏见 :)

关于Java大量事务对象缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13406267/

相关文章:

caching - Grails为什么我的缓存失效了?

java - 分配给另一个变量的变量是否发生变化(原始变量发生变化)第二个变量是否发生变化?

java - Java 中的圆形 Pane

laravel - 设计 Laravel 缓存(Redis)架构

php - MVC 框架中的缓存策略?

angular - http服务缓存

node.js - 我已经更新了github上的数据,但是 Node 模块请求仍然得到旧数据

java - 为什么Java不能区分对象和数字?

java - 桌面共享,无需安装软件

java - 使用 POI 在 Excel 中拉伸(stretch)图像