我正在开发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
但它在数据库中打了两次.我的代码中没有发现任何错误.请告诉我为什么它在数据库中命中两次.