Skip to content

Instantly share code, notes, and snippets.

@Met4tron
Created July 8, 2024 13:35
Show Gist options
  • Save Met4tron/eb53aef33aea4158017db14fe814304c to your computer and use it in GitHub Desktop.
Save Met4tron/eb53aef33aea4158017db14fe814304c to your computer and use it in GitHub Desktop.
Java na visão de quem está reaprendendo

Persistence

  • JPA ou Hibernate?
  • Existe um mundo onde JDBC puro é mais utilizado?
  • Existe algum Query Builder no mundo Java?
  • Quais as formas de gerenciar migrations usando Java?
    • Existe alguma forma semelhante ao Prisma/Atlas, através de uma DSL de Schema (Database as Code)?
  • Quando usar @Transactional e quando não usar?

Frameworks

  • Além do Springboot, há alguma outra alternativa que seja utilizada pelo mercado?
  • Quais as diferenças fundamentais entre os Springboot e os demais frameworks?
  • Quais projetos do universo Spring (Data, Batch e afins) voce utilizada no dia a dia? Caso não utilize, pq?

Mercado

  • Quais as versões mais utilizadas no Mercado?
  • Quais os conhecimentos fundamentais necessários, para um mid/sr?
  • Migração de outra lang para Java, é um bom caminho?

Conveções de Código

  • Package by layer ou Package by Feature?
  • Maven ou Gradle? Pq?
  • Quando é necessário usar Lombok? IDE já gera todo o código com dois cliques, pq ainda usar Lombok?
  • Pensando no Springboot, qual a forma ideal para injeção de dependencias?
  • Como nomear adequadamente um projeto, usando meu user do github? com.github.${username}?
  • Como lidar com multiplos environments (dev, prod, stg) dentro de uma aplicação Java? Existe algum .env?
@albertribeirocorp
Copy link

Sobre a forma ideal pra injetar dependências no Spring: https://www.baeldung.com/java-spring-field-injection-cons

@albertribeirocorp
Copy link

Como lidar com multiplos environments (dev, prod, stg)?
Tem o application.properties ou application.yml que pode ser usado pra fazer overriding de profile.

@albertribeirocorp
Copy link

Quais projetos do universo Spring (Data, Batch e afins) voce utilizada no dia a dia? Caso não utilize, pq?
Data, Boot, MVC, Sleuth, Kafka, Validation, OpenFeign, Actuator, Test, MongoDB, DevTools.
Os que não utilizamos é porque são gerenciados por um time específico, como o Security, ou porque não precisamos mesmo.

@albertribeirocorp
Copy link

JPA ou Hibernate?
JPA é a especificação, Hibernate é a implementação. Se usa Hibernate, usa JPA.

@albertribeirocorp
Copy link

@rponte
Copy link

rponte commented Jul 8, 2024

Persistence

  • JPA ou Hibernate?

Preferencialmente ambos, pois JPA é uma especificação Java enquanto Hibernate é a implementação mais popular e também o MELHOR framework ORM do mundo 💪🏻

  • Existe um mundo onde JDBC puro é mais utilizado?

Geralmente em sistemas legados, libs e frameworks de persistência, frameworks caseiros e algumas ferramentas geradoras de código;

  • Existe algum Query Builder no mundo Java?

JPA e Hibernate fornecem a API de Criteria. Mas existem MyBatis e jOOQ;

  • Quais as formas de gerenciar migrations usando Java?
    • Existe alguma forma semelhante ao Prisma/Atlas, através de uma DSL de Schema (Database as Code)?

O mais popular hoje em dia no mundo Java é o Flyway. Mas existem outros. Sobre alguma DSL eu já vi algumas tentativas, mas no mundo Java são poucas e raramente usadas;

Essa talk tem alguns anos, mas comento algumas soluções de migrations da epoca.

Sempre, ou até que algo muito forte te diga o contrário (gargalos, controle fino da transação etc). Para maioria dos sistemas corporativos abrir mão de consistência deveria ser exceção e não regra.

Frameworks

  • Além do Springboot, há alguma outra alternativa que seja utilizada pelo mercado?

Micronaut e Quarkus são os mais populares. Mas existe outra vertente de frameworks que não curtem anotações, mutabilidade nem exceptions, que são chamados de "microframeworks".

  • Quais as diferenças fundamentais entre os Springboot e os demais frameworks?

No geral todos beberam da mesma fonte: Ruby On Rails. Mas no mundo Java sem duvida o Spring é o mais antigo, maduro e popular. Micronaut por exemplo é totalmente inspirado no Spring Boot, tanto é que considero que se o Spring Boot fosse refeito do zero hoje ele seria o Micronaut 💪🏻

  • Quais projetos do universo Spring (Data, Batch e afins) voce utilizada no dia a dia? Caso não utilize, pq?

Geralmente o basicos para APIs REST: Web, Validator, Data, Actuator, OpenFeign e outros de acordo com a demanda.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment