Se perguntar pra galera OOP, até mesmo funções são objetos 👍🏾
14.10.2024 15:13 — 👍 1 🔁 0 💬 0 📌 0@eronalves.bsky.social
Se perguntar pra galera OOP, até mesmo funções são objetos 👍🏾
14.10.2024 15:13 — 👍 1 🔁 0 💬 0 📌 0É tudo wrapper, mas acho que são pontos de vista que tem valor em si mesmos de serem aprendidos.
14.10.2024 15:10 — 👍 1 🔁 0 💬 0 📌 0Proxy e também Decorator né?
Proxies são bastante úteis em caching.
Você coloca o proxy na frente e deixa bem transparente a fonte do objeto, se do disco ou de caching
Ninguém gosta de usar.
Como eu uso micronaut, daí usi bean introspection e gg
Vou me render ao javismo cultural e criar umas anotações para deixar processamento de planilhas brainless
08.10.2024 22:54 — 👍 1 🔁 0 💬 0 📌 0Pior que já encarei situação que o Gson não funciona dessa forma e sim sempre com reflexão.
Foi triste. Resolvi de outro jeito
Acho que hoje em dia é MT inútil isso.
Hoje em dia é tudo via reflection/bytecode generation.
O hibernate não usa mais getter e setter, nem o Gson, e acho que nem mesmo o Jackson.
Só encontro o micronaut que ainda usa.
Morte aos ORMs
08.10.2024 15:35 — 👍 1 🔁 0 💬 1 📌 0Junta isso tudo com o próprio overhead do hibernate, e vc tem o pior framework para inserções em massa de hoje em dia
08.10.2024 15:35 — 👍 0 🔁 0 💬 0 📌 0Outro ponto importante é o modelo de write behind do hibernate, então corre um risco da aplicação sofrer out of memory enquanto faz as inserções, exceto se você fechar o ciclo de limpeza do cachê a partir de certos inserts.
08.10.2024 15:34 — 👍 0 🔁 0 💬 1 📌 0Mas não no MySQL. Teria que utilizar uma tabela a mais para prover a sequência.
Dependendo, vc ainda corre o risco de bulk inserts serem mais lentos do que inserts normais, o que relega ao tuning do batch size.
+
Otimizar performance de escrita em SQL puro é trivial. Transações + bulk insert ou COPY em pgsql.
No hibernate é bem mais complicado, pois ele exige algumas coisas.
Por exemplo, uma das exigências é o id da entidade ser do tipo Sequence.
Este tipo é suportado nativamente pelo pgsql +
Estrutural* reina de fato
08.10.2024 11:34 — 👍 0 🔁 0 💬 0 📌 0A JVM so tem o melhor GC do mundo por conta de necessidade.
Pensa que todo objeto em Java pede alocação na heap.
Tu usa um array, vai para a heap, que guarda objetos, então são muitas indireções e muito overhead
Eu acho isso muito dureza, mas fazer o que né?
Mais avançado do que isso é abusar da API do compilador para injetar métodos nas classes
O que são tipos lineares?
São tipos que podem ser "evoluídos" ou transformação de um dado em outro com withX?
Ou nenhum deles?
Lombok builders resolve um problema sério (ou pseudo problema) do próprio Java, que é a falta de argumentos nomeados e/ou struct literals
Ainda sim, vale (que surpresa né?)
Eu uso principalmente o @AllArgsConstructor e @RequiredArgsConstructor, ou quando um campo só precisa ser acessado msm, um @Getter simples ate eu perceber uma abstração melhor pra ele.
Mas esse é um dos motivos de não gostar tanto do hibernate, é um overhead Mt considerável
05.10.2024 19:37 — 👍 0 🔁 0 💬 1 📌 0Tô com um serviço na mão que o hibernate é o ofensor.
Semana que vem testo umas otimizações (usar multipart ao invés de base64, trocar LinkedList por ArrayList, usar o entityManager direto ao invés de Micronaut Data), e vejo se deixo menos pior
Faltou o -i
05.10.2024 19:22 — 👍 0 🔁 0 💬 0 📌 0Hoje em dia eu não gosto de Java, mas é inegável que é cabide de emprego
05.10.2024 19:18 — 👍 2 🔁 0 💬 0 📌 0Prefiro usar var.
Mais simples.
Hoje todo mundo usa IDE, se não sabe o tipo da variável, só colocar o mouse em cima.
vladmihalcea.com/hibernate-ev...
Este artigo do vlad mihalcea é muito bom no que diz respeito a event listeners
Ao usar o método deleteById, a entidade em si é deletada com uma chamada JPQL diretamente ao banco de dados, sem carregar a entidade e sem disparar qualquer evento, fazendo com que não haja registro algum de exclusão.
23.09.2024 23:39 — 👍 0 🔁 0 💬 1 📌 0Você usa hibernate envers e spring data?
Tome cuidado!
O envers não captura repository.deleteById, por um motivo muito simples: cada modificação em uma entidade dispara eventos dentro do hibernate, e o que o envers faz é capturar estes eventos e produzir os registros de auditoria. +
Sim, combina isso com auto commit e tem a receita para o desastre.
23.09.2024 22:39 — 👍 0 🔁 0 💬 0 📌 0Combina isso com bons meios de fazer batch insert e você tem escritas de alta performance.
Alguns outros fatores que você pode considerar para deixar as escritas mais consistentes:
- optimistic locking
- select for update
- statement grouping (um único insert com vários segmentos)
javarevisited.blogspot.com/2013/01/jdbc...
Acho que o ponto mais importante e geral para o pessoal aprender sobre aceleração de escrita é agrupar todas as suas escritas em uma única transação. Todo ORM faz isso, utilizando contextos ou gerenciamento manual de transação. +
5. Quando falamos em contratar juniores, não é contratar para o cargo junior, mas contratar pessoas junior. Isso delimita a diferença entre contratar um profissional e cobrar dele níveis acima e contratar um profissional e cobrar dele adequadamente ao cargo
23.09.2024 04:00 — 👍 4 🔁 1 💬 0 📌 0