{"id":1866,"date":"2015-01-28T09:12:42","date_gmt":"2015-01-28T09:12:42","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1866"},"modified":"2025-06-13T23:49:52","modified_gmt":"2025-06-14T06:49:52","slug":"n1ql-dp4-java-sdk","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/n1ql-dp4-java-sdk\/","title":{"rendered":"Visualiza\u00e7\u00e3o usando o N1QL DP4 do Java SDK"},"content":{"rendered":"<p>Como alguns de voc\u00eas devem saber, a equipe de consulta do Couchbase tem trabalhado arduamente em um recurso novo e interessante, <a href=\"https:\/\/query.couchbase.com\/\">N1QL<\/a>que traz o poder das linguagens de consulta (como SQL) para o Couchbase.<\/p>\n<p>Eles acabaram de lan\u00e7ar o Developer Preview 4 do N1QL (consulte a <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/n1ql-dp4-is-here\/\">postagem no blog aqui<\/a>), com uma s\u00e9rie de melhorias, APIs REST, etc...<\/p>\n<p>Temos o prazer de anunciar que j\u00e1 est\u00e1 dispon\u00edvel uma Developer Preview do Java SDK compat\u00edvel com o N1QL DP4. O gerenciamento de consultas passou por uma s\u00e9rie de altera\u00e7\u00f5es nesta vers\u00e3o, que reflete melhor o estado em que estar\u00e1 na vers\u00e3o 2.1 (quando o N1QL tamb\u00e9m dever\u00e1 ganhar estabilidade de disponibilidade geral).<\/p>\n<h2>Como obter o c\u00f3digo e usar o recurso<\/h2>\n<p>Para obter o N1QL e ativ\u00e1-lo, <strong>consulte o <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/index.html\">documenta\u00e7\u00e3o de introdu\u00e7\u00e3o<\/a><\/strong>! Existem etapas espec\u00edficas para ativar a indexa\u00e7\u00e3o N1QL em seus buckets.<\/p>\n<p><b>ATUALIZA\u00c7\u00c3O:\u00a0<\/b>Uma segunda pr\u00e9via do SDK para desenvolvedores foi lan\u00e7ada, o pom e os links abaixo foram atualizados de acordo. Role at\u00e9 o final para ver as altera\u00e7\u00f5es...<\/p>\n<p>Para obter o c\u00f3digo para essa Developer Preview, use o seguinte snippet em seu Maven <code>pom.xml<\/code> ou fa\u00e7a o download do <a href=\"https:\/\/files.couchbase.com\/maven2\/com\/couchbase\/client\/core-io\/1.1.0-dp2\/core-io-1.1.0-dp2.jar\">n\u00facleo-io<\/a> e <a href=\"https:\/\/files.couchbase.com\/maven2\/com\/couchbase\/client\/java-client\/2.1.0-dp2\/java-client-2.1.0-dp2.jar\">cliente java<\/a> jarros diretamente.<\/p>\n<hr \/>\n<pre><code>\r\n    \r\n        com.couchbase.client\r\n        java-client\r\n        2.1.0-dp2\r\n    \r\n\r\n\r\n\r\n    \r\n        couchbase\r\n        couchbase repo\r\n        https:\/\/files.couchbase.com\/maven2\r\n        false\r\n    \r\n\r\n<\/code><\/pre>\n<hr \/>\n<p>Como esse \u00e9 um recurso experimental, voc\u00ea precisa ativ\u00e1-lo explicitamente no SDK. Isso pode ser feito de duas maneiras: passando <code>-Dcom.couchbase.queryEnabled=true<\/code> como um par\u00e2metro da JVM ou usando <code>Ambiente principal<\/code> ao inicializar o <code>Aglomerado<\/code> em c\u00f3digo:<\/p>\n<p>Para reproduzir os exemplos deste blog (<em>que se baseiam uns nos outros, ou seja, copie todos os trechos em uma classe Java para obter um exemplo funcional completo<\/em>), voc\u00ea tamb\u00e9m pode usar o c\u00f3digo abaixo para gerar dois documentos que podem ser consultados:<\/p>\n<h2>O que mudou desde a vers\u00e3o 2.0.3 \/ N1QL DP3?<\/h2>\n<p>As altera\u00e7\u00f5es mais not\u00e1veis est\u00e3o descritas abaixo.<\/p>\n<h3><code>Consulta<\/code> interface renomeada para <code>Declara\u00e7\u00e3o<\/code><\/h3>\n<p>No N1QL, uma consulta completa \u00e9 composta, no m\u00ednimo, de uma Declara\u00e7\u00e3o (por exemplo. <code>SELECT * FROM default<\/code>), mas tamb\u00e9m pode ter valores posicionais\/nomeados e par\u00e2metros de solicita\u00e7\u00e3o adicionais (como tempos limite do lado do servidor, consist\u00eancia da varredura, etc.).<\/p>\n<p>O <code>Consulta<\/code> nas vers\u00f5es anteriores representava apenas esse componente de declara\u00e7\u00e3o e, portanto, foi renomeada para <code>Declara\u00e7\u00e3o<\/code>.<\/p>\n<h3><code>Consulta<\/code> hierarquia de classes introduzida<\/h3>\n<p><code>Consulta<\/code> foi de fato mantido, mas para representar a consulta N1QL inteira. Uma hierarquia de classes foi introduzida, representando consultas desde as mais simples (uma \u00fanica instru\u00e7\u00e3o, <code>SimplesQuery<\/code>) a outros mais avan\u00e7ados (<code>Consulta Parametrizada<\/code>, <code>Consulta Preparada<\/code>).<\/p>\n<p>As consultas podem ser criadas por meio de m\u00e9todos de f\u00e1brica no <code>Consulta<\/code> classe abstrata.<\/p>\n<p>\u00c9 poss\u00edvel emitir consultas com instru\u00e7\u00f5es avan\u00e7adas n\u00e3o cobertas pela DSL usando os m\u00e9todos que recebem uma String como instru\u00e7\u00e3o, por exemplo, para garantir que haja um \u00edndice N1QL em nosso bucket de destino:<\/p>\n<h3>Par\u00e2metros para declara\u00e7\u00f5es e consultas<\/h3>\n<p>O DP4 introduz o conceito de declara\u00e7\u00f5es parametrizadas. Essas declara\u00e7\u00f5es t\u00eam espa\u00e7os reservados que podem ser preenchidos pelo servidor passando seus valores na consulta. Os espa\u00e7os reservados s\u00e3o nomeados (com a tag <code>$name<\/code> ) ou posicional (com o formato <code>$1<\/code> formato).<\/p>\n<p>Essas consultas s\u00e3o representadas por um <code>Consulta Parametrizada<\/code>assumindo valores na forma de a <code>JsonObject<\/code> de pares nome-valor para placeholders nomeados ou <code>JsonArray<\/code> de valores para placeholders posicionais. <strong>Observa\u00e7\u00e3o:<\/strong> <em>Atualmente, h\u00e1 um bug no N1QL DP4 que impede que os par\u00e2metros nomeados funcionem; em vez disso, use par\u00e2metros posicionais.<\/em><\/p>\n<p>Al\u00e9m disso, <code>QueryParams<\/code> descreve todos os par\u00e2metros de consulta restantes que s\u00e3o compat\u00edveis com o SDK: ID de contexto do cliente, tempos limite do lado do servidor, consist\u00eancias de varredura. Eles podem ser adicionados a qualquer solicita\u00e7\u00e3o usando a fun\u00e7\u00e3o ad-hoc <code>Consulta<\/code> m\u00e9todo de f\u00e1brica.<\/p>\n<h3>Declara\u00e7\u00f5es preparadas<\/h3>\n<p>Outro grande recurso novo do N1QL DP4 \u00e9 a introdu\u00e7\u00e3o de instru\u00e7\u00f5es preparadas. Esses comandos s\u00e3o criados em duas etapas: - analisar a instru\u00e7\u00e3o e produzir um plano de consulta. - executar o plano de consulta e retornar os resultados.<\/p>\n<p>A etapa de prepara\u00e7\u00e3o, que retorna um plano de consulta, pode ser ignorada ap\u00f3s a primeira ocorr\u00eancia, desde que o plano tenha sido armazenado em cache em algum lugar pelo usu\u00e1rio. Isso permite que o servidor pule uma etapa, o que representa um ganho de tempo.<\/p>\n<p>A <code>Plano de consulta<\/code> pode ser obtido do servidor chamando <code>Bucket.prepare(s)<\/code>, <strong>s<\/strong> sendo qualquer <code>Declara\u00e7\u00e3o<\/code>. Esse objeto pode ser armazenado em cache e reutilizado v\u00e1rias vezes posteriormente.<\/p>\n<p>Para executar um plano, use <code>Bucket.query(Query.prepared(plan))<\/code>. Observe que o <code>preparado<\/code> O m\u00e9todo de f\u00e1brica tamb\u00e9m pode aceitar par\u00e2metros de consulta e valores de espa\u00e7o reservado (desde que a declara\u00e7\u00e3o original tenha os espa\u00e7os reservados correspondentes).<\/p>\n<h3>Altera\u00e7\u00f5es no formato dos resultados<\/h3>\n<p>O DP4 introduziu v\u00e1rias altera\u00e7\u00f5es no formato da resposta do servidor, que foram refletidas no SDK, em <code>Resultado de consulta ass\u00edncrona<\/code> (a vers\u00e3o s\u00edncrona <code>Resultado da consulta<\/code> tem altera\u00e7\u00f5es semelhantes):<\/p>\n<ul>\n<li>Os resultados podem ser transmitidos para o cliente antes que um status definitivo seja determinado (por exemplo, quando o processamento de um dos resultados falha ou quando h\u00e1 avisos n\u00e3o quebr\u00e1veis). Dessa forma, um novo <code>finalSuccess()<\/code> foi introduzido. <code>sucesso()<\/code> torna-se <code>parseSuccess()<\/code>permitindo que o usu\u00e1rio detecte um erro antecipadamente, mas o status final real da consulta s\u00f3 pode ser conhecido no final, aguardando <code>finalSuccess()<\/code>.<\/li>\n<li>Os erros podem ser m\u00faltiplos e ter n\u00edveis diferentes. Dessa forma <code>erro()<\/code> \u00e9 substitu\u00eddo por <code>erros()<\/code>, retornando um <code>Observ\u00e1vel<\/code> de erros e avisos.<\/li>\n<li><code>info()<\/code> n\u00e3o cont\u00e9m mais erros ou avisos em nenhuma capacidade, mas sim uma emiss\u00e3o \u00fanica de m\u00e9tricas como temporizadores, n\u00famero de linhas, tamanho dos valores de resposta, etc...<\/li>\n<\/ul>\n<p>Observe que a obten\u00e7\u00e3o do <code>Resultado da consulta<\/code> agora bloqueia at\u00e9 que toda a resposta esteja dispon\u00edvel. At\u00e9 agora, ele bloqueava at\u00e9 que a primeira parte da resposta fosse processada, possivelmente antes que as linhas estivessem dispon\u00edveis, portanto, essa altera\u00e7\u00e3o pode introduzir um atraso um pouco maior na obten\u00e7\u00e3o do resultado (atraso inicial anterior + aquele incorrido por uma chamada subsequente para <code>allRows()<\/code>).<\/p>\n<h2>Altera\u00e7\u00f5es no Developer Preview 2<\/h2>\n<p>Esta vers\u00e3o corrige v\u00e1rios erros de consulta:<\/p>\n<ul>\n<li>Corrige um erro de an\u00e1lise quando a resposta \u00e9 muito grande e uma parte \u00e9 composta apenas de linhas de resultado.<\/li>\n<li>Corre\u00e7\u00e3o de um erro de bloqueio que leva a tempos limite constantes ao fazer consultas para alguns usu\u00e1rios.<\/li>\n<\/ul>\n<p>Al\u00e9m disso, algumas altera\u00e7\u00f5es tamb\u00e9m foram feitas em termos de recursos:<\/p>\n<ul>\n<li>Adicionados acessores para o ID da solicita\u00e7\u00e3o (gerado pelo servidor N1QL) e o ID do contexto do cliente (fornecido pelo usu\u00e1rio ao fazer a consulta, mas truncado em 64 bytes de caracteres UTF8 pelo servidor).<\/li>\n<li>Adi\u00e7\u00e3o de uma substitui\u00e7\u00e3o de prepara\u00e7\u00e3o no Bucket que aceita uma instru\u00e7\u00e3o String para obter um QueryPlan para ele.<\/li>\n<\/ul>\n<p>Agradecemos aos nossos usu\u00e1rios nos f\u00f3runs que forneceram feedback e sinalizaram problemas!<\/p>\n<p>A vers\u00e3o tamb\u00e9m cont\u00e9m v\u00e1rias corre\u00e7\u00f5es de bugs e novos recursos n\u00e3o relacionados ao N1QL, que n\u00e3o detalharemos aqui (consulte as notas de vers\u00e3o do <a href=\"https:\/\/github.com\/couchbase\/couchbase-java-client\/releases\/tag\/2.1.0-dp2\">cliente java<\/a> e <a href=\"https:\/\/github.com\/couchbase\/couchbase-jvm-core\/releases\/tag\/1.1.0-dp2\">n\u00facleo-io<\/a>).<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Esperamos que voc\u00ea goste do N1QL e da codifica\u00e7\u00e3o de solicita\u00e7\u00f5es N1QL com o Java SDK mais recente. Como sempre, damos as boas-vindas a <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/c\/java-sdk\/\">feedback, sugest\u00f5es<\/a>, bug <a href=\"https:\/\/issues.couchbase.com\/browse\/JCBC\">relat\u00f3rios<\/a> (bem, n\u00e3o que gostemos deles a ponto de introduzir bugs voluntariamente) e at\u00e9 mesmo <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/open-source\/\">contribui\u00e7\u00f5es<\/a> :)<\/p>\n<p>Boa codifica\u00e7\u00e3o!<\/p>\n<p>A equipe do Java SDK<\/p>","protected":false},"excerpt":{"rendered":"<p>As some of you may know, the Query Team over at Couchbase have been working hard on a new and exciting feature, N1QL, which brings the power of query languages (like SQL) to Couchbase. They just release Developer Preview 4 [&hellip;]<\/p>","protected":false},"author":48,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1812,2201],"tags":[],"ppma_author":[9022],"class_list":["post-1866","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-n1ql-query","category-tools-sdks"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Preview using N1QL DP4 from the Java SDK - 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\/n1ql-dp4-java-sdk\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Preview using N1QL DP4 from the Java SDK\" \/>\n<meta property=\"og:description\" content=\"As some of you may know, the Query Team over at Couchbase have been working hard on a new and exciting feature, N1QL, which brings the power of query languages (like SQL) to Couchbase. They just release Developer Preview 4 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/n1ql-dp4-java-sdk\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-01-28T09:12:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:49:52+00:00\" \/>\n<meta name=\"author\" content=\"Simon Basle, Software Engineer, Pivotal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Simon Basle, Software Engineer, Pivotal\" \/>\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\/n1ql-dp4-java-sdk\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/\"},\"author\":{\"name\":\"Simon Basle, Software Engineer, Pivotal\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/a4086d75b59570cc2e5ff66d98c5d1a1\"},\"headline\":\"Preview using N1QL DP4 from the Java SDK\",\"datePublished\":\"2015-01-28T09:12:42+00:00\",\"dateModified\":\"2025-06-14T06:49:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/\"},\"wordCount\":1051,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"SQL++ \/ N1QL Query\",\"Tools &amp; SDKs\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/\",\"name\":\"Preview using N1QL DP4 from the Java SDK - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-01-28T09:12:42+00:00\",\"dateModified\":\"2025-06-14T06:49:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/#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\/n1ql-dp4-java-sdk\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Preview using N1QL DP4 from the Java SDK\"}]},{\"@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\/a4086d75b59570cc2e5ff66d98c5d1a1\",\"name\":\"Simon Basle, Software Engineer, Pivotal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4b2bcd169f85f21cee7b8a0e0c9e7854\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3c3aec94782fea5f0a199368c15e836198faf05c1591e0ae0b91178a59457781?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3c3aec94782fea5f0a199368c15e836198faf05c1591e0ae0b91178a59457781?s=96&d=mm&r=g\",\"caption\":\"Simon Basle, Software Engineer, Pivotal\"},\"description\":\"Simon Basl_ is a Paris-based Software Engineer working in the Spring team at Pivotal. Previously, he worked in the Couchbase Java SDK team. His interests span software design aspects (OOP, design patterns, software architecture), rich clients, what lies beyond code (continuous integration, (D)VCS, best practices), and reactive programming. He is also an editor for the French version of InfoQ.com.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/simon-basle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Preview using N1QL DP4 from the Java SDK - 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\/n1ql-dp4-java-sdk\/","og_locale":"pt_BR","og_type":"article","og_title":"Preview using N1QL DP4 from the Java SDK","og_description":"As some of you may know, the Query Team over at Couchbase have been working hard on a new and exciting feature, N1QL, which brings the power of query languages (like SQL) to Couchbase. They just release Developer Preview 4 [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/n1ql-dp4-java-sdk\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-01-28T09:12:42+00:00","article_modified_time":"2025-06-14T06:49:52+00:00","author":"Simon Basle, Software Engineer, Pivotal","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Simon Basle, Software Engineer, Pivotal","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/"},"author":{"name":"Simon Basle, Software Engineer, Pivotal","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/a4086d75b59570cc2e5ff66d98c5d1a1"},"headline":"Preview using N1QL DP4 from the Java SDK","datePublished":"2015-01-28T09:12:42+00:00","dateModified":"2025-06-14T06:49:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/"},"wordCount":1051,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["SQL++ \/ N1QL Query","Tools &amp; SDKs"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/","url":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/","name":"Preview using N1QL DP4 from the Java SDK - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-01-28T09:12:42+00:00","dateModified":"2025-06-14T06:49:52+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-java-sdk\/#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\/n1ql-dp4-java-sdk\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Preview using N1QL DP4 from the Java SDK"}]},{"@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\/a4086d75b59570cc2e5ff66d98c5d1a1","name":"Simon Basle, engenheiro de software, Pivotal","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4b2bcd169f85f21cee7b8a0e0c9e7854","url":"https:\/\/secure.gravatar.com\/avatar\/3c3aec94782fea5f0a199368c15e836198faf05c1591e0ae0b91178a59457781?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3c3aec94782fea5f0a199368c15e836198faf05c1591e0ae0b91178a59457781?s=96&d=mm&r=g","caption":"Simon Basle, Software Engineer, Pivotal"},"description":"Simon Basl_ \u00e9 um engenheiro de software baseado em Paris que trabalha na equipe Spring da Pivotal. Anteriormente, ele trabalhou na equipe do Couchbase Java SDK. Seus interesses abrangem aspectos de design de software (OOP, padr\u00f5es de design, arquitetura de software), clientes avan\u00e7ados, o que est\u00e1 al\u00e9m do c\u00f3digo (integra\u00e7\u00e3o cont\u00ednua, (D)VCS, pr\u00e1ticas recomendadas) e programa\u00e7\u00e3o reativa. Ele tamb\u00e9m \u00e9 editor da vers\u00e3o francesa do InfoQ.com.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/simon-basle\/"}]}},"authors":[{"term_id":9022,"user_id":48,"is_guest":0,"slug":"simon-basle","display_name":"Simon Basle, Software Engineer, Pivotal","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/3c3aec94782fea5f0a199368c15e836198faf05c1591e0ae0b91178a59457781?s=96&d=mm&r=g","author_category":"","last_name":"Basle","first_name":"Simon","job_title":"","user_url":"","description":"Simon Basl_ \u00e9 um engenheiro de software baseado em Paris que trabalha na equipe Spring da Pivotal. Anteriormente, ele trabalhou na equipe do Couchbase Java SDK. Seus interesses abrangem aspectos de design de software (OOP, padr\u00f5es de design, arquitetura de software), clientes avan\u00e7ados, o que est\u00e1 al\u00e9m do c\u00f3digo (integra\u00e7\u00e3o cont\u00ednua, (D)VCS, pr\u00e1ticas recomendadas) e programa\u00e7\u00e3o reativa. Ele tamb\u00e9m \u00e9 editor da vers\u00e3o francesa do InfoQ.com."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1866","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\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=1866"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1866\/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=1866"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=1866"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=1866"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=1866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}