<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Jonathas Rocha</title>
    <description>The latest articles on Forem by Jonathas Rocha (@jonathasrochadesouza).</description>
    <link>https://forem.com/jonathasrochadesouza</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F660092%2F0a4a540a-97a2-4fc1-b0bc-cfdcdf853995.png</url>
      <title>Forem: Jonathas Rocha</title>
      <link>https://forem.com/jonathasrochadesouza</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jonathasrochadesouza"/>
    <language>en</language>
    <item>
      <title>Lombok + Gradle + IntelliJ (Java 21) — Guia rápido</title>
      <dc:creator>Jonathas Rocha</dc:creator>
      <pubDate>Fri, 21 Nov 2025 20:10:43 +0000</pubDate>
      <link>https://forem.com/jonathasrochadesouza/lombok-gradle-intellij-java-21-guia-rapido-5e17</link>
      <guid>https://forem.com/jonathasrochadesouza/lombok-gradle-intellij-java-21-guia-rapido-5e17</guid>
      <description>&lt;p&gt;&lt;strong&gt;Passo a passo resumido&lt;/strong&gt; para configurar o Lombok no IntelliJ com Gradle usando &lt;strong&gt;Java 21&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Instale o plugin Lombok no IntelliJ&lt;/strong&gt;
Settings → Plugins → Marketplace → &lt;em&gt;Lombok&lt;/em&gt; → Install → Reinicie o IDE.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Habilite Annotation Processing&lt;/strong&gt;
Settings → Build, Execution, Deployment → Compiler → &lt;strong&gt;Annotation Processors&lt;/strong&gt; → marque &lt;strong&gt;Enable annotation processing&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configure o Java 21 (toolchain) no Gradle&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adicione o Lombok corretamente nas dependências (main e test) do build.gradle&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dependencies {
  compileOnly 'org.projectlombok:lombok:1.18.38'
  annotationProcessor 'org.projectlombok:lombok:1.18.38'

  testCompileOnly 'org.projectlombok:lombok:1.18.38'
  testAnnotationProcessor 'org.projectlombok:lombok:1.18.38'

  // ... your others dependencies
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Não use implementation para Lombok.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sincronize e compile&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;No IntelliJ: clique em &lt;strong&gt;Load/Reload Gradle Changes&lt;/strong&gt; (ícone do elefante).&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No terminal:&lt;br&gt;
&lt;br&gt;
&lt;code&gt;./gradlew clean build&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Teste rápido&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import lombok.*;

@Data
@Builder
class Demo { private String name; }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se Demo.builder() e getName() existirem, está tudo certo. Para validar, você poderá gerar uma classe de Teste, como no exemplo abaixo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class DemoTest {
    @Test
    void testBuilderAndGetter() {
        Demo demo = Demo.builder().name("Jonathas").build();
        assertEquals("Jonathas", demo.getName());
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Dica!!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Após alterar o build.gradle, sempre dê um &lt;strong&gt;clean + build&lt;/strong&gt; ou &lt;strong&gt;Reload Gradle&lt;/strong&gt; no IDE.&lt;/p&gt;

</description>
      <category>java</category>
      <category>jetbrains</category>
      <category>lombok</category>
      <category>gradle</category>
    </item>
    <item>
      <title>Busca de um valor em todas as tabelas e colunas no PostgreSQL 🐘</title>
      <dc:creator>Jonathas Rocha</dc:creator>
      <pubDate>Tue, 21 Oct 2025 18:06:41 +0000</pubDate>
      <link>https://forem.com/jonathasrochadesouza/busca-de-um-valor-em-todas-as-tabelas-e-colunas-no-postgresql-cjg</link>
      <guid>https://forem.com/jonathasrochadesouza/busca-de-um-valor-em-todas-as-tabelas-e-colunas-no-postgresql-cjg</guid>
      <description>&lt;p&gt;Fazer &lt;code&gt;SELECT ... WHERE coluna ILIKE '%valor%'&lt;/code&gt; manualmente em dezenas de tabelas não é prático!&lt;/p&gt;

&lt;h2&gt;
  
  
  A solução!?
&lt;/h2&gt;

&lt;p&gt;Podemos simplesmente percorrer todas as tabelas (ignorando &lt;code&gt;views&lt;/code&gt; para evitar erros) e checar colunas de tipos textuais (&lt;code&gt;varchar&lt;/code&gt;, &lt;code&gt;text&lt;/code&gt;, &lt;code&gt;char&lt;/code&gt;, &lt;code&gt;json&lt;/code&gt;, &lt;code&gt;jsonb&lt;/code&gt;). &lt;/p&gt;

&lt;p&gt;O script abaixo cria uma tabela temporária com os resultados da busca.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DO&lt;/span&gt; &lt;span class="err"&gt;$$&lt;/span&gt;
&lt;span class="k"&gt;DECLARE&lt;/span&gt;
    &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="n"&gt;RECORD&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;v_sql&lt;/span&gt;   &lt;span class="nb"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;v_needle&lt;/span&gt; &lt;span class="nb"&gt;TEXT&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'jonathasrocha'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;-- termo a procurar&lt;/span&gt;
&lt;span class="k"&gt;BEGIN&lt;/span&gt;
    &lt;span class="c1"&gt;-- tabela temporária para guardar achados&lt;/span&gt;
    &lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TEMP&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;IF&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;EXISTS&lt;/span&gt; &lt;span class="n"&gt;search_hits&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="k"&gt;schema_name&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;table_name&lt;/span&gt;  &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;column_name&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;row_count&lt;/span&gt;   &lt;span class="nb"&gt;integer&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="k"&gt;COMMIT&lt;/span&gt; &lt;span class="k"&gt;DROP&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;TRUNCATE&lt;/span&gt; &lt;span class="n"&gt;search_hits&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt;
        &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;column_name&lt;/span&gt;
        &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;information_schema&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;columns&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;
        &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;information_schema&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tables&lt;/span&gt;  &lt;span class="n"&gt;t&lt;/span&gt;
          &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt;
         &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;table_name&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;table_name&lt;/span&gt;
        &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table_type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'BASE TABLE'&lt;/span&gt;
          &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'pg_catalog'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'information_schema'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data_type&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'character varying'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'text'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'character'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'json'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'jsonb'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;LOOP&lt;/span&gt;
        &lt;span class="n"&gt;v_sql&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="s1"&gt;'INSERT INTO search_hits(schema_name, table_name, column_name, row_count)
             SELECT %L, %L, %L, COUNT(*)
             FROM %I.%I
             WHERE %I::text ILIKE $1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;column_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;column_name&lt;/span&gt;
        &lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;BEGIN&lt;/span&gt;
            &lt;span class="k"&gt;EXECUTE&lt;/span&gt; &lt;span class="n"&gt;v_sql&lt;/span&gt; &lt;span class="k"&gt;USING&lt;/span&gt; &lt;span class="s1"&gt;'%'&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;v_needle&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s1"&gt;'%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;EXCEPTION&lt;/span&gt;
            &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;others&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                &lt;span class="n"&gt;RAISE&lt;/span&gt; &lt;span class="n"&gt;NOTICE&lt;/span&gt; &lt;span class="s1"&gt;'Ignorando %.% (%.%): %'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;column_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SQLERRM&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;END&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;END&lt;/span&gt; &lt;span class="n"&gt;LOOP&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;END&lt;/span&gt; &lt;span class="err"&gt;$$&lt;/span&gt; &lt;span class="k"&gt;LANGUAGE&lt;/span&gt; &lt;span class="n"&gt;plpgsql&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Consulta na tabela de resultados&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;search_hits&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="k"&gt;row_count&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="k"&gt;row_count&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;schema_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;column_name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Exemplo da saída
&lt;/h2&gt;

&lt;p&gt;O resultado será uma lista de &lt;strong&gt;schemas, tabelas e colunas&lt;/strong&gt; onde o valor foi encontrado, junto com a quantidade de ocorrências:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; schema_name | table_name | column_name | row_count
-------------+------------+-------------+-----------
 public      | user       | email       |        2
 public      | orders     | client      |        1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Com esse snippet em praticidade, &lt;strong&gt;mapeando onde está um dado&lt;/strong&gt; dentro do PostgreSQL.&lt;/p&gt;

&lt;p&gt;Use sem rodeio e sem limites, vai por mim... Facilita muitoo!&lt;/p&gt;




&lt;p&gt;👉 Já precisou “caçar” um dado perdido no banco e não soube como?&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>postgressql</category>
      <category>sql</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Configurando o Postgres e DBeaver no macOS através do Homebrew</title>
      <dc:creator>Jonathas Rocha</dc:creator>
      <pubDate>Mon, 08 Sep 2025 15:49:59 +0000</pubDate>
      <link>https://forem.com/jonathasrochadesouza/configurando-o-postgres-e-dbeaver-no-macos-atraves-do-homebrew-28m</link>
      <guid>https://forem.com/jonathasrochadesouza/configurando-o-postgres-e-dbeaver-no-macos-atraves-do-homebrew-28m</guid>
      <description>&lt;p&gt;Subir o PostgreSQL no macOS não é nadinha complicado. Com os passos certos, em minutos você terá o banco rodando e pronto para ser usado no DBeaver.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;1. Verificando se o Postgres já está instalado&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Primeiro, confirme se o cliente do PostgreSQL (psql) já existe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;psql --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se aparecer algo como &lt;em&gt;&lt;code&gt;psql (PostgreSQL) 14.12 (Homebrew)&lt;/code&gt;&lt;/em&gt;, significa que o Postgres está instalado.&lt;/p&gt;

&lt;p&gt;Caso não esteja, você pode instalar via Homebrew:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install postgresql@14
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;2. Iniciando o servidor do PostgreSQL&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Para iniciar o Postgres como serviço no macOS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew services start postgresql@14
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se quiser rodar apenas no terminal, sem manter em background:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pg_ctl -D /opt/homebrew/var/postgresql@14 start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verifique se o servidor está ativo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew services list | grep postgres
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;3. Lidando com erros comuns&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Ao tentar conectar, talvez você encontre mensagens como:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Role inexistente&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FATAL: role "postgres" does not exist
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Database inexistente&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FATAL: database "seu_usuario" does not exist
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso significa que o cluster do Postgres foi iniciado sem as roles ou bancos padrões.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;4. Inicializando o cluster manualmente&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Se necessário, inicialize o cluster para garantir a estrutura básica:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;initdb --locale=C -D /opt/homebrew/var/postgresql@14
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E inicie novamente o servidor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pg_ctl -D /opt/homebrew/var/postgresql@14 start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;5. Criando a role e o banco&lt;/strong&gt; 
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;postgres&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Agora conecte-se ao servidor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;psql -d postgres
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dentro do console do psql, crie a role e o banco de forma explícita:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE ROLE postgres WITH LOGIN SUPERUSER PASSWORD 'sua_senha_aqui';
CREATE DATABASE postgres OWNER postgres;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois disso, você já consegue acessar normalmente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;psql -U postgres -h localhost
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;6. Conectando via DBeaver&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Com o Postgres rodando e configurado, basta abrir o &lt;strong&gt;DBeaver&lt;/strong&gt; e criar uma nova conexão:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Host: localhost&lt;/li&gt;
&lt;li&gt;Porta: 5432&lt;/li&gt;
&lt;li&gt;Database: postgres&lt;/li&gt;
&lt;li&gt;Usuário: postgres&lt;/li&gt;
&lt;li&gt;Senha: a que você definiu no passo anterior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Teste a conexão e pronto: o DBeaver estará conectado ao seu banco local.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusão&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Esse passo a passo é simples, mas cobre os erros mais comuns ao configurar o PostgreSQL no macOS via Homebrew.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>postgres</category>
      <category>macos</category>
      <category>homebrew</category>
    </item>
    <item>
      <title>Dicas práticas e lições da minha jornada até a certificação AWS Cloud Practitioner</title>
      <dc:creator>Jonathas Rocha</dc:creator>
      <pubDate>Sat, 16 Aug 2025 00:40:57 +0000</pubDate>
      <link>https://forem.com/jonathasrochadesouza/dicas-praticas-e-licoes-da-minha-jornada-ate-a-certificacao-aws-cloud-practitioner-5294</link>
      <guid>https://forem.com/jonathasrochadesouza/dicas-praticas-e-licoes-da-minha-jornada-ate-a-certificacao-aws-cloud-practitioner-5294</guid>
      <description>&lt;h2&gt;
  
  
  Introdução: O Primeiro Passo na Jornada
&lt;/h2&gt;

&lt;p&gt;A certificação &lt;strong&gt;AWS Cloud Practitioner&lt;/strong&gt; é considerada a porta de entrada para o universo da AWS. Junto com a certificação voltada para Inteligência Artificial, ela compõe o nível mais básico da trilha de certificações da Amazon Web Services.&lt;/p&gt;

&lt;p&gt;Mas como tudo na vida, &lt;strong&gt;temos que começar de algum lugar&lt;/strong&gt;, certo? E com uma base sólida, podemos mirar nas próximas certificações que se alinham ao nosso plano de carreira.&lt;/p&gt;




&lt;h2&gt;
  
  
  Primeira Tentativa: A Bola na Trave
&lt;/h2&gt;

&lt;p&gt;Minha primeira tentativa foi há alguns anos. Infelizmente, &lt;strong&gt;não consegui avançar&lt;/strong&gt; naquela época. A bola bateu na trave, ameaçou entrar... e furou!&lt;/p&gt;

&lt;p&gt;Na ocasião, obtive uma nota de &lt;strong&gt;6,9&lt;/strong&gt; (7 é a nota necessária para aprovação). Apesar da frustração, essa experiência me trouxe &lt;strong&gt;percepções valiosas&lt;/strong&gt; sobre estudo, preparação e resiliência.&lt;/p&gt;




&lt;h2&gt;
  
  
  Recomeço com Foco e Estratégia
&lt;/h2&gt;

&lt;p&gt;Com essas lições em mente, decidi &lt;strong&gt;retomar os estudos com mais foco e constância&lt;/strong&gt;. Aprendi muito sobre:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compromisso com prazos&lt;/li&gt;
&lt;li&gt;Técnicas de estudo&lt;/li&gt;
&lt;li&gt;Constância e disciplina&lt;/li&gt;
&lt;li&gt;Equilíbrio entre teoria e prática&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Durante alguns meses, estudei por meio de &lt;strong&gt;simulados específicos da certificação&lt;/strong&gt;. Usava a plataforma da &lt;strong&gt;UDEMY&lt;/strong&gt; e também o curso em inglês &lt;strong&gt;AWS Certified Cloud Practitioner&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Minha rotina incluía:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refazer questões erradas do simulado, por pelo menos duas vezes&lt;/li&gt;
&lt;li&gt;Revisar rapidamente as questões acertadas&lt;/li&gt;
&lt;li&gt;Estudar com prática usando o &lt;strong&gt;AWS SimuLearn&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Estudar focado nos temas de dúvidas&lt;/li&gt;
&lt;li&gt;Jogar o AWS Card Clash por pelo menos 2h durante a semana&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Técnicas de Estudo (com moderação!)
&lt;/h2&gt;

&lt;p&gt;Usei algumas técnicas de estudo que pretendo compartilhar em um artigo futuro. Mas deixo aqui um conselho: &lt;strong&gt;não perca muito tempo escolhendo a técnica perfeita&lt;/strong&gt;. Faça uma pesquisa rápida, escolha uma abordagem e &lt;strong&gt;comece!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Não existe uma maneira melhor de estudar que funciona para todos, se adapte com a forma que você aprende melhor!&lt;/p&gt;




&lt;h2&gt;
  
  
  AWS Card Clash: Aprendizado com Diversão
&lt;/h2&gt;

&lt;p&gt;Um recurso que me ajudou muito a conhecer os serviços da AWS foi o jogo de cartas &lt;strong&gt;“AWS Card Clash”&lt;/strong&gt;, disponibilizado pela própria AWS.&lt;/p&gt;

&lt;p&gt;Zerei três dos quatro módulos do game 🎮, e ele foi um &lt;strong&gt;ótimo aliado nos momentos de estudo mais estressantes ou desanimadores&lt;/strong&gt;. Além de divertido, me ajudava a manter o entusiasmo e bater minhas metas.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusão: Conquista e Reflexão
&lt;/h2&gt;

&lt;p&gt;Essa jornada me ensinou que &lt;strong&gt;persistência e estratégia fazem toda a diferença&lt;/strong&gt;. Hoje, comemoro essa conquista com a certeza de que estou mais preparado para os próximos passos na nuvem.&lt;/p&gt;

&lt;p&gt;Se você está começando ou pensando em tentar a certificação, &lt;strong&gt;vá em frente!&lt;/strong&gt; Comece pequeno, mas comece.&lt;/p&gt;

&lt;p&gt;E claro, não posso deixar de agradecer à minha esposa e família, que esteve ao meu lado durante todo esse processo — apoiando, incentivando e celebrando comigo. 💙&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>cloud</category>
      <category>certification</category>
    </item>
    <item>
      <title>Hibernate: Roteiro básico de implementação</title>
      <dc:creator>Jonathas Rocha</dc:creator>
      <pubDate>Thu, 21 Jul 2022 02:44:51 +0000</pubDate>
      <link>https://forem.com/jonathasrochadesouza/hibernate-roteiro-basico-de-implementacao-4dkp</link>
      <guid>https://forem.com/jonathasrochadesouza/hibernate-roteiro-basico-de-implementacao-4dkp</guid>
      <description>&lt;p&gt;Bem vindo, Jonathas por aqui. Desde já, desejando bons estudos.&lt;/p&gt;

&lt;p&gt;Segue um roteiro de implementação do Hibernate, para seus estudos 😎📚.&lt;/p&gt;

&lt;h2&gt;
  
  
  💻 Instalações
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Java&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;IDEA Java (Intellij, Eclipse ou NetBeans)&lt;/li&gt;
&lt;li&gt;SGBD (Dbeaver, PostgreSQL, etc)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Iniciando o projeto
&lt;/h2&gt;

&lt;p&gt;Podemos iniciar o projeto a partir do Spring. Através da página do &lt;a href="https://start.spring.io/" rel="noopener noreferrer"&gt;Spring Initializr&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Selecionando as seguintes dependências: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spring Data JPA (SQL)&lt;/li&gt;
&lt;li&gt;PostgreSQL Driver (SQL)&lt;/li&gt;
&lt;li&gt;Spring Web (Web)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Devemos selecionar &lt;em&gt;Maven Project&lt;/em&gt;, como projeto. Temos também outras configurações para selecionarmos e configurarmos, como versões, nomes do projeto. Selecione de acordo a versão do Java em sua máquina 💻. O nome pode escolher como preferir também 😉.&lt;/p&gt;

&lt;h2&gt;
  
  
  Criação do banco
&lt;/h2&gt;

&lt;p&gt;É necessário criarmos um banco de dados, que chamaremos depois nas configurações JDBC, XML, etc. Mas, não precisa se preocupar agora.&lt;/p&gt;

&lt;p&gt;Vamos por parte!&lt;/p&gt;

&lt;p&gt;Crie sua base de dados. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd8aricov1vgt5ek2o4m9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd8aricov1vgt5ek2o4m9.png" alt="Criando banco"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Caso esteja com dúvidas &lt;a href="https://www.w3schools.com/sql/sql_create_db.asp" rel="noopener noreferrer"&gt;Acesse esse link&lt;/a&gt;, referente ao w3Schools, sobre criação de banco de dados.&lt;/p&gt;

&lt;h2&gt;
  
  
  Abrindo o projeto
&lt;/h2&gt;

&lt;p&gt;No meu caso utilizo o Intellij community. Caso você utilize outra IDE, não se preocupe, abrir o projeto não é tão diferente.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Pelo Intellij.&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
Clicar em &lt;strong&gt;File &amp;gt; Abrir &amp;gt; 'Selecionamos nosso projeto' &amp;gt; 'Clicamos em abrir'.&lt;/strong&gt;&lt;br&gt;
Em seguida: &lt;strong&gt;File &amp;gt; New &amp;gt; Module From Existing Sources &amp;gt; 'Selecionamos nosso projeto' &amp;gt; Próximo &amp;gt; Import [...] - Maven &amp;gt; Create&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Criando nossos fontes
&lt;/h2&gt;

&lt;p&gt;Agora a parte boa! 🤠&lt;/p&gt;

&lt;p&gt;Vamos criar nossas entidades.&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Entity
@Table(name="usuario")
@Immutable
public class UsuarioEntity {

    @Id
    @NotNull
    @Column(name = "id")
    @GeneratedValue(strategy= GenerationType.AUTO)
    public Integer id;

    @NotNull
    @Column(length = 50)
    public String nome;

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui colocamos dois atributos (ops, colunas) no banco de dados. São o id (que é quase obrigatório) e o nome. Apenas para fixarmos a ideia.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A anotação (@) &lt;em&gt;Entity&lt;/em&gt;, é para definirmos entidades/tabelas no nosso banco.&lt;/li&gt;
&lt;li&gt;A anotação (@) &lt;em&gt;Table(name="usuario")&lt;/em&gt; é para definirmos que é uma tabela e para passarmos o nome que essa tabela terá no banco de dados.&lt;/li&gt;
&lt;li&gt;A anotação (@)  &lt;em&gt;Id&lt;/em&gt; é para definirmos nosso id da tabela, ou identificador único (pk).&lt;/li&gt;
&lt;li&gt;A anotação (@)  &lt;em&gt;NotNull&lt;/em&gt; é para definirmos que não poderá ser nulo.&lt;/li&gt;
&lt;li&gt;A anotação (@)  &lt;em&gt;GeneratedValue(strategy= GenerationType.AUTO)&lt;/em&gt; é para definirmos que deverá gerar valores &lt;em&gt;auto increments&lt;/em&gt;, ou seja, automáticos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esse foi um exemplo básico das infinitas possibilidades que o Hibernate proporciona 👀&lt;/p&gt;

&lt;p&gt;O Hibernate permite ainda:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Criar toda a estrutura do seu banco de dados&lt;/li&gt;
&lt;li&gt;Alterar todo o banco de dados através do código do próprio java&lt;/li&gt;
&lt;li&gt;Realizar filtros e selects em dados&lt;/li&gt;
&lt;li&gt;Entre outras infinitas possibilidades! 🌌🌌&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Configuração 🛠
&lt;/h2&gt;

&lt;p&gt;No arquivo application.properties, cole o seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;spring.datasource.url= jdbc:postgresql://localhost:5432/nome_do_seu_banco_aqui
spring.datasource.username= postgres
spring.datasource.password= admin
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation= true
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.PostgreSQLDialect
# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto= update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure a porta onde seu PostgreSQL está rodando, o nome do banco, nome de usuário e senha do banco.&lt;/p&gt;

&lt;p&gt;Em seguida, faremos algumas configurações para rodar o SessionFactory no &lt;em&gt;'main'&lt;/em&gt;, para podermos validar se nossa entidade funciona.&lt;/p&gt;

&lt;p&gt;Crie um arquivo chamado &lt;strong&gt;&lt;em&gt;hibernate.cfg.xml&lt;/em&gt;&lt;/strong&gt;, na pasta do resources (a mesma pasta que está o application.properties).&lt;/p&gt;

&lt;p&gt;Em seu arquivo &lt;em&gt;hibernate.cfg.xml&lt;/em&gt;, cole o seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&amp;gt;
&amp;lt;hibernate-configuration&amp;gt;
    &amp;lt;session-factory&amp;gt;

        &amp;lt;property name="connection.url"&amp;gt;jdbc:postgresql://localhost:5432/nome_do_seu_banco_aqui&amp;lt;/property&amp;gt;
        &amp;lt;property name="connection.username"&amp;gt;postgres&amp;lt;/property&amp;gt;
        &amp;lt;property name="connection.password"&amp;gt;admin&amp;lt;/property&amp;gt;
        &amp;lt;property name="connection.driver_class"&amp;gt;org.postgresql.Driver&amp;lt;/property&amp;gt;

        &amp;lt;property name="dialect"&amp;gt;org.hibernate.dialect.PostgreSQL10Dialect&amp;lt;/property&amp;gt;
        &amp;lt;property name="hbm2ddl.auto"&amp;gt;update&amp;lt;/property&amp;gt;

        &amp;lt;property name="show_sql"&amp;gt;true&amp;lt;/property&amp;gt;
        &amp;lt;property name="format_sql"&amp;gt;true&amp;lt;/property&amp;gt;

        &amp;lt;property name="hibernate.current_session_context_class"&amp;gt;thread&amp;lt;/property&amp;gt;

        &amp;lt;mapping class="jonathas.javabasicapi.UserEntity" /&amp;gt;

    &amp;lt;/session-factory&amp;gt;
&amp;lt;/hibernate-configuration&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;WHAT!? Que isso? 🤨&lt;/p&gt;

&lt;p&gt;Pois então, este é um arquivo .xml, para configuração do &lt;em&gt;Session&lt;/em&gt;, que iremos utilizar para rodar alguns &lt;em&gt;creates&lt;/em&gt;. Esse arquivo serve de referencia para a factory, encontrar a base de dados e persistir alterações!&lt;/p&gt;

&lt;p&gt;Configure também nesse arquivo a porta onde seu PostgreSQL está rodando, o nome do banco, nome de usuário e senha do banco.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gerando um create, e aparecendo na base de dados
&lt;/h2&gt;

&lt;p&gt;A parte legal! 🥱&lt;/p&gt;

&lt;p&gt;Nas nossas entidades, devemos gerar &lt;em&gt;getters&lt;/em&gt; e &lt;em&gt;setters&lt;/em&gt;. Devemos também gerar um construtor que irá receber argumentos (com exceção do id) para referir a nosso objeto/entidade. &lt;strong&gt;Veja abaixo o exemplo:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package jonathas.javabasicapi;

import com.sun.istack.NotNull;
import org.hibernate.annotations.Immutable;

import javax.persistence.*;

@Entity
@Table
@Immutable
public class UsuarioEntity {

    public UsuarioEntity(String nome) {
        this.nome = nome;
    }

    @Id
    @NotNull
    @Column(name = "id")
    @GeneratedValue(strategy= GenerationType.AUTO)
    public Integer id;

    @NotNull
    @Column(length = 50)
    public String nome;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perceba que adicionamos o &lt;em&gt;set&lt;/em&gt; e &lt;em&gt;get&lt;/em&gt; do nome. Também adicionamos o construtor. Perceba que está mais fácil do que parecia...&lt;/p&gt;

&lt;p&gt;Agora no seu Application (main), cole o seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SessionFactory sessionFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();

        Session session = sessionFactory.openSession();
        session.beginTransaction();

        UsuarioEntity usuario = new UsuarioEntity();
        usuario.setName("jonas");

        session.persist(usuario);

        session.getTransaction().commit();
        session.close();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui referenciamos o arquivo de configuração que criamos, lembra, aquele .xml... Em seguida abrimos uma SessionFactory, que é a responsável por 'fabricar' nosso SQL pra gente.&lt;/p&gt;

&lt;p&gt;Espero que dê tudo certo aí na sua máquina e rode 100%.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aprofundando um pouco mais... 🧐
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Dê uma olhada nas dependências que estão no arquivo .pom, referente ao Maven&lt;/li&gt;
&lt;li&gt;Tente criar alguns relacionamentos entre tabelas utilizando o Hibernate&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Próximos passos! 😮
&lt;/h2&gt;

&lt;p&gt;Você pode estudar em seguida:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Foreign Keys com Hibernate&lt;/li&gt;
&lt;li&gt;LAZY e EAGER&lt;/li&gt;
&lt;li&gt;JPA&lt;/li&gt;
&lt;li&gt;JDBC&lt;/li&gt;
&lt;li&gt;Repository&lt;/li&gt;
&lt;li&gt;REST&lt;/li&gt;
&lt;li&gt;Questões mais avançadas como Query DSL&lt;/li&gt;
&lt;li&gt;Entre outros. 🌌&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚠ Atenção!!
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Verifique os imports que está realizando!&lt;/li&gt;
&lt;li&gt;Se não deu certo, não se desespere, pode ser questões de versão, alguma coisa que acabou colando errado. Dê uma olhada no log e pesquise no Google, ou direto no StackOverFlow 😅. Afinal, nosso trabalho além de criar é arrumar bugs 🤣.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Enfim, parabéns por chegar até aqui. Espero que tenha aprendido muito! 😀
&lt;/h3&gt;

&lt;p&gt;Se gostou me segue aqui e em outras redes!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jonathasrochadesouza" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/jonathasrochadesouza/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📚&lt;/p&gt;

</description>
      <category>java</category>
      <category>hibernate</category>
      <category>sql</category>
      <category>devs</category>
    </item>
    <item>
      <title>Entendendo e iniciando com Hibernate</title>
      <dc:creator>Jonathas Rocha</dc:creator>
      <pubDate>Mon, 18 Jul 2022 02:54:26 +0000</pubDate>
      <link>https://forem.com/jonathasrochadesouza/entendendo-e-iniciando-com-hibernate-java-gf3</link>
      <guid>https://forem.com/jonathasrochadesouza/entendendo-e-iniciando-com-hibernate-java-gf3</guid>
      <description>&lt;h3&gt;
  
  
  Tabela de Conteúdos:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Introdução&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Algumas informações referentes ao Hibernate&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;O que é Hibernate&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Introdução ao Hibernate&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Prós da utilização do Hibernate&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Configuração&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;Este post é uma explicação e exemplificação resumida sobre Hibernate e JPA. Ao final do artigo estão algumas referências, vídeos e repositórios caso você queira se aprofundar ainda mais no assunto. Sou o Jonathas, e desde ja lhe desejo bons estudos!&lt;/p&gt;
&lt;h2&gt;
  
  
  Informações referentes ao Hibernate
&lt;/h2&gt;

&lt;p&gt;Licença: GNU Lesser General Public License (Open-source)&lt;br&gt;
Surgimento: 23 de Maio de 2001&lt;br&gt;
Desenvolvedora: Red Hat&lt;/p&gt;

&lt;p&gt;Repositórios:&lt;br&gt;
&lt;a href="https://github.com/hibernate" rel="noopener noreferrer"&gt;https://github.com/hibernate&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Sobre o Hibernate
&lt;/h2&gt;

&lt;p&gt;O Hibernate é uma framework de ORM para a linguagem de programação Java. ORM significa Object Relational Mapper, ou mapeador de objeto relacional. O Hibernate é uma ferramenta muito utilizada nos dias de hoje, sendo, a mais conhecida entre os frameworks de ORM para Java. &lt;/p&gt;

&lt;p&gt;O Hibernate tem o propósito de unir a orientação a objetos e bancos relacionais de uma maneira muito mais simples e descomplicada.&lt;/p&gt;

&lt;p&gt;O framework Hibernate é o mais conhecido, dentre os frameworks ORM para a linguagem Java.&lt;/p&gt;
&lt;h2&gt;
  
  
  Prós da utilização do Hibernate
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Economia de esforço e preocupação&lt;/li&gt;
&lt;li&gt;Gerar o código SQL para qualquer banco de dados relacional&lt;/li&gt;
&lt;li&gt;Gera o código SQL a partir de anotações, sem gerar dor de cabeça aos desenvolvedores&lt;/li&gt;
&lt;li&gt;Confiabilidade. O Hibernate está a muito tempo no mercado, utilizado por grandes empresas e com uma comunidade ativa&lt;/li&gt;
&lt;li&gt;Podemos trocar o banco de dados utilizado sem ter que alterar o código-fonte&lt;/li&gt;
&lt;li&gt;Alta performance&lt;/li&gt;
&lt;li&gt;Manutenabilidade &lt;/li&gt;
&lt;li&gt;Escalabilidade&lt;/li&gt;
&lt;li&gt;Produtividade&lt;/li&gt;
&lt;li&gt;Provedor JPA&lt;/li&gt;
&lt;li&gt;Open Source&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  JPA
&lt;/h2&gt;

&lt;p&gt;Java Persistence API (ou simplesmente JPA) é uma API padrão da linguagem Java que descreve uma interface comum para frameworks de persistência de dados. A JPA define um meio de mapeamento objeto-relacional para objetos Java simples e comuns, denominados beans de entidade.&lt;/p&gt;

&lt;p&gt;A JPA, funciona através de qualquer framework ORM (Mapeamento Objeto Relacional) baseado na especificação JPA. Pode ser o framework Hibernate, EclipseLink, TopLink, OpenJpa, etc. &lt;/p&gt;

&lt;p&gt;JPA é muito utilizado para conexão e acesso a banco de dados relacionais. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fny7oq8upl63ap3flbxgc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fny7oq8upl63ap3flbxgc.png" alt="Diagrama referente ao JPA"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A ORM é a implementação da interface JPA. No nosso caso a ORM que utilizamos aqui neste artigo é o Hibernate.&lt;/p&gt;
&lt;h2&gt;
  
  
  Anotações no Hibernate (annotations)
&lt;/h2&gt;

&lt;p&gt;Utilizamos anotações, para mapear modelos de base de dados. Possibilitando assim gerar alterações referentes as bases de dados, através das anotações.&lt;/p&gt;

&lt;p&gt;As anotações são claras e intuitivas. Entre as anotações mais importantes temos o Entity, Table, Id e Column.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O &lt;em&gt;@Entity&lt;/em&gt;, é utilizado para declarar uma entidade.&lt;/li&gt;
&lt;li&gt;O &lt;em&gt;@Table&lt;/em&gt;, é utilizado para declarar uma tabela no banco de dados.&lt;/li&gt;
&lt;li&gt;O &lt;em&gt;&lt;a class="mentioned-user" href="https://dev.to/id"&gt;@id&lt;/a&gt;&lt;/em&gt;, é usado para declararmos o atributo id da nossa tabela.&lt;/li&gt;
&lt;li&gt;O &lt;em&gt;@Column&lt;/em&gt;, declaramos os atributos/colunas de uma tabela.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Prática (exemplo)
&lt;/h2&gt;
&lt;h4&gt;
  
  
  &lt;code&gt;Tecnologias e Ferramentas&lt;/code&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;MySql Community&lt;/li&gt;
&lt;li&gt;Java JDK&lt;/li&gt;
&lt;li&gt;Intellij Community Edition 2022.1&lt;/li&gt;
&lt;li&gt;SGBD de sua preferência (DbVisualizer, Workbench, DBeaver, etc)&lt;/li&gt;
&lt;li&gt;Spring Boot (Maven Dependencies)

&lt;ul&gt;
&lt;li&gt;Spring Web (Web)&lt;/li&gt;
&lt;li&gt;Spring Data JPA (SQL)&lt;/li&gt;
&lt;li&gt;Spring Data&lt;/li&gt;
&lt;li&gt;Hibernate&lt;/li&gt;
&lt;li&gt;MySQL Driver (SQL)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  &lt;code&gt;Passo 01: Criação do projeto&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Vamos acessar a página oficial do Spring Initializr, através do link: &lt;a href="https://start.spring.io/" rel="noopener noreferrer"&gt;https://start.spring.io/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhn8z5rjlomsdac85txm7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhn8z5rjlomsdac85txm7.png" alt="Passo 01 - Spring Initializr"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Em seguida Selecionamos o tipo do projeto Maven na parte 
'Project'&lt;/li&gt;
&lt;li&gt;Selecionamos Java, na parte 'Language'.&lt;/li&gt;
&lt;li&gt;Selecionamos uma versão estável na parte 'Spring Boot', sendo a atual 2.7.1&lt;/li&gt;
&lt;li&gt;Nomeamos o grupo, nome do projeto e afins&lt;/li&gt;
&lt;li&gt;Selecionamos a versão do Java que estamos utilizando;&lt;/li&gt;
&lt;li&gt;Selecionamos a dependencia Spring Data JPA (SQL)&lt;/li&gt;
&lt;li&gt;Selecionamos a dependencia MySQL Driver (SQL)&lt;/li&gt;
&lt;li&gt;Clicamos em 'Generate' e o projeto passa a ser baixado&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  &lt;code&gt;Passo 02: Abrindo o projeto no Intellij&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Vamos extrair o a pasta do projeto. Pode ser utilizado o WinRar, 7Zip, ou até mesmo alguma ferramenta nativa do sistema operacional que você estiver utilizando.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47se6cszxd2sbjzbs3al.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47se6cszxd2sbjzbs3al.png" alt="Abrindo projeto no Intellij"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Em seguida abra seu projeto no Intellij, ou outra ferramenta de sua preferência como Eclipse, VSCode ou NetBeans.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg0v1str3usmaz579mpia.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg0v1str3usmaz579mpia.png" alt="Selecionando nosso projeto"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdpw873sclis4oxanu65e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdpw873sclis4oxanu65e.png" alt="Importanto o Maven"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;New &amp;gt; Module from Existing Sources... &amp;gt; Selecionamos nosso projeto &amp;gt; Selecionamos "import..." Maven &amp;gt; Clícamos em 'create'&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;code&gt;Passo 03: Criando um banco de dados e testando conexão&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;No meu caso, estarei utilizando o banco de dados MySQL Community e o SGBD Workbench.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfzot91p4zhsufrkdxsm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfzot91p4zhsufrkdxsm.png" alt="Criando uma nova conexão"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Configure uma nova conexão no banco de dados, ou utilize uma existente. Teste a conexão do mesmo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft0fi3igoutk115y28j3z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft0fi3igoutk115y28j3z.png" alt="Criando um novo banco de dados"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Crie um novo banco de dados com um nome de sua preferência e pronto!&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;code&gt;Passo 04: Configurando o application.properties no projeto&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;No arquivo &lt;em&gt;application.properties&lt;/em&gt;. Encontrando em &lt;em&gt;'src &amp;gt; main &amp;gt; resources'&lt;/em&gt;. Adicione o seguinte trecho de código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/tutorial
spring.datasource.username=root
spring.datasource.password=admin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Referencie seus dados conforme cada propriedade da configuração do seu banco de dados (porta, nome do banco, username, password (senha)).&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;Passo 05: Estruturando o projeto&lt;/code&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;Passo 06: Criando 'Entities' e 'Repositories'&lt;/code&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;Passo 07: Testes - CRUD&lt;/code&gt;
&lt;/h3&gt;



&lt;h2&gt;
  
  
  Referências:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://blog.algaworks.com/tutorial-jpa/" rel="noopener noreferrer"&gt;Algaworks- Alexandre Afonso - Tutorial definitivo: JPA&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.tidicas.com.br/?p=1864" rel="noopener noreferrer"&gt;Tidicas - JPA&lt;/a&gt;&lt;br&gt;
&lt;a href="https://pt.wikipedia.org/wiki/Java_Persistence_API" rel="noopener noreferrer"&gt;Wikipedia - JPA (Java Persistence API)&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.devmedia.com.br/aprendendo-java-com-jdbc/29116" rel="noopener noreferrer"&gt;DevMedia - JDBC&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.devmedia.com.br/introducao-ao-hibernate-3-5/29110" rel="noopener noreferrer"&gt;DevMedia - Introdução ao Hibernate 3.5&lt;/a&gt;&lt;br&gt;
&lt;a href="https://medium.com/@eduardoribeirocury/hibernate-com-java-11-3be9fe3718c9" rel="noopener noreferrer"&gt;Medium - Eduardo Ribeiro - Hibernate com Java 11&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/0HKAqjiZveE" rel="noopener noreferrer"&gt;Youtube - Expertos Tech- COMO CRIAR UMA API REST EM JAVA E SPRING BOOT PASSO A PASSO&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>hibernate</category>
      <category>programming</category>
      <category>community</category>
    </item>
  </channel>
</rss>
