{"id":1549,"date":"2014-10-20T10:00:00","date_gmt":"2014-10-20T08:00:00","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1549"},"modified":"2023-06-28T01:33:49","modified_gmt":"2023-06-28T08:33:49","slug":"couchbase-jpa-level-2-cache-0","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/","title":{"rendered":"Couchbase JPA using Hibernate and Eclipselink"},"content":{"rendered":"<p class=\"p1\">As Couchbase continues to experience growth as a company and increased adoption by the open source community we continue to encounter new challenges and use cases along the way. Many enterprises are turning to us to help add a cache to an existing application or evolve applications to next generation technologies. For these level two cache implementations we\u2019ve helped develop a data access layer for applications in the Spring project. Spring Data Couchbase provides integration with the Couchbase Server cluster by providing POJO centric data interaction with Couchbase Buckets and helping to provide a repository-style implementation. This effort has been very successful and has generated a lot of interest.<\/p>\n<p class=\"p1\">However, there\u2019s more to the story a simple web search for \u201cJPA\u201d uncovers that helps us understand additional needs across the enterprise. While the JPA standard is well <a href=\"https:\/\/download.oracle.com\/otndocs\/jcp\/persistence-2_1-fr-eval-spec\/index.html\">defined<\/a>\u00a0ultimately each vendor implementation varies enough that supporting specific ORM\u2019s like Eclipselink and Hibernate would require additional work. We engaged our partners at <a href=\"https:\/\/www.thumbtack.net\">Thumbtack Technology<\/a>\u00a0who deployed one of their expert NOSQL development teams to help get<span class=\"s2\">\u00a0the job done.\u00a0<\/span><\/p>\n<p class=\"p1\">The objective was to provide a framework of boilerplate code to leverage Couchbase as a level two cache for both Eclipselink and Hibernate. There are improvements coming with the release of our 2.0 SDK\u2019s and additional integration improvements but we wanted to be able to support these caching efforts in the near term. Bothe the Hibernate and Eclipselink JPA connectors have been published by Thumbtack on github with test cases to show the configuration.<\/p>\n<p class=\"p3\"><span class=\"s2\">Hibernate &#8211; <span class=\"s3\">https:\/\/github.com\/thumbtack-technology\/Couchbase-L2-Hibernate<\/span><\/span><br \/>\n<span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">EclipseLink &#8211;\u00a0<\/span><span class=\"s4\" style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em;background-color: #ffffff\">https:\/\/github.com\/thumbtack-technology\/Couchbase-L2-EclipseLink<\/span><\/p>\n<p class=\"p1\">While there is always the ability to leverage <a href=\"https:\/\/www.couchbase.com\/wiki\/display\/couchbase\/Types+of+Couchbase+Clients\/\">Moxi<\/a>\u00a0to enable existing memcached clients to be vbubket aware.\u00a0<span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">We knew the javax.persistance package had a <a href=\"https:\/\/docs.oracle.com\/javaee\/7\/api\/javax\/persistence\/package-summary.html\">cache interface <\/a>available<\/span><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">\u00a0but each vendor implementation requires nuances that need to be addressed. For example, in reviewing the the associated <a href=\"https:\/\/www.eclipse.org\/eclipselink\/documentation\/2.5\/solutions\/performance001.htm#CHDCGIHF\">eclipselink documentation<\/a><\/span><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">\u00a0shows the ability to add a level 2 cache but nothing that helps us understand the specifics of leveraging a NoSQL solution. Thumbtack helped us solve these configuration challenges.<\/span><\/p>\n<div class=\"geshifilter\">\n<div class=\"xml geshifilter-xml\" style=\"font-family: monospace\">Eclipselink persistence.xml<br \/>\n<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;property<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&#8220;couchbase.cache.servers&#8221;<\/span><\/span><br \/>\n<span style=\"color: #009900\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span style=\"color: #000066\">value<\/span>=<span style=\"color: #ff0000\">&#8220;https:\/\/couchbase-cluster-node01:8091\/pools,<\/span><br \/>\n<span style=\"color: #009900\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 https:\/\/couchbase-cluster-node02:8091\/pools&#8221;<\/span><span style=\"color: #000000;font-weight: bold\">\/&gt;<\/span><\/span><br \/>\n<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;property<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&#8220;couchbase.cache.bucket.name&#8221;<\/span> <span style=\"color: #000066\">value<\/span>=<span style=\"color: #ff0000\">&#8220;l2-cache&#8221;<\/span><span style=\"color: #000000;font-weight: bold\">\/&gt;<\/span><\/span><br \/>\n<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;property<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&#8220;couchbase.cache.bucket.password&#8221;<\/span> <span style=\"color: #000066\">value<\/span>=<span style=\"color: #ff0000\">&#8220;cachepwd&#8221;<\/span><span style=\"color: #000000;font-weight: bold\">\/&gt;<\/span><\/span><br \/>\n<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;property<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&#8220;couchbase.cache.ttl&#8221;<\/span> <span style=\"color: #000066\">value<\/span>=<span style=\"color: #ff0000\">&#8220;600&#8221;<\/span><span style=\"color: #000000;font-weight: bold\">\/&gt;<\/span><\/span><\/p>\n<p><span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;property<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&#8220;eclipselink.descriptor.customizer.<\/span><\/span>&#8221;<br \/>\nvalue=&#8221;net.thumbtack.couchbase.eclipselink.ClassCustomizer&#8221;\/&gt;<br \/>\n<span style=\"color: #009900\">&gt;<\/span><br \/>\n<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;property<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&#8220;eclipselink.descriptor.customizer.Order&#8221;<\/span><\/span><br \/>\n<span style=\"color: #009900\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span style=\"color: #000066\">value<\/span>=<span style=\"color: #ff0000\">&#8220;net.thumbtack.couchbase.eclipselink.ClassCustomizer&#8221;<\/span><span style=\"color: #000000;font-weight: bold\">\/&gt;<\/span><\/span><\/p>\n<p><span style=\"color: #009900\">&gt;<\/span><br \/>\n<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;property<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&#8220;eclipselink.descriptor.customizer.<\/span><\/span>&#8221;<br \/>\nvalue=&#8221;net.thumbtack.couchbase.eclipselink.ClassCustomizer&#8221;\/&gt;<\/div>\n<\/div>\n<div class=\"geshifilter\">\n<div class=\"xml geshifilter-xml\" style=\"font-family: monospace\">Hibernate persistence.xml<br \/>\n<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;property<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&#8220;couchbase.cache.servers&#8221;<\/span><\/span><br \/>\n<span style=\"color: #009900\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span style=\"color: #000066\">value<\/span>=<span style=\"color: #ff0000\">&#8220;https:\/\/couchbase-cluster-node01:8091\/pools,<\/span><br \/>\n<span style=\"color: #009900\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 https:\/\/couchbase-cluster-node02:8091\/pools&#8221;<\/span><span style=\"color: #000000;font-weight: bold\">\/&gt;<\/span><\/span><br \/>\n<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;property<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&#8220;couchbase.cache.bucket.name&#8221;<\/span> <span style=\"color: #000066\">value<\/span>=<span style=\"color: #ff0000\">&#8220;l2-cache&#8221;<\/span><span style=\"color: #000000;font-weight: bold\">\/&gt;<\/span><\/span><br \/>\n<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;property<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&#8220;couchbase.cache.bucket.password&#8221;<\/span> <span style=\"color: #000066\">value<\/span>=<span style=\"color: #ff0000\">&#8220;cachepwd&#8221;<\/span><span style=\"color: #000000;font-weight: bold\">\/&gt;<\/span><\/span><br \/>\n<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;property<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&#8220;couchbase.cache.ttl&#8221;<\/span> <span style=\"color: #000066\">value<\/span>=<span style=\"color: #ff0000\">&#8220;600&#8221;<\/span><span style=\"color: #000000;font-weight: bold\">\/&gt;<\/span><\/span><\/p>\n<p><span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;property<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&#8220;hibernate.cache.region.factory_class&#8221;<\/span> <span style=\"color: #000066\">value<\/span>=<span style=\"color: #ff0000\">&#8220;com.googlecode.hibernate.memcached.MemcachedRegionFactory&#8221;<\/span> <span style=\"color: #000000;font-weight: bold\">\/&gt;<\/span><\/span><br \/>\n<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;property<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&#8220;hibernate.memcached.memcacheClientFactory&#8221;<\/span> <span style=\"color: #000066\">value<\/span>=<span style=\"color: #ff0000\">&#8220;net.thumbtack.hibernate.couchbase.CouchbaseClientFactory&#8221;<\/span> <span style=\"color: #000000;font-weight: bold\">\/&gt;<\/span><\/span><\/div>\n<\/div>\n<p class=\"p1\">Additional details in getting the Thumbtack test cases running locally can be found in the github repositories.<\/p>\n<p class=\"p1\">These connectors provide us the ability to extend existing applications by adding an object cache with a durable cluster. By leveraging the power of Couchbase we can prevent Cold Cache, dramatically reduce load on your RDBMS, auto-shard across the cluster and provide a durable object store.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As Couchbase continues to experience growth as a company and increased adoption by the open source community we continue to encounter new challenges and use cases along the way. Many enterprises are turning to us to help add a cache [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8968],"class_list":["post-1549","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase JPA using Hibernate and Eclipselink - The Couchbase 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.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase JPA using Hibernate and Eclipselink\" \/>\n<meta property=\"og:description\" content=\"As Couchbase continues to experience growth as a company and increased adoption by the open source community we continue to encounter new challenges and use cases along the way. Many enterprises are turning to us to help add a cache [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-10-20T08:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-28T08:33:49+00:00\" \/>\n<meta name=\"author\" content=\"The Couchbase Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"The Couchbase Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/\"},\"author\":{\"name\":\"The Couchbase Team\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/764f4a6771ee19bc7af70b70a326fb93\"},\"headline\":\"Couchbase JPA using Hibernate and Eclipselink\",\"datePublished\":\"2014-10-20T08:00:00+00:00\",\"dateModified\":\"2023-06-28T08:33:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/\"},\"wordCount\":579,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/\",\"name\":\"Couchbase JPA using Hibernate and Eclipselink - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-10-20T08:00:00+00:00\",\"dateModified\":\"2023-06-28T08:33:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase JPA using Hibernate and Eclipselink\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/764f4a6771ee19bc7af70b70a326fb93\",\"name\":\"The Couchbase Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/7befc37d02226b59499817eafdec60c3\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g\",\"caption\":\"The Couchbase Team\"},\"description\":\"Jennifer Garcia is a Senior Web Manager at Couchbase Inc. As the website manager, Jennifer has overall responsibility for the website properties including design, implementation, content, and performance.\",\"sameAs\":[\"https:\/\/www.couchbase.com\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/jennifer-garcia\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase JPA using Hibernate and Eclipselink - The Couchbase 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.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/","og_locale":"en_US","og_type":"article","og_title":"Couchbase JPA using Hibernate and Eclipselink","og_description":"As Couchbase continues to experience growth as a company and increased adoption by the open source community we continue to encounter new challenges and use cases along the way. Many enterprises are turning to us to help add a cache [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-10-20T08:00:00+00:00","article_modified_time":"2023-06-28T08:33:49+00:00","author":"The Couchbase Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"The Couchbase Team","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/"},"author":{"name":"The Couchbase Team","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/764f4a6771ee19bc7af70b70a326fb93"},"headline":"Couchbase JPA using Hibernate and Eclipselink","datePublished":"2014-10-20T08:00:00+00:00","dateModified":"2023-06-28T08:33:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/"},"wordCount":579,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/","name":"Couchbase JPA using Hibernate and Eclipselink - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-10-20T08:00:00+00:00","dateModified":"2023-06-28T08:33:49+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-jpa-level-2-cache-0\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase JPA using Hibernate and Eclipselink"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/764f4a6771ee19bc7af70b70a326fb93","name":"The Couchbase Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/7befc37d02226b59499817eafdec60c3","url":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g","caption":"The Couchbase Team"},"description":"Jennifer Garcia is a Senior Web Manager at Couchbase Inc. As the website manager, Jennifer has overall responsibility for the website properties including design, implementation, content, and performance.","sameAs":["https:\/\/www.couchbase.com"],"url":"https:\/\/www.couchbase.com\/blog\/author\/jennifer-garcia\/"}]}},"authors":[{"term_id":8968,"user_id":2,"is_guest":0,"slug":"jennifer-garcia","display_name":"The Couchbase Team","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g","author_category":"","last_name":"Garcia","first_name":"Jennifer","job_title":"","user_url":"https:\/\/www.couchbase.com","description":"Jennifer Garcia is a Senior Web Manager at Couchbase Inc. As the website manager, Jennifer has overall responsibility for the website properties including design, implementation, content, and performance."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/1549","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=1549"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/1549\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=1549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=1549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=1549"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=1549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}