{"id":1875,"date":"2015-01-30T16:35:01","date_gmt":"2015-01-30T16:35:01","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1875"},"modified":"2023-10-05T11:30:31","modified_gmt":"2023-10-05T18:30:31","slug":"intro-spring-data-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/intro-spring-data-couchbase\/","title":{"rendered":"Introducci\u00f3n a Spring Data Couchbase"},"content":{"rendered":"<h1 id=\"anintrotospringdatacouchbase\">Introducci\u00f3n a Spring Data Couchbase<\/h1>\n<p>En este momento estoy tratando de obtener una comprensi\u00f3n de qui\u00e9n es la comunidad Couchbase, incluyendo cu\u00e1ntas personas leen estos posts blos, nos siguen en nuestras p\u00e1ginas de redes sociales, hacen preguntas en nuestro foro, nuestras listas de correo,etc. Por supuesto, necesito almacenar todos estos datos de series temporales en alg\u00fan lugar.<\/p>\n<p>Lo has adivinado: Voy a escribir sobre el almacenamiento de m\u00e9tricas basadas en el tiempo en Couchbase. Voy a usar Java y Spring para hacerlo, porque hay un proyecto bastante chulo llamado <a href=\"https:\/\/projects.spring.io\/spring-data-couchbase\/\">spring-data-couchbase<\/a> que me va a facilitar mucho las cosas. As\u00ed que, a lo largo de tres entradas de blog explicar\u00e9 c\u00f3mo lo he hecho.<\/p>\n<p>En primer lugar, unas palabras sobre <a href=\"https:\/\/docs.spring.io\/spring\/docs\/current\/spring-framework-reference\/html\/overview.html\">Primavera<\/a>. De su propio sitio web:<\/p>\n<blockquote><p>Spring Framework es una plataforma Java que proporciona un completo soporte de infraestructura para el desarrollo de aplicaciones Java. Spring se encarga de la infraestructura para que usted pueda centrarse en su aplicaci\u00f3n.<\/p><\/blockquote>\n<p>Se podr\u00eda decir que su prop\u00f3sito es que escribas sobre todo c\u00f3digo de negocio y te centres en lo que quieres hacer, en lugar de escribir c\u00f3digo de infraestructura y centrarte en c\u00f3mo hacerlo. Lo bueno es que no tienes que comprar toda la plataforma. Spring se compone de muchos m\u00f3dulos diferentes. Puedes elegir el que quieras utilizar. La interacci\u00f3n entre estos m\u00f3dulos y tu c\u00f3digo se basa principalmente en la Inversi\u00f3n de Control, tambi\u00e9n llamada <a href=\"https:\/\/www.couchbase.com\/blog\/es\/dependency-injection-aspnet-couchbase\/\">Inyecci\u00f3n de dependencia<\/a>m\u00e1s adelante.<\/p>\n<p>Si no est\u00e1 familiarizado con Spring, le invito a que consulte la p\u00e1gina <a href=\"https:\/\/spring.io\/projects\">P\u00e1gina de proyectos de primavera<\/a> para obtener una r\u00e1pida visi\u00f3n general de todos los temas que abordan. Empecemos.<\/p>\n<h2 id=\"boot-strappingdependencies\">Dependencias de arranque<\/h2>\n<p>Primero necesito arrancar mi proyecto con las dependencias apropiadas. Ya que estoy usando Spring, podr\u00eda usar Spring Boot para hacerlo. Proporciona una forma opinada de construir aplicaciones Spring, asume varias opciones y favorece la convenci\u00f3n sobre la configuraci\u00f3n. Esto es perfecto para el peque\u00f1o proyecto que estoy escribiendo.<\/p>\n<p>El primer paso para iniciar un nuevo proyecto Spring Boot ser\u00eda ir a <a href=\"https:\/\/start.spring.io\/\">inicio.spring.io<\/a>. Es un asistente que te permite elegir las dependencias con las que quieres empezar tu proyecto. El caso es que ahora mismo no hay posibilidad de elegir spring-data-couchbase. As\u00ed que acab\u00e9 haciendo mi propio archivo pom. Es muy sencillo:<\/p>\n<p>Puedes ver que estoy utilizando los proyectos spring-boot-starter-social-facebook y spring-social-twitter. Los proyectos sociales de Spring est\u00e1n aqu\u00ed para ayudarte a conectar con proveedores de API SaaS como Facebook, Twitter, Linkedin, etc. Los proyectos spring-boot-starter-* se pueden ver como un bootstrap POM que viene con las dependencias apropiadas.<\/p>\n<p>Y si desea una entrada spring-boot-starter-data-couchbase en el sitio start.spring.io por favor hable en nuestro <a href=\"https:\/\/www.couchbase.com\/blog\/es\/forums\/\">foro<\/a> o comentando este post.<\/p>\n<h2 id=\"configuration\">Configuraci\u00f3n<\/h2>\n<p>Hac\u00eda tiempo que no usaba Spring y ten\u00eda en mente que toda la configuraci\u00f3n significaba lidiar con tediosos archivos XML. Me alegro de haber descubierto que las cosas han cambiado y ahora se puede declarar la configuraci\u00f3n s\u00f3lo con anotaciones. \u00a1Yupi!<\/p>\n<p>Ahora que las dependencias est\u00e1n listas, \u00a1escribamos algo de c\u00f3digo! Empecemos creando una clase Application que extienda la clase AbstractCouchbaseConfiguration.<\/p>\n<p>Puedes ver que implemento tres m\u00e9todos, todos necesarios para configurar la conexi\u00f3n de un cliente Couchbase a un bucket. Proporcionan una lista de URIs para los nodos del cluster, el nombre y la contrase\u00f1a del bucket.<\/p>\n<p>Para evitar la codificaci\u00f3n de estos valores en la clase Java, he creado un archivo application.properties en la carpeta resources. Sus valores son recogidos autom\u00e1ticamente por Spring gracias a la anotaci\u00f3n @Value. Presta atenci\u00f3n al signo '$' utilizado para recuperar valores de un archivo de propiedades. El signo '#' se utilizar\u00eda para evaluar el EL tradicional.<\/p>\n<p>Aseg\u00farate de que las anotaciones @Configuration y @EnableAutoConfiguration est\u00e1n presentes ya que son necesarias en tiempo de ejecuci\u00f3n. La primera asegura que los beans declarados en esta clase ser\u00e1n seleccionados por Spring. La segunda te proporciona un contexto de aplicaci\u00f3n configurado autom\u00e1ticamente para asegurarte de que puedes ejecutar la aplicaci\u00f3n Spring.<\/p>\n<h2 id=\"awordaboutiocandabstractcouchbaseconfiguration\">Unas palabras sobre IoC y la configuraci\u00f3n abstracta de Couchbase<\/h2>\n<p>Uno de los principales paradigmas disponibles con Spring es IoC(<a href=\"https:\/\/en.wikipedia.org\/wiki\/Inversion_of_control\">Inversi\u00f3n del control<\/a>). Le permite inyectar objetos. Esto significa que la instanciaci\u00f3n del objeto se ha hecho por ti. La clase AbstractCouchbaseConfiguration que extendemos define algunos Beans que pueden ser inyectados en cualquier parte de la aplicaci\u00f3n.<\/p>\n<p>Ahora echa un vistazo al m\u00e9todo commandLineRunner. Est\u00e1 anotado con @Bean y devuelve una instancia de CommandLineRunner (s\u00ed, es una clase an\u00f3nima pero utiliza la expresi\u00f3n Lambda, gracias Java8). Esto significa que este CommandLineRunner ser\u00e1 recogido por el Spring Framework. Su c\u00f3digo ser\u00e1 ejecutado por la llamada SpringApplication.run en el m\u00e9todo main. Y como es un Spring Bean, IoC funciona a la perfecci\u00f3n y el bean CouchbaseClient ser\u00e1 inyectado autom\u00e1ticamente. S\u00f3lo tienes que pasarlo como par\u00e1metro del m\u00e9todo.<\/p>\n<h2 id=\"makingsureitworks\">Asegurarse de que funciona<\/h2>\n<p>S\u00f3lo para asegurarme de que la configuraci\u00f3n funciona y de que todo est\u00e1 bien, crear\u00e9 un simple objeto JSON, lo almacenar\u00e9 en Couchbase, lo recuperar\u00e9 de Couchbase y luego lo registrar\u00e9.<\/p>\n<pre><code>\r\n    public static void main(String[] args) {\r\n        ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args);\r\n        ctx.close();\r\n    }\r\n\r\n    @Bean\r\n    CommandLineRunner commandLineRunner(CouchbaseClient couchbaseClient) {\r\n        return args -&gt; {\r\n            twitterService.update(\"Couchbase\");\r\n            couchbaseClient.add(\"aKey\", \"{'json':'object'}\");\r\n            Object aKey = couchbaseClient().get(\"aKey\");\r\n            log.info(aKey);\r\n        };\r\n    }\r\n<\/code><\/pre>\n<p>Son s\u00f3lo esas cuatro l\u00edneas de c\u00f3digo que se ven en la p\u00e1gina <a href=\"https:\/\/docs.spring.io\/spring-boot\/docs\/current\/reference\/htmlsingle\/#boot-features-command-line-runner\">CommandLineRunner<\/a>. Ahora todo deber\u00eda funcionar. Si voy a la interfaz de administraci\u00f3n web de Couchbase, puedo ver el documento en el bucket por defecto.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/ldoguin\/ldoguin.name\/gh-pages\/images\/documents.png\" width=\"624\" height=\"118\" \/><\/p>\n<p>Ahora s\u00e9 c\u00f3mo arrancar un proyecto Spring, configurar una conexi\u00f3n Couchbase y almacenar objetos en Couchbase. Estoy listo para usar los conectores sociales de Spring y almacenar mis m\u00e9tricas. Y eso para la pr\u00f3xima entrada del blog. No dudes en comentar y compartir este :)<\/p>","protected":false},"excerpt":{"rendered":"<p>An Intro to Spring Data Couchbase Right now I am trying to get an understanding of who is the Couchbase community, including how many people read these blos posts, follow us on our social network pages, ask questions on our [&hellip;]<\/p>","protected":false},"author":49,"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":[1424],"ppma_author":[9023],"class_list":["post-1875","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-spring"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>An Intro to Spring Data Couchbase - 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\/es\/intro-spring-data-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An Intro to Spring Data Couchbase\" \/>\n<meta property=\"og:description\" content=\"An Intro to Spring Data Couchbase Right now I am trying to get an understanding of who is the Couchbase community, including how many people read these blos posts, follow us on our social network pages, ask questions on our [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/intro-spring-data-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-01-30T16:35:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-05T18:30:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/raw.githubusercontent.com\/ldoguin\/ldoguin.name\/gh-pages\/images\/documents.png\" \/>\n<meta name=\"author\" content=\"Laurent Doguin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ldoguin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"unstructured.io\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/\"},\"author\":{\"name\":\"Laurent Doguin\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c0aa9b8f1ed51b7a9e2f7cb755994a5e\"},\"headline\":\"An Intro to Spring Data Couchbase\",\"datePublished\":\"2015-01-30T16:35:01+00:00\",\"dateModified\":\"2023-10-05T18:30:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/\"},\"wordCount\":939,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"spring\"],\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/\",\"name\":\"An Intro to Spring Data Couchbase - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-01-30T16:35:01+00:00\",\"dateModified\":\"2023-10-05T18:30:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#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\/intro-spring-data-couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"An Intro to Spring Data Couchbase\"}]},{\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\/c0aa9b8f1ed51b7a9e2f7cb755994a5e\",\"name\":\"Laurent Doguin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/12929ce99397769f362b7a90d6b85071\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g\",\"caption\":\"Laurent Doguin\"},\"description\":\"Laurent is a nerdy metal head who lives in Paris. He mostly writes code in Java and structured text in AsciiDoc, and often talks about data, reactive programming and other buzzwordy stuff. He is also a former Developer Advocate for Clever Cloud and Nuxeo where he devoted his time and expertise to helping those communities grow bigger and stronger. He now runs Developer Relations at Couchbase.\",\"sameAs\":[\"https:\/\/x.com\/ldoguin\"],\"honorificPrefix\":\"Mr\",\"birthDate\":\"1985-06-07\",\"gender\":\"male\",\"award\":[\"Devoxx Champion\",\"Couchbase Legend\"],\"knowsAbout\":[\"Java\"],\"knowsLanguage\":[\"English\",\"French\"],\"jobTitle\":\"Director Developer Relation & Strategy\",\"worksFor\":\"Couchbase\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/laurent-doguin\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"An Intro to Spring Data Couchbase - 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\/es\/intro-spring-data-couchbase\/","og_locale":"es_MX","og_type":"article","og_title":"An Intro to Spring Data Couchbase","og_description":"An Intro to Spring Data Couchbase Right now I am trying to get an understanding of who is the Couchbase community, including how many people read these blos posts, follow us on our social network pages, ask questions on our [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/intro-spring-data-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-01-30T16:35:01+00:00","article_modified_time":"2023-10-05T18:30:31+00:00","og_image":[{"url":"https:\/\/raw.githubusercontent.com\/ldoguin\/ldoguin.name\/gh-pages\/images\/documents.png","type":"","width":"","height":""}],"author":"Laurent Doguin","twitter_card":"summary_large_image","twitter_creator":"@ldoguin","twitter_misc":{"Written by":"unstructured.io","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/"},"author":{"name":"Laurent Doguin","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c0aa9b8f1ed51b7a9e2f7cb755994a5e"},"headline":"An Intro to Spring Data Couchbase","datePublished":"2015-01-30T16:35:01+00:00","dateModified":"2023-10-05T18:30:31+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/"},"wordCount":939,"commentCount":3,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["spring"],"articleSection":["Uncategorized"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/","name":"An Intro to Spring Data Couchbase - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-01-30T16:35:01+00:00","dateModified":"2023-10-05T18:30:31+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#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\/intro-spring-data-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"An Intro to Spring Data Couchbase"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","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":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@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\/c0aa9b8f1ed51b7a9e2f7cb755994a5e","name":"Laurent Doguin","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/12929ce99397769f362b7a90d6b85071","url":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","caption":"Laurent Doguin"},"description":"Laurent es un metalero empoll\u00f3n que vive en Par\u00eds. Principalmente escribe c\u00f3digo en Java y texto estructurado en AsciiDoc, y a menudo habla sobre datos, programaci\u00f3n reactiva y otras cosas de moda. Tambi\u00e9n fue Developer Advocate de Clever Cloud y Nuxeo, donde dedic\u00f3 su tiempo y experiencia a ayudar a esas comunidades a crecer y fortalecerse. Ahora dirige las relaciones con los desarrolladores en Couchbase.","sameAs":["https:\/\/x.com\/ldoguin"],"honorificPrefix":"Mr","birthDate":"1985-06-07","gender":"male","award":["Devoxx Champion","Couchbase Legend"],"knowsAbout":["Java"],"knowsLanguage":["English","French"],"jobTitle":"Director Developer Relation & Strategy","worksFor":"Couchbase","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/laurent-doguin\/"}]}},"authors":[{"term_id":9023,"user_id":49,"is_guest":0,"slug":"laurent-doguin","display_name":"Laurent Doguin","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","author_category":"","last_name":"Doguin","first_name":"Laurent","job_title":"","user_url":"","description":"Laurent es un metalero empoll\u00f3n que vive en Par\u00eds. Principalmente escribe c\u00f3digo en Java y texto estructurado en AsciiDoc, y a menudo habla sobre datos, programaci\u00f3n reactiva y otras cosas de moda. Tambi\u00e9n fue Developer Advocate de Clever Cloud y Nuxeo, donde dedic\u00f3 su tiempo y experiencia a ayudar a esas comunidades a crecer y fortalecerse. Ahora dirige las relaciones con los desarrolladores en Couchbase."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1875","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/49"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=1875"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1875\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=1875"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=1875"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=1875"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=1875"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}