{"id":8641,"date":"2020-05-12T09:00:57","date_gmt":"2020-05-12T16:00:57","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=8641"},"modified":"2023-08-29T16:23:55","modified_gmt":"2023-08-29T23:23:55","slug":"announcing-spring-data-couchbase-4-0","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/","title":{"rendered":"Announcing Spring Data Couchbase 4.0"},"content":{"rendered":"<p style=\"text-align: left\">We are delighted to announce that the eagerly awaited Spring Data Couchbase 4.0 is now available with enhanced capabilities. Built on top of Couchbase Java SDK 3.0, Spring Data Couchbase out-of-the-box comes with technology enhancements and leverages the latest Couchbase Server 6.5 capabilities. These improvements are targeted to maximize developer agility, offer reduced code impedance, enhance manageability, and provide quality developer experience.<\/p>\n<h4><b>Reference Links<\/b><\/h4>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/docs.spring.io\/spring-data\/couchbase\/docs\/4.0.0.RELEASE\/reference\/html\/#reference\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">Official Spring Data Couchbase Reference<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/hello-world\/start-using-sdk.html\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">Read Couchbase Java SDK 3.0 documentation<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/introduction\/whats-new.html\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">Read Couchbase Server 6.5.0 documentation<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/www.couchbase.com\/forums\/c\/java-sdk\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">Share your thoughts on the Couchbase Forums<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/www.couchbase.com\/blog\/tag\/spring-data\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">See all the blogs about Spring Data Couchbase<\/span><\/a><\/li>\n<li><a href=\"https:\/\/spring.io\/blog\/2020\/05\/12\/spring-data-neumann-goes-ga\">Official Spring Announcement<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4><b>Introduction<\/b><\/h4>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">If you are already familiar with Spring Data and want to overcome the curiosity you may do so now by going to the <\/span><a href=\"#update\">up<\/a><a href=\"#update\">da<\/a><a href=\"#update\">tes<\/a> section.<\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Before getting into what&#8217;s changed in <a href=\"https:\/\/docs.couchbase.com\/sdk-extensions\/spring-data-couchbase.html\">Spring Data Couchbase<\/a>, let&#8217;s take a moment to step back and understand what Spring Data is, what\u00a0 problems it solves and why a developer should consider using it.\u00a0<\/span><\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">Most developers are familiar with a database, the de-facto standard for data persistence. Today, almost all applications rely on some type of technology that is responsible for persistent storage with more modern enterprise applications commonly adopting the use of a multi-model database.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Regardless of the technology used as a persistence store, operations performed on data have largely remained consistent. The consistency in operations comes from developers, over a period of time, writing thousands of lines of code over and over again to Create, Retrieve, Update and Delete data from their underlying persistence store.<\/span><span style=\"font-weight: 400\"> As a developer you always want to avoid writing such repetitive and monotonous code, rather you want to focus on writing business logic that brings in more value.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Over a decade, <\/span><a href=\"https:\/\/deviq.com\/repository-pattern\/\" target=\"_blank\" rel=\"noopener noreferrer\"><i><span style=\"font-weight: 400\">repository patterns<\/span><\/i><\/a><span style=\"font-weight: 400\"> have gained a lot of popularity and traction in the developer community. In its modern interpretation, a <\/span><span style=\"font-weight: 400\">repository pattern <\/span><span style=\"font-weight: 400\">abstracts the data store and enables your business logic to define, read and write operations on a logical level. These patterns are good from an abstractions point of view however it still doesn\u2019t solve the core problem of a developer writing repetitive code. Implementing <\/span><span style=\"font-weight: 400\">repository patterns<\/span><span style=\"font-weight: 400\"> and writing your own data access could leave you with a lot of spaghetti code making maintainability a nightmare, and could also be violating the <\/span><a href=\"https:\/\/dzone.com\/articles\/software-design-principles-dry-and-kiss\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">D.R.Y principle<\/span><\/a><b>.<\/b> <em>This is where Spring Data comes to our rescue.<\/em><\/p>\n<p><span style=\"font-weight: 400\">Spring Data is a high-level Pivotal project whose purpose is to unify and ease the access to different kinds of persistence stores, both relational database systems and NoSQL data stores. Spring Data provides generic interfaces for these aspects (CrudRepository, PagingAndSortingRepository) as well as persistence store specific implementations.<\/span><\/p>\n<p><span style=\"font-weight: 400\">With Spring Data\u2019s repositories, you need only to write an <\/span><span style=\"font-weight: 400\">interface<\/span><span style=\"font-weight: 400\"> with finder methods defined according to a given set of conventions (which may vary depending on the kind of persistence store you are using). <\/span><span style=\"font-weight: 400\">Spring Data will provide an appropriate implementation of that interface at runtime.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Spring Data for Couchbase, on the other hand, \u00a0is part of the umbrella Spring Data project that is maintained and fully supported by Couchbase to Enterprise subscribers. Spring Data for Couchbase aims to provide a familiar and consistent programming model for new data-stores while retaining store-specific features and capabilities. <\/span><span style=\"font-weight: 400\">With Spring Data Couchbase you get the simplicity of Spring Data combined with the power of Couchbase!.<\/span><\/p>\n<div id=\"update\"><\/div>\n<h3><span style=\"font-weight: 400\">What\u2019s changed in Spring Data Couchbase 4.0<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Spring Data Couchbase 4.0 is built on top of Couchbase Java SDK 3.0.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Couchbase Java SDK 3.0 is a complete rethink of the 2.x API, providing a simpler surface area and adding support for future Couchbase Server features like Collections, Scopes and transactions (available since Couchbase Server 6.5 as a <\/span><a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/concept-docs\/collections.html\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">developer preview<\/span><\/a><span style=\"font-weight: 400\">).\u00a0<\/span><\/p>\n<h4><b>Couchbase Server Version Support<\/b><\/h4>\n<p><span style=\"font-weight: 400\">To stay in accordance with the feature support, the minimum Couchbase Server version requirement has been bumped up to 5.5 and later.\u00a0<\/span><\/p>\n<h4><a href=\"https:\/\/docs.spring.io\/spring-data\/couchbase\/docs\/4.0.0.RELEASE\/reference\/html\/#couchbase.repository.querying\" target=\"_blank\" rel=\"noopener noreferrer\"><b>N1QL for Querying<\/b><\/a><\/h4>\n<p><span style=\"font-weight: 400\">Going forward <\/span><span style=\"font-weight: 400\">N1QL will be the primary implementation<\/span> <span style=\"font-weight: 400\">when it comes to working with custom repository methods as well as the built in ones.\u00a0 Because Spring Data pre-dated N1QL, it used older services by default. If you have used N1QL with Spring Data in the past, <\/span><span style=\"font-weight: 400\">don&#8217;t worry, there are no significant behavioral changes when implementing N1QL queries with Spring Data Couchbase 4.0.<\/span><\/p>\n<h4><a href=\"https:\/\/docs.spring.io\/spring-data\/couchbase\/docs\/4.0.0.RELEASE\/reference\/html\/#couchbase.repository.indexing\" target=\"_blank\" rel=\"noopener noreferrer\"><b>Automatic Index Management<\/b><\/a><\/h4>\n<p><span style=\"font-weight: 400\">Although the concept of Automatic Index Management is not new, index management has been enhanced and is more N1QL centric. While some of the Index annotations like <\/span><span style=\"font-weight: 400\">ViewIndexes are removed <\/span><span style=\"font-weight: 400\">as they stand no more relevance, many new Index annotations are added to the annotations family that will provide enriched capabilities like field level indexing, composite field indexes and more.<\/span><\/p>\n<h4><a href=\"https:\/\/docs.spring.io\/spring-data\/couchbase\/docs\/4.0.0.RELEASE\/reference\/html\/#couchbase.entity\" target=\"_blank\" rel=\"noopener noreferrer\"><b>Entities<\/b><\/a><\/h4>\n<p><span style=\"font-weight: 400\">Nothing has changed when it comes to dealing with entities, however switching between imports has become easier than ever. <\/span><span style=\"font-weight: 400\">Any annotations that were a part of Couchbase SDK 2.x have now been dropped, which also means that developers get to stick to default spring data annotations.<\/span><\/p>\n<h4><a href=\"https:\/\/docs.spring.io\/spring-data\/couchbase\/docs\/4.0.0.RELEASE\/reference\/\/html#couchbase.migrating.template\" target=\"_blank\" rel=\"noopener noreferrer\"><b>Templates<\/b><\/a><\/h4>\n<p><span style=\"font-weight: 400\">ReactiveCouchbaseTemplate and CouchbaseTemplate <\/span><span style=\"font-weight: 400\">have been overhauled in general, moving to a <a href=\"https:\/\/dzone.com\/articles\/java-fluent-api-design\" target=\"_blank\" rel=\"noopener noreferrer\">Fluent API<\/a> instead of method overloads. In addition we moved from RxJava to <a href=\"https:\/\/projectreactor.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Reactor<\/a> for the reactive template which, in turn, provides seamless integration into the spring ecosystem.<\/span><span style=\"font-weight: 400\">Template method names have been generalized for ease of use, and any <\/span><span style=\"font-weight: 400\">view based methods have been removed<\/span><i><span style=\"font-weight: 400\">. <\/span><\/i><span style=\"font-weight: 400\">Also, new methods that leverage Couchbase analytics service and replicas have been introduced.<\/span><\/p>\n<h4><a href=\"https:\/\/docs.spring.io\/spring-data\/couchbase\/docs\/4.0.0.RELEASE\/reference\/\/html\/#couchbase.transactions\" target=\"_blank\" rel=\"noopener noreferrer\"><b>Transactions<\/b><\/a><\/h4>\n<p><span style=\"font-weight: 400\">Developers can now natively use all <\/span><span style=\"font-weight: 400\">transaction<\/span><span style=\"font-weight: 400\"> features that are available to them through Couchbase SDK 3.0. This way developers can have full programmatic control over transactions.<\/span><\/p>\n<h4><a href=\"https:\/\/docs.spring.io\/spring-data\/couchbase\/docs\/4.0.0.RELEASE\/reference\/\/html\/#couchbase.migrating.configuration\" target=\"_blank\" rel=\"noopener noreferrer\"><b>Configuration<\/b><\/a><\/h4>\n<p><span style=\"font-weight: 400\">Previous versions of Spring-Data allowed configurations via both XML and Java-based annotations however, with this release <\/span><span style=\"font-weight: 400\">XML based configuration has been removed. <\/span><b>\u00a0<\/b><\/p>\n<h4><b>Views<\/b><\/h4>\n<p><span style=\"font-weight: 400\">Views existed prior to N1QL came into existence. Spring-Data 3.x emphasized use of View over N1QL for some aspects of the repositories which were then still evolving. <\/span><span style=\"font-weight: 400\">Over the past few years there has been drastic advancement in N1QL with respect to performance, scalability and integration with search capabilities, in order to maximize the benefit out of N1QL, starting in Spring Data 4.0 <\/span><span style=\"font-weight: 400\">support for Views has been removed.<\/span><\/p>\n<h4><b><i>So What&#8217;s Next ?<\/i><\/b><\/h4>\n<p><span style=\"font-weight: 400\">We would love to hear from you on how you liked the 4.0 features and how they will benefit your business going forward. <\/span><span style=\"font-weight: 400\">You can also try some of the examples found <a href=\"https:\/\/github.com\/deniswsrosa\/spring-data-examples\/tree\/boot-next\/couchbase\">here<\/a>.\u00a0Please don&#8217;t forget to <\/span>share your feedback via the comments or in the <a href=\"https:\/\/www.couchbase.com\/forums\/c\/java-sdk\/\">forum<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We are delighted to announce that the eagerly awaited Spring Data Couchbase 4.0 is now available with enhanced capabilities. Built on top of Couchbase Java SDK 3.0, Spring Data Couchbase out-of-the-box comes with technology enhancements and leverages the latest Couchbase [&hellip;]<\/p>\n","protected":false},"author":58641,"featured_media":8098,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2242,1816,2453,1818,1812,2201,2396],"tags":[1465,1595,2221],"ppma_author":[9111],"class_list":["post-8641","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-connectors","category-couchbase-server","category-global-secondary-index","category-java","category-n1ql-query","category-tools-sdks","category-transactions","tag-spring-data","tag-spring-data-couchbase","tag-transactions"],"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>Announcing Spring Data Couchbase 4.0 - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Spring Data Couchbase 4.0 a completely new perspective\" \/>\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\/announcing-spring-data-couchbase-4-0\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Announcing Spring Data Couchbase 4.0\" \/>\n<meta property=\"og:description\" content=\"Spring Data Couchbase 4.0 a completely new perspective\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-12T16:00:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-29T23:23:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/11\/127-hero-clouds-flowers.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"410\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Arun Vijayraghavan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Arun Vijayraghavan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/\"},\"author\":{\"name\":\"Arun Vijayraghavan\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/159f967ae0328d6bd25d6389be35e843\"},\"headline\":\"Announcing Spring Data Couchbase 4.0\",\"datePublished\":\"2020-05-12T16:00:57+00:00\",\"dateModified\":\"2023-08-29T23:23:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/\"},\"wordCount\":1059,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/11\/127-hero-clouds-flowers.jpg\",\"keywords\":[\"spring-data\",\"spring-data-couchbase\",\"transactions\"],\"articleSection\":[\"Connectors\",\"Couchbase Server\",\"Global Secondary Index\",\"Java\",\"SQL++ \/ N1QL Query\",\"Tools &amp; SDKs\",\"Transactions\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/\",\"name\":\"Announcing Spring Data Couchbase 4.0 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/11\/127-hero-clouds-flowers.jpg\",\"datePublished\":\"2020-05-12T16:00:57+00:00\",\"dateModified\":\"2023-08-29T23:23:55+00:00\",\"description\":\"Spring Data Couchbase 4.0 a completely new perspective\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/11\/127-hero-clouds-flowers.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/11\/127-hero-clouds-flowers.jpg\",\"width\":1024,\"height\":410},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Announcing Spring Data Couchbase 4.0\"}]},{\"@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\/159f967ae0328d6bd25d6389be35e843\",\"name\":\"Arun Vijayraghavan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/042b27309bc3f10ef696264d6a250a75\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c4ecf222f7ec7d1f7bb6305543ab979690ed30f98bbc8fa806ffca5bf8cf3dd8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c4ecf222f7ec7d1f7bb6305543ab979690ed30f98bbc8fa806ffca5bf8cf3dd8?s=96&d=mm&r=g\",\"caption\":\"Arun Vijayraghavan\"},\"description\":\"Arun Vijayraghavan is the Principal Product Manager for SDK and Connectors at Couchbase. As a customer obsessed product leader, he strives to shape the future of products, making critical decisions between performance, features, and time-to-market. He has a demonstrated ability and an established track record of over 20 years of providing strategic guidance to companies to launch developer platforms and new products in order to pull together the single vision of maximizing business value of the product. Arun holds dual master degree's in Physics and Information Technology.\",\"sameAs\":[\"https:\/\/www.couchbase.com\",\"https:\/\/www.linkedin.com\/in\/avijayraghavan\/\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/arun-vijayraghavan\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Announcing Spring Data Couchbase 4.0 - The Couchbase Blog","description":"Spring Data Couchbase 4.0 a completely new perspective","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\/announcing-spring-data-couchbase-4-0\/","og_locale":"en_US","og_type":"article","og_title":"Announcing Spring Data Couchbase 4.0","og_description":"Spring Data Couchbase 4.0 a completely new perspective","og_url":"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-05-12T16:00:57+00:00","article_modified_time":"2023-08-29T23:23:55+00:00","og_image":[{"width":1024,"height":410,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/11\/127-hero-clouds-flowers.jpg","type":"image\/jpeg"}],"author":"Arun Vijayraghavan","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Arun Vijayraghavan","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/"},"author":{"name":"Arun Vijayraghavan","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/159f967ae0328d6bd25d6389be35e843"},"headline":"Announcing Spring Data Couchbase 4.0","datePublished":"2020-05-12T16:00:57+00:00","dateModified":"2023-08-29T23:23:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/"},"wordCount":1059,"commentCount":6,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/11\/127-hero-clouds-flowers.jpg","keywords":["spring-data","spring-data-couchbase","transactions"],"articleSection":["Connectors","Couchbase Server","Global Secondary Index","Java","SQL++ \/ N1QL Query","Tools &amp; SDKs","Transactions"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/","url":"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/","name":"Announcing Spring Data Couchbase 4.0 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/11\/127-hero-clouds-flowers.jpg","datePublished":"2020-05-12T16:00:57+00:00","dateModified":"2023-08-29T23:23:55+00:00","description":"Spring Data Couchbase 4.0 a completely new perspective","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/11\/127-hero-clouds-flowers.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/11\/127-hero-clouds-flowers.jpg","width":1024,"height":410},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/announcing-spring-data-couchbase-4-0\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Announcing Spring Data Couchbase 4.0"}]},{"@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\/159f967ae0328d6bd25d6389be35e843","name":"Arun Vijayraghavan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/042b27309bc3f10ef696264d6a250a75","url":"https:\/\/secure.gravatar.com\/avatar\/c4ecf222f7ec7d1f7bb6305543ab979690ed30f98bbc8fa806ffca5bf8cf3dd8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c4ecf222f7ec7d1f7bb6305543ab979690ed30f98bbc8fa806ffca5bf8cf3dd8?s=96&d=mm&r=g","caption":"Arun Vijayraghavan"},"description":"Arun Vijayraghavan is the Principal Product Manager for SDK and Connectors at Couchbase. As a customer obsessed product leader, he strives to shape the future of products, making critical decisions between performance, features, and time-to-market. He has a demonstrated ability and an established track record of over 20 years of providing strategic guidance to companies to launch developer platforms and new products in order to pull together the single vision of maximizing business value of the product. Arun holds dual master degree's in Physics and Information Technology.","sameAs":["https:\/\/www.couchbase.com","https:\/\/www.linkedin.com\/in\/avijayraghavan\/"],"url":"https:\/\/www.couchbase.com\/blog\/author\/arun-vijayraghavan\/"}]}},"authors":[{"term_id":9111,"user_id":58641,"is_guest":0,"slug":"arun-vijayraghavan","display_name":"Arun Vijayraghavan","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/c4ecf222f7ec7d1f7bb6305543ab979690ed30f98bbc8fa806ffca5bf8cf3dd8?s=96&d=mm&r=g","author_category":"","last_name":"Vijayraghavan","first_name":"Arun","job_title":"","user_url":"https:\/\/www.couchbase.com","description":"Arun Vijayraghavan is the Principal Product Manager for SDK and Connectors at Couchbase. As a customer obsessed product leader, he strives to shape the future of products, making critical decisions between performance, features, and time-to-market. He has a demonstrated ability and an established track record of over 20 years of providing strategic guidance to companies to launch developer platforms and new products in order to pull together the single vision of maximizing business value of the product. Arun holds dual master degree's in Physics and Information Technology."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/8641","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\/58641"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=8641"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/8641\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/8098"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=8641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=8641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=8641"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=8641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}