nickevin 2010-08-18 16:06
浏览 288
已采纳

Hibernate缓存同步问题

环境:
OS : Win XP SP2
Hibernate: 3.5.1

伪代码: [code="java"]

    System.out.println(StringUtils.center("query 查询: " ));

    Session session = HibernateSessionFactory.getSession();
    String hql = "FROM Room T WHERE T.address = ?";
    Query query = session.createQuery(hql).setParameter(0, "Shanghai");
    query.setCacheable(true);
    Room room = (Room) query.list().get(0);
    HibernateSessionFactory.closeSession();

    System.out.println(StringUtils.center("更新: " ));

    Session session2 = HibernateSessionFactory.getSession();
    Transaction tx = session2.beginTransaction();
    room.setSize(60);
    session2.update(room);
    tx.commit();
    HibernateSessionFactory.closeSession();

    System.out.println(StringUtils.center("load查询(已同步缓存): " ));

    Session session3 = HibernateSessionFactory.getSession();
    room = (Room) session3.load(Room.class, new Long(2));
    Hibernate.initialize(room);
    HibernateSessionFactory.closeSession();
    System.out.println(room.getSize());

    System.out.println(StringUtils.center("query 查询(未同步缓存): "));
    Session session4 = HibernateSessionFactory.getSession();
    query = session4.createQuery(hql).setParameter(0, "Shanghai");
    query.setCacheable(true);
    room = (Room) query.list().get(0);
    HibernateSessionFactory.closeSession();

[/code]
[size=xx-large]hibernate.cache.use_query_cache 和 和 setCacheable(true) 都已配置过

疑问: 两次查询条件都一样, 中间修改了实体, 为什么第二次query查询还是发送了sql, 如果同步了缓存应该不会发送, 请指教. 谢谢.[/size]

  • 写回答

2条回答 默认 最新

  • liyistudio 2010-08-19 11:40
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧