Hibernate二级缓存示例

  发布于 2023-02-10 14:12

我正在开发hibernate + ehcache程序.

@Entity
@Table(name = "pizza")
public class Pizza implements Serializable{
    @Id
    @GeneratedValue
    private Integer id;
    private String name;
    private double price;

    public long getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

}

ehcache.xml中

   

我在bean.xml中提到了ehcache

   ehcache.xml
        true
        true
        net.sf.ehcache.hibernate.EhCacheRegionFactory
         net.sf.ehcache.hibernate.EhCacheProvider

而我在dao类中的调用方法是

 Session session1=sessionFactory.openSession();  

          Pizza pizza2=(Pizza)session1.load(Pizza.class, 2);
          System.out.println("pizza2--"+pizza2.getName());  
          session1.close(); 

 Session session2=sessionFactory.openSession();  

          Pizza pizza4=(Pizza)session2.load(Pizza.class, 2);
          System.out.println("pizza4--"+pizza4.getName());  
          session2.close(); 

输出是:

Hibernate: select pizza0_.id as id0_0_, pizza0_.name as name0_0_, pizza0_.price as price0_0_ from pizza pizza0_ where pizza0_.id=?
pizza2--Thin Crust
Hibernate: select pizza0_.id as id0_0_, pizza0_.name as name0_0_, pizza0_.price as price0_0_ from pizza pizza0_ where pizza0_.id=?
pizza4--Thin Crust

但它在数据库中打了两次.我的代码中没有发现任何错误.请告诉我为什么它在数据库中命中两次.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有