{"id":4801,"date":"2018-07-27T15:46:16","date_gmt":"2018-07-27T10:16:16","guid":{"rendered":"https:\/\/www.innovationm.com\/blog\/?p=4801"},"modified":"2023-01-20T18:55:37","modified_gmt":"2023-01-20T13:25:37","slug":"spring-hibernate-with-ehcache","status":"publish","type":"post","link":"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/","title":{"rendered":"Spring Hibernate With EhCache"},"content":{"rendered":"<p>Ehcache is an open-source, standards-based cache for boosting performance, simplifying scalability and offloading your database. EhCache is used to improve performance by reducing the load on underlying resources.\u00a0 It can also be used for RESTful server caching, application persistence, and distributed caching.<\/p>\n<blockquote><p>In simple words, <strong>cache<\/strong> means a store of things that will be required in future, and can be retrieved rapidly.<\/p><\/blockquote>\n<p><strong>How much will an application speed up with Caching?<\/strong><\/p>\n<p>It depends on the multitude of factors being:<\/p>\n<ol>\n<li>At what level, data present in cache can and is reused by the application.<\/li>\n<li>The proportion of response time that is ease by caching.<\/li>\n<\/ol>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-4812 aligncenter\" src=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/dev-_blog_image_2-300x92.png\" alt=\"\" width=\"462\" height=\"142\" srcset=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/dev-_blog_image_2-300x92.png 300w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/dev-_blog_image_2-768x235.png 768w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/dev-_blog_image_2-624x191.png 624w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/dev-_blog_image_2.png 910w\" sizes=\"(max-width: 462px) 100vw, 462px\" \/><\/p>\n<p><strong>Spring<\/strong> contains cache manager interface org.springframework.cache.CacheManager, so we need to provide concrete implementation for cache storage.<\/p>\n<p>One of the implementations for caching is : <em><strong>EhCache.<\/strong><\/em><\/p>\n<p>This project involves\u00a0<strong>Ehcache in Spring<\/strong> with hibernate configuration. It follows Model View Controller ( MVC ) architecture.<\/p>\n<p>Firstly take a maven project in eclipse using webapp archetype.<\/p>\n<h3>Project Structure<\/h3>\n<p><img decoding=\"async\" class=\"wp-image-4807 aligncenter\" src=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/Maven-Web-Project-228x300.png\" alt=\"\" width=\"373\" height=\"491\" srcset=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/Maven-Web-Project-228x300.png 228w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/Maven-Web-Project.png 418w\" sizes=\"(max-width: 373px) 100vw, 373px\" \/><\/p>\n<h3 id=\"21-maven-dependency\"><span id=\"21_Maven_dependency\">Maven dependency<\/span><\/h3>\n<p>Add this maven dependency in your application\u2019s classpath to implement ehcache in your project :<\/p>\n<pre class=\"lang:default decode:true\" title=\"Maven Dependency for Caching\">&lt;dependency&gt;\r\n&lt;groupId&gt;org.hibernate&lt;\/groupId&gt;\r\n&lt;artifactId&gt;hibernate-ehcache&lt;\/artifactId&gt;\r\n&lt;version&gt;4.3.5.Final&lt;\/version&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<h3 id=\"22-configuring-the-cache-storage\"><span id=\"22_Configuring_the_cache_storage\">Configuring the cache storage<\/span><\/h3>\n<pre class=\"lang:default decode:true \" title=\"EHCacheConfig.java\">package com.spring.ehcache.config;\r\n\r\nimport org.springframework.cache.annotation.EnableCaching;\r\nimport org.springframework.cache.ehcache.EhCacheCacheManager;\r\nimport org.springframework.cache.ehcache.EhCacheManagerFactoryBean;\r\nimport org.springframework.context.annotation.Bean;\r\nimport org.springframework.context.annotation.Configuration;\r\nimport org.springframework.core.io.ClassPathResource;\r\n\r\n@Configuration\r\n@EnableCaching \/*This annotation registers CacheInterceptor or AnnotationCacheAspect,\r\n which will detect cache annotations like @Cacheable, @CachePut, and @CacheEvict.*\/\r\npublic class EHCacheConfig {\r\n\t\r\n\t\/*  It shows cache enabling with EhCache-related beans in a separate configuration class.\r\n\t *  Overriding these two beans is not needed if you want to stay with the default definition,\r\n\t *  but we wanted to make cache transactions aware to synchronize put\/evict operations with\r\n\t *  ongoing Spring-managed transactions.*\/\r\n\r\n\t @Bean\r\n\t    public EhCacheManagerFactoryBean ehCacheManagerFactory() {\r\n\t        EhCacheManagerFactoryBean cacheManagerFactoryBean = new EhCacheManagerFactoryBean();\r\n\t        cacheManagerFactoryBean.setConfigLocation(new ClassPathResource(\"ehcache.xml\"));\r\n\t        cacheManagerFactoryBean.setShared(true);\r\n\t        return cacheManagerFactoryBean;\r\n\t    }\r\n\t    @Bean\r\n\t    public EhCacheCacheManager ehCacheCacheManager() {\r\n\t        EhCacheCacheManager cacheManager = new EhCacheCacheManager();\r\n\t        cacheManager.setCacheManager(ehCacheManagerFactory().getObject());\r\n\t        cacheManager.setTransactionAware(true);\r\n\t        return cacheManager;\r\n\t    }\r\n\r\n}\r\n<\/pre>\n<h3>Controller class<\/h3>\n<pre class=\"lang:default decode:true \">package com.spring.ehcache.controller;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.RestController;\r\n\r\nimport com.spring.ehcache.entity.EhCacheEntity;\r\nimport com.spring.ehcache.model.EhCacheModel;\r\nimport com.spring.ehcache.repository.EhCacheRepositoryImpl;\r\n\r\n@RestController\r\npublic class EhCacheController {\r\n\t\r\n\t@Autowired\r\n\tEhCacheRepositoryImpl myrepo;\r\n\t\r\n\t@RequestMapping(value=\"test\" , method = { RequestMethod.OPTIONS, RequestMethod.GET })\r\n\tpublic List&lt;EhCacheModel&gt; myMethod() {\r\n\t\t\r\n\t\tList&lt;EhCacheModel&gt; demo = new ArrayList&lt;&gt;();\r\n\t\tList&lt;EhCacheEntity&gt; myDemoEntityList=myrepo.getEntity();\r\n\t\t\r\n\t\tfor(EhCacheEntity myDemoEntity : myDemoEntityList) {\r\n\t\t\tEhCacheModel d=new EhCacheModel();\r\n\t\t\td.setId(myDemoEntity.getUserId());\r\n\t\t\td.setName(myDemoEntity.getName());\r\n\t\t\tdemo.add(d);\r\n\t\t}\r\n\t\treturn demo;\r\n\t}\r\n\r\n}\r\n<\/pre>\n<h3>DAO Implementation<\/h3>\n<pre class=\"lang:default decode:true \" title=\"Add @Cacheable on the method you want to cache.\">package com.spring.ehcache.repository;\r\n\r\nimport java.util.List;\r\n\r\nimport org.hibernate.Criteria;\r\nimport org.springframework.cache.annotation.Cacheable;\r\n\r\nimport com.spring.ehcache.entity.EhCacheEntity;\r\n\r\npublic class EhCacheRepositoryImpl extends EhCacheRepository {\r\n\t\r\n\t\/* @Cacheable indicates that the result of invoking a method (or all methods in a class) can be cached.\r\n\t * Each time an advised method is invoked, the caching behavior will be applied, \r\n\t * checking whether the method was already invoked for the given arguments.*\/\r\n\t\r\n\t@Cacheable(value = \"ehcache\")\r\n\tpublic List&lt;EhCacheEntity&gt; getEntity()\r\n\t{\r\n\t\tList&lt;EhCacheEntity&gt; myDemoEntitylist = null;\r\n\t\tCriteria cr = currentSession().createCriteria(EhCacheEntity.class);\r\n\t\tmyDemoEntitylist = cr.list();\r\n\t\treturn myDemoEntitylist;\r\n\t}\r\n}\r\n<\/pre>\n<p>Create a\u00a0<code>ehcache.xml<\/code>\u00a0file, to tell Ehcache how and where to cache the data.<\/p>\n<pre class=\"lang:default decode:true \" title=\"ehcache.xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;!DOCTYPE ehcache&gt;\r\n&lt;ehcache&gt;\r\n    &lt;diskStore path=\"java.io.tmpdir\"\/&gt;\r\n    &lt;cache name=\"ehcache\"\r\n           maxElementsInMemory=\"10000\" eternal=\"false\" timeToIdleSeconds=\"600\"\r\n           timeToLiveSeconds=\"3600\" overflowToDisk=\"true\"\/&gt;\r\n&lt;\/ehcache&gt;<\/pre>\n<p>To get all data, execute these queries in MySQL Database :<\/p>\n<pre class=\"lang:default decode:true \" title=\"Queries\">CREATE SCHEMA `ehcaching` ;\r\n\r\nCREATE TABLE `ehcaching`.`ehcache` (\r\n  `id` INT(11) NOT NULL,\r\n  `name_column` VARCHAR(255) NOT NULL,\r\n  PRIMARY KEY (`id`));\r\n\r\nINSERT INTO `ehcaching`.`ehcache` (`id`, `name_column`) VALUES ('1', 'dev');\r\nINSERT INTO `ehcaching`.`ehcache` (`id`, `name_column`) VALUES ('2', 'ankit');\r\nINSERT INTO `ehcaching`.`ehcache` (`id`, `name_column`) VALUES ('3', 'akshay');\r\nINSERT INTO `ehcaching`.`ehcache` (`id`, `name_column`) VALUES ('4', 'rahul');<\/pre>\n<h3>Output<\/h3>\n<p><img decoding=\"async\" class=\"alignnone wp-image-4861\" src=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/07\/Output.png\" alt=\"\" width=\"296\" height=\"339\" \/><\/p>\n<p>You can download the code from here : <a href=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/07\/SpringHibernateehcache.zip\"><em><strong>Download<\/strong><\/em><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ehcache is an open-source, standards-based cache for boosting performance, simplifying scalability and offloading your database. EhCache is used to improve performance by reducing the load on underlying resources.\u00a0 It can also be used for RESTful server caching, application persistence, and distributed caching. In simple words, cache means a store of things that will be required [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4811,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[256,263],"tags":[287,265,245,224,243],"class_list":["post-4801","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java-application","category-orm","tag-caching","tag-hibernate","tag-j2ee","tag-java","tag-spring"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Spring Hibernate With EhCache - InnovationM - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring Hibernate With EhCache - InnovationM - Blog\" \/>\n<meta property=\"og:description\" content=\"Ehcache is an open-source, standards-based cache for boosting performance, simplifying scalability and offloading your database. EhCache is used to improve performance by reducing the load on underlying resources.\u00a0 It can also be used for RESTful server caching, application persistence, and distributed caching. In simple words, cache means a store of things that will be required [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/\" \/>\n<meta property=\"og:site_name\" content=\"InnovationM - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-07-27T10:16:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-20T13:25:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/dev-_blog_image_1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1136\" \/>\n\t<meta property=\"og:image:height\" content=\"596\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"InnovationM Admin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"InnovationM Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/spring-hibernate-with-ehcache\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/spring-hibernate-with-ehcache\\\/\"},\"author\":{\"name\":\"InnovationM Admin\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"headline\":\"Spring Hibernate With EhCache\",\"datePublished\":\"2018-07-27T10:16:16+00:00\",\"dateModified\":\"2023-01-20T13:25:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/spring-hibernate-with-ehcache\\\/\"},\"wordCount\":219,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/spring-hibernate-with-ehcache\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/dev-_blog_image_1.png\",\"keywords\":[\"caching\",\"Hibernate\",\"J2EE\",\"java\",\"Spring\"],\"articleSection\":[\"Java Application\",\"ORM\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/spring-hibernate-with-ehcache\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/spring-hibernate-with-ehcache\\\/\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/spring-hibernate-with-ehcache\\\/\",\"name\":\"Spring Hibernate With EhCache - InnovationM - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/spring-hibernate-with-ehcache\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/spring-hibernate-with-ehcache\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/dev-_blog_image_1.png\",\"datePublished\":\"2018-07-27T10:16:16+00:00\",\"dateModified\":\"2023-01-20T13:25:37+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/spring-hibernate-with-ehcache\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/spring-hibernate-with-ehcache\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/spring-hibernate-with-ehcache\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/dev-_blog_image_1.png\",\"contentUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/dev-_blog_image_1.png\",\"width\":1136,\"height\":596},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/spring-hibernate-with-ehcache\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Spring Hibernate With EhCache\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\",\"name\":\"InnovationM - Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\",\"name\":\"InnovationM Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"caption\":\"InnovationM Admin\"},\"sameAs\":[\"http:\\\/\\\/www.innovationm.com\\\/\"],\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/author\\\/innovationmadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Spring Hibernate With EhCache - InnovationM - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/","og_locale":"en_US","og_type":"article","og_title":"Spring Hibernate With EhCache - InnovationM - Blog","og_description":"Ehcache is an open-source, standards-based cache for boosting performance, simplifying scalability and offloading your database. EhCache is used to improve performance by reducing the load on underlying resources.\u00a0 It can also be used for RESTful server caching, application persistence, and distributed caching. In simple words, cache means a store of things that will be required [&hellip;]","og_url":"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/","og_site_name":"InnovationM - Blog","article_published_time":"2018-07-27T10:16:16+00:00","article_modified_time":"2023-01-20T13:25:37+00:00","og_image":[{"width":1136,"height":596,"url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/dev-_blog_image_1.png","type":"image\/png"}],"author":"InnovationM Admin","twitter_misc":{"Written by":"InnovationM Admin","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/#article","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/"},"author":{"name":"InnovationM Admin","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"headline":"Spring Hibernate With EhCache","datePublished":"2018-07-27T10:16:16+00:00","dateModified":"2023-01-20T13:25:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/"},"wordCount":219,"commentCount":0,"image":{"@id":"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/dev-_blog_image_1.png","keywords":["caching","Hibernate","J2EE","java","Spring"],"articleSection":["Java Application","ORM"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/","url":"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/","name":"Spring Hibernate With EhCache - InnovationM - Blog","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/#primaryimage"},"image":{"@id":"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/dev-_blog_image_1.png","datePublished":"2018-07-27T10:16:16+00:00","dateModified":"2023-01-20T13:25:37+00:00","author":{"@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"breadcrumb":{"@id":"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/#primaryimage","url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/dev-_blog_image_1.png","contentUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/06\/dev-_blog_image_1.png","width":1136,"height":596},{"@type":"BreadcrumbList","@id":"https:\/\/www.innovationm.com\/blog\/spring-hibernate-with-ehcache\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.innovationm.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Spring Hibernate With EhCache"}]},{"@type":"WebSite","@id":"https:\/\/www.innovationm.com\/blog\/#website","url":"https:\/\/www.innovationm.com\/blog\/","name":"InnovationM - Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.innovationm.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed","name":"InnovationM Admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","caption":"InnovationM Admin"},"sameAs":["http:\/\/www.innovationm.com\/"],"url":"https:\/\/www.innovationm.com\/blog\/author\/innovationmadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/4801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/comments?post=4801"}],"version-history":[{"count":0,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/4801\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media\/4811"}],"wp:attachment":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media?parent=4801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/categories?post=4801"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/tags?post=4801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}