- JPA ou Hibernate?
- JPA deu origem ao Hibernate. Hibernate é uma implementação de JPA
- Existe um mundo onde JDBC puro é mais utilizado?
- Eu uso bastante JDBC puro. Normalmente se usa quando se precisa falar diretamente com o banco, não HQL ou coisa equivalente. Existem tretas com spring-jdbc que o jdbc puro trata bem. Não cheguei a usar algo mais específico do spring para stream de dados e coisas mais pesadas.
- Existe algum Query Builder no mundo Java?
- Muitos. Como exemplo, 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)?
- Não conheço prisma/atlas =/
Mas existem anotações de entidades JPA para criar o schema, é isso? algo bem semelhante a como funciona Rails e Django
- Não conheço prisma/atlas =/
- Quando usar @Transactional e quando não usar?
- Quando você precisar ter segurança que o seu caso de uso é atômico. Mas usar sempre vai causar
problemas no banco de dados, porque afinal ele vai travar o banco para toda e qualquer operação.
Isso é mais detalhado do que uma simples resposta pode fornecer, mas normalmente tem dois casos
em que usar
@Transactional
é importante:- quando você vai fazer leituras seguidas de escritas, para evitar condição de corrida
- quando você precisa salvar uma pancada de coisas simultaneamente
- Quando você precisar ter segurança que o seu caso de uso é atômico. Mas usar sempre vai causar
problemas no banco de dados, porque afinal ele vai travar o banco para toda e qualquer operação.
Isso é mais detalhado do que uma simples resposta pode fornecer, mas normalmente tem dois casos
em que usar
- Além do Springboot, há alguma outra alternativa que seja utilizada pelo mercado?
- Javalite vai ter uma pegada mais parecida com rails, tem o quarkus também. O mundo J2EE
(que agora se denomina Jakarta EE) também existe.
Você também vai ter frameworks para gerar front baseaso em Java, como o GWT
- Javalite vai ter uma pegada mais parecida com rails, tem o quarkus também. O mundo J2EE
(que agora se denomina Jakarta EE) também existe.
- Quais as diferenças fundamentais entre os Springboot e os demais frameworks?
- Fundamentos distintos? Só o javalite na minha opinião é diferente o suficiente, o resto é bem dizer feito em cima das mesmas abstrações e conceitos
- Quais projetos do universo Spring (Data, Batch e afins) voce utilizada no dia a dia? Caso não utilize, pq?
- Eu mal utilizo spring boot. O meu mais costumaz específico mesmo (além da injeção e da questão dos end-points) é spring-jdbc
- Quais as versões mais utilizadas no Mercado?
- Não faço ideia na real, mas se quiser estudar pula logo pra última versão. Ela vai facilitar muita coisa. Depois é só estudar como que faria o uso daquela funcionalidade nas versões anteriores
- Quais os conhecimentos fundamentais necessários, para um mid/sr?
- Fundamentos é bem dizer o mesmo do jr. Você vai acumular mais responsabilidades com o escalar dos
cargos, então acaba que fica mais em como atender as questões de negócio e da equipe.
Uma coisa muito importante para cargos mais sênior+ é saber quando fazer um compromise
- Fundamentos é bem dizer o mesmo do jr. Você vai acumular mais responsabilidades com o escalar dos
cargos, então acaba que fica mais em como atender as questões de negócio e da equipe.
- Migração de outra lang para Java, é um bom caminho?
- É bem genérico, mas eu fiz isso
- Package by layer ou Package by Feature?
- Eu sou a favor de você preferir deixar as coisas o mais colocalizadas o possível, mas muita
coisa de geração de código (como, por exemplo, injetar dependências) depende de navegar por pacotes java.
Então você pode usar uma estrutura marcando a feature através do seu pacote e, dentro dela, separar por layers.
Na prática? O que sua equipe já estiver usando e for feliz
- Eu sou a favor de você preferir deixar as coisas o mais colocalizadas o possível, mas muita
coisa de geração de código (como, por exemplo, injetar dependências) depende de navegar por pacotes java.
- Maven ou Gradle? Pq?
- Maven é mais comum as empresas usarem, até onde vai minha percepção.
Gradle fornece vantagens em relação a configurar o build e em tempo de build, mas o maven daemon que vem surgindo por aí promete resolver essa questão de tempo de build.
De toda sorte, Gradle usa o esquema de coordenadas GAV do Maven, e se sustenta em cima da infra do próprio maven
- Maven é mais comum as empresas usarem, até onde vai minha percepção.
- Quando é necessário usar Lombok? IDE já gera todo o código com dois cliques, pq ainda usar Lombok?
- IMHO? Não usar Lombok. Traumas o suficiente com bugs que são bem difíceis de ler e entender o porquê.
- Pensando no Springboot, qual a forma ideal para injeção de dependencias?
- Não entendi isso, mas a priori injeção de construtor.
- 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?
- Normalmente você vai ter o
application.properties
, que vai ter como efeito o que as outras langs sob o.env
Você pode escrever como yaml também. De toda sorte, você pode e deve utilizar variáveis de ambiente, mesmo em outras stacks
- Normalmente você vai ter o