Entrevista Técnica para Desenvolvedor Full Stack Java: Análise do Fluxo Completo
Candidato: Obrigado pelo seu tempo. Tenho 5 anos de experiência como desenvolvedor full stack Java, com domínio de tecnologias front-end e back-end.
Primeira Rodada: Fundamentos de Java e JVM
Entrevistador: Primeiro, explique o mecanismo de garbage collection do Java.
Candidato: A coleta de lixo é gerenciada automaticamente pela JVM, que verifi ...
Publicado em 6-26 19:19
Compreendendo as Diferenças entre resultMap e resultType no MyBatis
O resultType e o resultMap são utilizados no MyBatis para mapear os resultados de consultas SQL para objetos Java. Embora ambos compartilhem o objetivo de popular objetos, o resultMap oferece um nível de controle e flexibilidade muito superior.
A principle diferença reside na forma como o mapeamento é realizado. O resultType depende de uma corr ...
Publicado em 6-22 22:14
Técnicas de Mapeamento de Entidades e Consultas Dinâmicas Multi-Schema com Spring Boot
Utilitário para Conversão de Modelos e DTOs
No desenvolvimento de APIs robustas, a conversão frequente entre entidades de banco de dados e objetos de transferência de dados (DTOs) é uma tarefa comum. Para otimizar esse processo, podemos implementar uma classe utilitária baseada no BeanUtils do Spring e na API de Streams do Java.
package com.pro ...
Publicado em 6-21 23:07
Sistema de E-commerce para Petshop: Arquitetura SpringBoot, Vue.js e UniApp
Introdução
Este artigo apresenta o desenvolvimento de um sistema completo de e-commerce para petshop, utilizando uma arquitetura moderna baseada em SpringBoot para o backend, Vue.js para o frontend web e UniApp para aplicações móveis. O sistema oferece funcionalidades completas de gerenciametno de produtos, carrinho de compras, controle de usuá ...
Publicado em 6-21 16:00
Implementação de Aspectos Personalizados e Configuração de OSS em um Sistema de Delivery
Aspecto Personalizado para Preenchimento Automático de Campos
Para automatizar o preenchimento de campos comuns, definimos uma anotação customizada e um aspecto AOP.
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PreenchimentoAuto {
TipoOperacao valor();
}
O aspecto intercepta métodos no pacote de mapead ...
Publicado em 6-19 19:35
Desenvolvimento de DAO Tradicional e Uso de Proxy Mapper no MyBatis
Componentes Fundamentais do MyBatis
Antes de explorar as estratégias de acesso a dados, é crucial compreender o ciclo de vida e a responsabilidade dos objetos centrais do framework:
SqlSessionFactoryBuilder: Atua como uma classe utilitária para construir a fábrica de sessões. Não requer gerenciamento via Singleton; deve ser instanciada, utiliz ...
Publicado em 6-17 23:21
Implementação de Paginação e Cache em MyBatis
Paginação em MyBatis: Lógica vs Física
Paginação Lógica
O MyBatis utiliza paginação lógica por padrão, onde todos os registros são carregadso na memória antes da seleção do subconjunto desejado. Por exemplo, com 100 registros no banco e página de 10 elementos, todos os 100 são transferidos para memória antes da extração. Essa abordagem possui l ...
Publicado em 6-17 22:48
Simplificando Condições IN com @Select no MyBatis
Ao migrar recentemente do JPA para o MyBatis utilizando configuração sem XML e anotações @Select diretamente nas interfaces, deparei-me com a complexidade na implementação de condições IN.
A abordagem tradicional exige uma sintaxe bastante verbosa:
@Select({"<script>",
"SELECT *",
"FROM artigo&q ...
Publicado em 6-16 02:56
Java no Desenvolvimento Real: Anotações Comuns com Cenários de Uso Prático
No caminho para aprofundar o desenvolvimento em Java, as anotações (Annotations) são uma "ferramenta mágica" para aumentar a eficiência. Elas não são tão intuitivas quanto a lógica de negócios, mas simplificam silenciosamente as configurações, normalizam o código e reduzem o acoplamento, nos libertando de configurações XML complexas e ...
Publicado em 6-15 16:46
Otimizando Paginação Física no Oracle com MyBatis: Como Evitar o Problema de Hard Parse
O RowBounds padrão do MyBatis realiza o que chamamos de paginação em memória. Ele recupera todo o conjunto de dados do banco de dados e, somente no lado da aplicação, extrai o subconjunto desjeado. Em sistemas com grandes volumes de dados, essa abordagem é um caminho rápido para erros de OutOfMemoryError (OOM).
A solução convencional no ecossis ...
Publicado em 6-15 03:31