首页 > 解决方案 > 使用 Spring JDBC 实现一级缓存

问题描述

我想实现一个特定于正在使用的事务的缓存(即来自数据库查询的缓存结果)。如何才能做到这一点?

  1. 将 JTA 事务与 JDBC 一起使用?
  2. 在没有任何外部库的情况下使用带有 JDBC 的 JTA 事务?

例如

我在服务中创建了一个函数。

@Transcational()
public void get(String id) {
   dao.get(id);
}

我称创建函数为 dao。

public void get(String id) {
   final String sql = "SELECT * FROM TABLE_NAME WHERE id = ?";
    try {
      Object someObject;
       // TODO Here I want to check, If I have this item in cache specific to this transcation or not
      if (someObject == null) {
        someObject = template.queryForObject(sql, new Object[] {id}, someMapper);

      // TODO Here, I want to put the item in a cache that is specific to this transaction.

}

在这种情况下,如何实现特定于事务的缓存?无需迁移到 JPA。

标签: javaspring-jdbcjta

解决方案


推荐阅读