{"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\/pt\/intro-spring-data-couchbase\/","title":{"rendered":"Uma introdu\u00e7\u00e3o ao Spring Data Couchbase"},"content":{"rendered":"<h1 id=\"anintrotospringdatacouchbase\">Uma introdu\u00e7\u00e3o ao Spring Data Couchbase<\/h1>\n<p>No momento, estou tentando entender quem \u00e9 a comunidade do Couchbase, incluindo quantas pessoas leem essas postagens do blos, nos seguem em nossas p\u00e1ginas de redes sociais, fazem perguntas em nosso f\u00f3rum, em nossas listas de discuss\u00e3o etc. \u00c9 claro que preciso armazenar todos esses dados de s\u00e9rie temporal em algum lugar.<\/p>\n<p>Voc\u00ea adivinhou: Vou escrever sobre o armazenamento de m\u00e9tricas baseadas em tempo no Couchbase. Usarei Java e Spring para fazer isso, porque h\u00e1 um projeto muito legal chamado <a href=\"https:\/\/projects.spring.io\/spring-data-couchbase\/\">base de dados de mola<\/a> que facilitar\u00e1 muito as coisas para mim. Portanto, em tr\u00eas publica\u00e7\u00f5es do blog, explicarei como fiz isso.<\/p>\n<p>Primeiro, algumas palavras sobre <a href=\"https:\/\/docs.spring.io\/spring\/docs\/current\/spring-framework-reference\/html\/overview.html\">Primavera<\/a>. Em seu pr\u00f3prio site:<\/p>\n<blockquote><p>O Spring Framework \u00e9 uma plataforma Java que oferece suporte abrangente \u00e0 infraestrutura para o desenvolvimento de aplicativos Java. O Spring cuida da infraestrutura para que voc\u00ea possa se concentrar no seu aplicativo.<\/p><\/blockquote>\n<p>Pode-se dizer que seu objetivo \u00e9 que voc\u00ea escreva principalmente c\u00f3digo comercial e se concentre no que deseja fazer, em vez de escrever c\u00f3digo de infraestrutura e se concentrar em como fazer isso. Uma coisa boa \u00e9 que voc\u00ea n\u00e3o precisa comprar a plataforma inteira. O Spring \u00e9 composto de muitos m\u00f3dulos diferentes. Voc\u00ea pode escolher o que deseja usar. A intera\u00e7\u00e3o entre esses m\u00f3dulos e o seu c\u00f3digo \u00e9 orientada principalmente pela Invers\u00e3o de Controle, tamb\u00e9m chamada de <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/dependency-injection-aspnet-couchbase\/\">Inje\u00e7\u00e3o de depend\u00eancia<\/a>Mais sobre isso depois.<\/p>\n<p>Se voc\u00ea n\u00e3o estiver familiarizado com o Spring, convido-o a dar uma olhada no <a href=\"https:\/\/spring.io\/projects\">P\u00e1gina de projetos de primavera<\/a> para obter uma vis\u00e3o geral r\u00e1pida de todos os t\u00f3picos abordados. Agora vamos come\u00e7ar.<\/p>\n<h2 id=\"boot-strappingdependencies\">Depend\u00eancias de boot-strapping<\/h2>\n<p>Primeiro, preciso inicializar meu projeto com as depend\u00eancias apropriadas. Como estou usando o Spring, \u00e9 melhor usar o Spring Boot para fazer isso. Ele fornece uma maneira opinativa de criar aplicativos Spring, assume v\u00e1rias op\u00e7\u00f5es e favorece a conven\u00e7\u00e3o em vez da configura\u00e7\u00e3o. Isso \u00e9 perfeito para o pequeno projeto que estou escrevendo.<\/p>\n<p>A primeira etapa para iniciar um novo projeto do Spring Boot seria ir para <a href=\"https:\/\/start.spring.io\/\">start.spring.io<\/a>. \u00c9 um assistente que permite que voc\u00ea escolha as depend\u00eancias com as quais deseja iniciar o projeto. O problema \u00e9 que, no momento, n\u00e3o h\u00e1 possibilidade de escolher o spring-data-couchbase. Por isso, acabei fazendo meu pr\u00f3prio arquivo pom. \u00c9 muito simples:<\/p>\n<p>Voc\u00ea pode ver que estou usando os projetos spring-boot-starter-social-facebook e spring-social-twitter. Os projetos sociais do Spring est\u00e3o aqui para ajud\u00e1-lo a se conectar a provedores de API SaaS como Facebook, Twitter, Linkedin etc. Os projetos spring-boot-starter-* podem ser vistos como um POM de bootstrap que vem com as depend\u00eancias apropriadas.<\/p>\n<p>E se voc\u00ea quiser uma entrada para o spring-boot-starter-data-couchbase no site start.spring.io, entre em contato com o nosso <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/\">f\u00f3rum<\/a> ou comentando esta postagem.<\/p>\n<h2 id=\"configuration\">Configura\u00e7\u00e3o<\/h2>\n<p>N\u00e3o uso o Spring h\u00e1 muito tempo e tinha em mente que toda a configura\u00e7\u00e3o significava lidar com tediosos arquivos XML. Estou feliz por ter descoberto que as coisas mudaram e agora voc\u00ea pode declarar a configura\u00e7\u00e3o somente com anota\u00e7\u00f5es. Muito bom!<\/p>\n<p>Agora que as depend\u00eancias est\u00e3o todas definidas, vamos escrever algum c\u00f3digo! Vamos come\u00e7ar criando uma classe Application que estende a classe AbstractCouchbaseConfiguration.<\/p>\n<p>Voc\u00ea pode ver que implementei tr\u00eas m\u00e9todos, todos necess\u00e1rios para configurar uma conex\u00e3o de cliente do Couchbase com um bucket. Eles fornecem uma lista de URIs para os n\u00f3s do cluster, o nome e a senha do bucket.<\/p>\n<p>Para evitar a codifica\u00e7\u00e3o desses valores na classe Java, criei um arquivo application.properties na pasta resources. Seus valores s\u00e3o automaticamente coletados pelo Spring gra\u00e7as \u00e0 anota\u00e7\u00e3o @Value. Preste aten\u00e7\u00e3o ao sinal '$' usado para recuperar valores de um arquivo de propriedades. O sinal '#' seria usado para avaliar a EL tradicional.<\/p>\n<p>Certifique-se de que as anota\u00e7\u00f5es @Configuration e @EnableAutoConfiguration estejam presentes, pois elas s\u00e3o necess\u00e1rias em tempo de execu\u00e7\u00e3o. A primeira garante que os beans que voc\u00ea declarou nessa classe ser\u00e3o escolhidos pelo Spring. A segunda fornece um contexto de aplicativo configurado automaticamente para garantir que voc\u00ea possa executar o SpringApplication.<\/p>\n<h2 id=\"awordaboutiocandabstractcouchbaseconfiguration\">Uma palavra sobre IoC e configura\u00e7\u00e3o abstrata do Couchbase<\/h2>\n<p>Um dos principais paradigmas dispon\u00edveis no Spring \u00e9 o IoC(<a href=\"https:\/\/en.wikipedia.org\/wiki\/Inversion_of_control\">Invers\u00e3o de controle<\/a>). Ele permite que voc\u00ea injete objetos. Isso significa que a instancia\u00e7\u00e3o do objeto foi feita para voc\u00ea. A classe AbstractCouchbaseConfiguration que estendemos define alguns Beans que podem ser injetados em qualquer lugar do aplicativo.<\/p>\n<p>Agora, d\u00ea uma olhada no m\u00e9todo commandLineRunner. Ele \u00e9 anotado com @Bean e retorna uma inst\u00e2ncia do CommandLineRunner (sim, \u00e9 uma classe an\u00f4nima, mas usa a express\u00e3o Lambda, obrigado, Java8). Isso significa que esse CommandLineRunner ser\u00e1 capturado pelo Spring Framework. Seu c\u00f3digo ser\u00e1 executado pela chamada SpringApplication.run no m\u00e9todo principal. E como se trata de um Spring Bean, a IoC funciona imediatamente e o bean CouchbaseClient ser\u00e1 injetado automaticamente. Voc\u00ea s\u00f3 precisa pass\u00e1-lo como um par\u00e2metro de m\u00e9todo.<\/p>\n<h2 id=\"makingsureitworks\">Garantir que funcione<\/h2>\n<p>Apenas para garantir que a configura\u00e7\u00e3o funcione e que tudo esteja bem, criarei um objeto JSON simples, armazen\u00e1-lo-ei no Couchbase, recuper\u00e1-lo-ei do Couchbase e, em seguida, registrarei o log.<\/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>S\u00e3o apenas essas quatro linhas de c\u00f3digo que voc\u00ea v\u00ea no arquivo <a href=\"https:\/\/docs.spring.io\/spring-boot\/docs\/current\/reference\/htmlsingle\/#boot-features-command-line-runner\">CommandLineRunner<\/a>. Agora tudo deve funcionar. Se eu acessar a interface de administra\u00e7\u00e3o da Web do Couchbase, poderei ver o documento no bucket padr\u00e3o.<\/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>Agora sei como inicializar um projeto do Spring, configurar uma conex\u00e3o com o Couchbase e armazenar objetos no Couchbase. Estou pronto para usar os conectores sociais do Spring e armazenar minhas m\u00e9tricas. E isso fica para a pr\u00f3xima postagem do blog. N\u00e3o hesite em comentar e compartilhar este post :)<\/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 v25.9 (Yoast SEO v25.9) - 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\/pt\/intro-spring-data-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\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\/pt\/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\":\"pt-BR\",\"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\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\",\"@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\/pt\/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\/pt\/intro-spring-data-couchbase\/","og_locale":"pt_BR","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\/pt\/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":"pt-BR","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":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@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":"Blog do Couchbase","description":"Couchbase, o banco de dados 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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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":"pt-BR","@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 \u00e9 um nerd metaleiro que mora em Paris. Em sua maior parte, ele escreve c\u00f3digo em Java e texto estruturado em AsciiDoc, e frequentemente fala sobre dados, programa\u00e7\u00e3o reativa e outras coisas que est\u00e3o na moda. Ele tamb\u00e9m foi Developer Advocate do Clever Cloud e do Nuxeo, onde dedicou seu tempo e experi\u00eancia para ajudar essas comunidades a crescerem e se fortalecerem. Atualmente, ele dirige as Rela\u00e7\u00f5es com Desenvolvedores na 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\/pt\/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 \u00e9 um nerd metaleiro que mora em Paris. Em sua maior parte, ele escreve c\u00f3digo em Java e texto estruturado em AsciiDoc, e frequentemente fala sobre dados, programa\u00e7\u00e3o reativa e outras coisas que est\u00e3o na moda. Ele tamb\u00e9m foi Developer Advocate do Clever Cloud e do Nuxeo, onde dedicou seu tempo e experi\u00eancia para ajudar essas comunidades a crescerem e se fortalecerem. Atualmente, ele dirige as Rela\u00e7\u00f5es com Desenvolvedores na Couchbase."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1875","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/49"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=1875"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1875\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=1875"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=1875"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=1875"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=1875"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}