2013-12-14 19 views
5

Hazırda bekletme + ehcache programı geliştiriyorum.Hazırda bekletme ikinci düzey önbellek örneği

@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; 
    } 

} 

Ben bean.xml

<prop key="hibernate.cache.provider_configuration_file_resource_path">ehcache.xml</prop> 
     <prop key="hibernate.cache.use_second_level_cache">true</prop> 
     <prop key="hibernate.cache.use_query_cache">true</prop> 
     <prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</prop> 
     <prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</prop> 

yılında ehcache belirtmiştik ve dao sınıf içindeki satıyorum yöntemi

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(); 

Çıktı olduğunu

<cache name="com.abp.osp.domain.Pizza" 
maxElementsInMemory="100" 
eternal="false" 
timeToIdleSeconds="5" 
timeToLiveSeconds="200" /> 
</ehcache> 

ehcache.xml:

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 

Ama iki kere veritabanına çarptı. Kodumda yanlış bir şey bulamadım.Lütfen bana neden iki kez veritabanına çarptığını önerin.

cevap

2

Ben çözdük benim question.I alanı sınıfta

@Cache(usage=CacheConcurrencyStrategy.READ_ONLY,region="pizza") 

eklemeniz gerekir.

@Entity 
@Cache(usage=CacheConcurrencyStrategy.READ_ONLY,region="pizza") 
@Table(name = "pizza") 
public class Pizza implements Serializable{ 
İlgili konular