简体   繁体   中英

ehcache not working with hibernate

I have a dropwizard Application, configured in config.yml in database.

The properties are:

hibernate.show_sql: true
javax.persistence.sharedCache.mode: ALL
hibernate.cache.default_cache_concurrency_strategy: read-only
hibernate.cache.region.factory_class: 
org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
hibernate.cache.use_second_level_cache: true

But it seems that ehcache is not working...

In the logs I always see the queries and the ehcache log:

Hibernate: select businessel0_.GD_BUSINESSCODEELEMENT as GD_BUSINESSCODEELE1_3_0_, businessel0_.DBUSERINS as DBUSERINS2_3_0_, businessel0_.DBUSERUPD as DBUSERUPD3_3_0_, businessel0_.INSERTDATE as INSERTDATE4_3_0_, businessel0_.MODIFYDATE as MODIFYDATE5_3_0_, businessel0_.AU_USERIDINS as AU_USERIDINS10_3_0_, businessel0_.AU_USERIDUPD as AU_USERIDUPD11_3_0_, businessel0_.VERSION as VERSION6_3_0_, businessel0_.GD_BUSINESSCODETYPE as GD_BUSINESSCODETY12_3_0_, businessel0_.DATATYPE as DATATYPE7_3_0_, businessel0_.DESCRIPTION as DESCRIPTION8_3_0_, businessel0_.LONGDESC as LONGDESC9_3_0_, businessel0_.MASTER_BUSINESSCODEELEMENT as MASTER_BUSINESSCO13_3_0_, businessty1_.GD_BUSINESSCODETYPE as GD_BUSINESSCODETYP1_5_1_, businessty1_.DBUSERINS as DBUSERINS2_5_1_, businessty1_.DBUSERUPD as DBUSERUPD3_5_1_, businessty1_.INSERTDATE as INSERTDATE4_5_1_, businessty1_.MODIFYDATE as MODIFYDATE5_5_1_, businessty1_.AU_USERIDINS as AU_USERIDINS8_5_1_, businessty1_.AU_USERIDUPD as AU_USERIDUPD9_5_1_, businessty1_.VERSION as VERSION6_5_1_, businessty1_.DESCRIPTION as DESCRIPTION7_5_1_, businessel2_.GD_BUSINESSCODEELEMENT as GD_BUSINESSCODEELE1_3_2_, businessel2_.DBUSERINS as DBUSERINS2_3_2_, businessel2_.DBUSERUPD as DBUSERUPD3_3_2_, businessel2_.INSERTDATE as INSERTDATE4_3_2_, businessel2_.MODIFYDATE as MODIFYDATE5_3_2_, businessel2_.AU_USERIDINS as AU_USERIDINS10_3_2_, businessel2_.AU_USERIDUPD as AU_USERIDUPD11_3_2_, businessel2_.VERSION as VERSION6_3_2_, businessel2_.GD_BUSINESSCODETYPE as GD_BUSINESSCODETY12_3_2_, businessel2_.DATATYPE as DATATYPE7_3_2_, businessel2_.DESCRIPTION as DESCRIPTION8_3_2_, businessel2_.LONGDESC as LONGDESC9_3_2_, businessel2_.MASTER_BUSINESSCODEELEMENT as MASTER_BUSINESSCO13_3_2_ from GD_BUSINESSCODEELEMENT businessel0_ left outer join GD_BUSINESSCODETYPE businessty1_ on businessel0_.GD_BUSINESSCODETYPE=businessty1_.GD_BUSINESSCODETYPE left outer join GD_BUSINESSCODEELEMENT businessel2_ on businessel0_.MASTER_BUSINESSCODEELEMENT=businessel2_.GD_BUSINESSCODEELEMENT where businessel0_.GD_BUSINESSCODEELEMENT=?
2018-03-08 13:11:16,243 DEBUG 99FE394CE00B497699A5A9916B1E9A6A [net.sf.ehcache.store.disk.Segment]: put added 0 on heap
2018-03-08 13:11:16,247 DEBUG 99FE394CE00B497699A5A9916B1E9A6A [net.sf.ehcache.store.disk.Segment]: put added 0 on heap
Hibernate: select businessel0_.GD_BUSINESSCODEELEMENT as GD_BUSINESSCODEELE1_3_0_, businessel0_.DBUSERINS as DBUSERINS2_3_0_, businessel0_.DBUSERUPD as DBUSERUPD3_3_0_, businessel0_.INSERTDATE as INSERTDATE4_3_0_, businessel0_.MODIFYDATE as MODIFYDATE5_3_0_, businessel0_.AU_USERIDINS as AU_USERIDINS10_3_0_, businessel0_.AU_USERIDUPD as AU_USERIDUPD11_3_0_, businessel0_.VERSION as VERSION6_3_0_, businessel0_.GD_BUSINESSCODETYPE as GD_BUSINESSCODETY12_3_0_, businessel0_.DATATYPE as DATATYPE7_3_0_, businessel0_.DESCRIPTION as DESCRIPTION8_3_0_, businessel0_.LONGDESC as LONGDESC9_3_0_, businessel0_.MASTER_BUSINESSCODEELEMENT as MASTER_BUSINESSCO13_3_0_, businessty1_.GD_BUSINESSCODETYPE as GD_BUSINESSCODETYP1_5_1_, businessty1_.DBUSERINS as DBUSERINS2_5_1_, businessty1_.DBUSERUPD as DBUSERUPD3_5_1_, businessty1_.INSERTDATE as INSERTDATE4_5_1_, businessty1_.MODIFYDATE as MODIFYDATE5_5_1_, businessty1_.AU_USERIDINS as AU_USERIDINS8_5_1_, businessty1_.AU_USERIDUPD as AU_USERIDUPD9_5_1_, businessty1_.VERSION as VERSION6_5_1_, businessty1_.DESCRIPTION as DESCRIPTION7_5_1_, businessel2_.GD_BUSINESSCODEELEMENT as GD_BUSINESSCODEELE1_3_2_, businessel2_.DBUSERINS as DBUSERINS2_3_2_, businessel2_.DBUSERUPD as DBUSERUPD3_3_2_, businessel2_.INSERTDATE as INSERTDATE4_3_2_, businessel2_.MODIFYDATE as MODIFYDATE5_3_2_, businessel2_.AU_USERIDINS as AU_USERIDINS10_3_2_, businessel2_.AU_USERIDUPD as AU_USERIDUPD11_3_2_, businessel2_.VERSION as VERSION6_3_2_, businessel2_.GD_BUSINESSCODETYPE as GD_BUSINESSCODETY12_3_2_, businessel2_.DATATYPE as DATATYPE7_3_2_, businessel2_.DESCRIPTION as DESCRIPTION8_3_2_, businessel2_.LONGDESC as LONGDESC9_3_2_, businessel2_.MASTER_BUSINESSCODEELEMENT as MASTER_BUSINESSCO13_3_2_ from GD_BUSINESSCODEELEMENT businessel0_ left outer join GD_BUSINESSCODETYPE businessty1_ on businessel0_.GD_BUSINESSCODETYPE=businessty1_.GD_BUSINESSCODETYPE left outer join GD_BUSINESSCODEELEMENT businessel2_ on businessel0_.MASTER_BUSINESSCODEELEMENT=businessel2_.GD_BUSINESSCODEELEMENT where businessel0_.GD_BUSINESSCODEELEMENT=?
2018-03-08 13:11:16,252 DEBUG 99FE394CE00B497699A5A9916B1E9A6A [net.sf.ehcache.store.disk.Segment]: put added 0 on heap
Hibernate: select businessel0_.GD_BUSINESSCODEELEMENT as GD_BUSINESSCODEELE1_3_0_, businessel0_.DBUSERINS as DBUSERINS2_3_0_, businessel0_.DBUSERUPD as DBUSERUPD3_3_0_, businessel0_.INSERTDATE as INSERTDATE4_3_0_, businessel0_.MODIFYDATE as MODIFYDATE5_3_0_, businessel0_.AU_USERIDINS as AU_USERIDINS10_3_0_, businessel0_.AU_USERIDUPD as AU_USERIDUPD11_3_0_, businessel0_.VERSION as VERSION6_3_0_, businessel0_.GD_BUSINESSCODETYPE as GD_BUSINESSCODETY12_3_0_, businessel0_.DATATYPE as DATATYPE7_3_0_, businessel0_.DESCRIPTION as DESCRIPTION8_3_0_, businessel0_.LONGDESC as LONGDESC9_3_0_, businessel0_.MASTER_BUSINESSCODEELEMENT as MASTER_BUSINESSCO13_3_0_, businessty1_.GD_BUSINESSCODETYPE as GD_BUSINESSCODETYP1_5_1_, businessty1_.DBUSERINS as DBUSERINS2_5_1_, businessty1_.DBUSERUPD as DBUSERUPD3_5_1_, businessty1_.INSERTDATE as INSERTDATE4_5_1_, businessty1_.MODIFYDATE as MODIFYDATE5_5_1_, businessty1_.AU_USERIDINS as AU_USERIDINS8_5_1_, businessty1_.AU_USERIDUPD as AU_USERIDUPD9_5_1_, businessty1_.VERSION as VERSION6_5_1_, businessty1_.DESCRIPTION as DESCRIPTION7_5_1_, businessel2_.GD_BUSINESSCODEELEMENT as GD_BUSINESSCODEELE1_3_2_, businessel2_.DBUSERINS as DBUSERINS2_3_2_, businessel2_.DBUSERUPD as DBUSERUPD3_3_2_, businessel2_.INSERTDATE as INSERTDATE4_3_2_, businessel2_.MODIFYDATE as MODIFYDATE5_3_2_, businessel2_.AU_USERIDINS as AU_USERIDINS10_3_2_, businessel2_.AU_USERIDUPD as AU_USERIDUPD11_3_2_, businessel2_.VERSION as VERSION6_3_2_, businessel2_.GD_BUSINESSCODETYPE as GD_BUSINESSCODETY12_3_2_, businessel2_.DATATYPE as DATATYPE7_3_2_, businessel2_.DESCRIPTION as DESCRIPTION8_3_2_, businessel2_.LONGDESC as LONGDESC9_3_2_, businessel2_.MASTER_BUSINESSCODEELEMENT as MASTER_BUSINESSCO13_3_2_ from GD_BUSINESSCODEELEMENT businessel0_ left outer join GD_BUSINESSCODETYPE businessty1_ on businessel0_.GD_BUSINESSCODETYPE=businessty1_.GD_BUSINESSCODETYPE left outer join GD_BUSINESSCODEELEMENT businessel2_ on businessel0_.MASTER_BUSINESSCODEELEMENT=businessel2_.GD_BUSINESSCODEELEMENT where businessel0_.GD_BUSINESSCODEELEMENT=?
2018-03-08 13:11:16,256 DEBUG 99FE394CE00B497699A5A9916B1E9A6A [net.sf.ehcache.store.disk.Segment]: put added 0 on heap
Hibernate: select statuscode0_.GD_STATUS as GD_STATUS1_15_0_, statuscode0_.DBUSERINS as DBUSERINS2_15_0_, statuscode0_.DBUSERUPD as DBUSERUPD3_15_0_, statuscode0_.INSERTDATE as INSERTDATE4_15_0_, statuscode0_.MODIFYDATE as MODIFYDATE5_15_0_, statuscode0_.AU_USERIDINS as AU_USERIDINS8_15_0_, statuscode0_.AU_USERIDUPD as AU_USERIDUPD9_15_0_, statuscode0_.VERSION as VERSION6_15_0_, statuscode0_.DESCRIPTION as DESCRIPTION7_15_0_ from GD_STATUSCODE statuscode0_ where statuscode0_.GD_STATUS=?
Hibernate: select statuscode0_.GD_STATUS as GD_STATUS1_15_0_, statuscode0_.DBUSERINS as DBUSERINS2_15_0_, statuscode0_.DBUSERUPD as DBUSERUPD3_15_0_, statuscode0_.INSERTDATE as INSERTDATE4_15_0_, statuscode0_.MODIFYDATE as MODIFYDATE5_15_0_, statuscode0_.AU_USERIDINS as AU_USERIDINS8_15_0_, statuscode0_.AU_USERIDUPD as AU_USERIDUPD9_15_0_, statuscode0_.VERSION as VERSION6_15_0_, statuscode0_.DESCRIPTION as DESCRIPTION7_15_0_ from GD_STATUSCODE statuscode0_ where statuscode0_.GD_STATUS=?
2018-03-08 13:11:16,263 DEBUG 99FE394CE00B497699A5A9916B1E9A6A [net.sf.ehcache.store.disk.Segment]: put added 0 on heap

The DAO code is very simple:

@DAO
public class ContractDAO extends AbstractDAO<Contract> {

    public ContractDAO(SessionFactory sessionFactory) {
        super(sessionFactory);
    }

    public List<Contract> getAll() {
        return list(query(" from Contract c"));
    }

    public Contract getById(int id) {
        return query(" from Contract c where c.id = "+id).getSingleResult();
    }
}

Any idea what is wrong ?

You need to configure the persistent objects and queries as cacheable.

Just add @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) to your Contract class to cache the entity.

Then, Hibernate will get the entity from the cache instead of from the database. However, in your case, you are using queries. I am not a dropwizard expect but there is probably a findById somewhere that can replace query(" from Contract c where c.id = "+id) . BTW, you should never concatenate like that. Use parameters in a prepared statement instead.

For the getAll , you need to set the query to be cacheable. Again, I don't know how it's done with dropwizard but there must be a setCacheable somewhere.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM