's Avatar

@eronalves.bsky.social

22 Followers  |  34 Following  |  44 Posts  |  Joined: 11.09.2024  |  1.9849

Latest posts by eronalves.bsky.social on Bluesky

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    📌 0

Proxy 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

14.10.2024 15:03 — 👍 1    🔁 0    💬 1    📌 0

Ninguém gosta de usar.
Como eu uso micronaut, daí usi bean introspection e gg

09.10.2024 01:13 — 👍 2    🔁 0    💬 0    📌 0

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    📌 0

Pior 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

08.10.2024 16:12 — 👍 1    🔁 0    💬 0    📌 0

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.

08.10.2024 16:03 — 👍 1    🔁 0    💬 1    📌 0

Morte aos ORMs

08.10.2024 15:35 — 👍 1    🔁 0    💬 1    📌 0

Junta 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    📌 0

Outro 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    📌 0

Mas 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.
+

08.10.2024 15:33 — 👍 0    🔁 0    💬 1    📌 0

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 +

08.10.2024 15:31 — 👍 4    🔁 1    💬 1    📌 1

Estrutural* reina de fato

08.10.2024 11:34 — 👍 0    🔁 0    💬 0    📌 0
Post image

A 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

07.10.2024 15:04 — 👍 1    🔁 0    💬 0    📌 0

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

07.10.2024 12:33 — 👍 2    🔁 0    💬 0    📌 0

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

05.10.2024 19:45 — 👍 2    🔁 0    💬 0    📌 0

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.

05.10.2024 19:43 — 👍 1    🔁 0    💬 0    📌 0

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    📌 0

Tô 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

05.10.2024 19:37 — 👍 0    🔁 0    💬 1    📌 0

Faltou o -i

05.10.2024 19:22 — 👍 0    🔁 0    💬 0    📌 0

Hoje em dia eu não gosto de Java, mas é inegável que é cabide de emprego

05.10.2024 19:18 — 👍 2    🔁 0    💬 0    📌 0

Prefiro usar var.
Mais simples.
Hoje todo mundo usa IDE, se não sabe o tipo da variável, só colocar o mouse em cima.

02.10.2024 15:55 — 👍 0    🔁 0    💬 1    📌 0
Preview
How to intercept entity changes with Hibernate event listeners - Vlad Mihalcea Learn how to intercept entity changes (persist, merge, remove) using Hibernate event listeners and replicate changes to other database tables

vladmihalcea.com/hibernate-ev...

Este artigo do vlad mihalcea é muito bom no que diz respeito a event listeners

23.09.2024 23:41 — 👍 1    🔁 1    💬 0    📌 0

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    📌 0

Você 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. +

23.09.2024 23:38 — 👍 0    🔁 0    💬 1    📌 0

Sim, combina isso com auto commit e tem a receita para o desastre.

23.09.2024 22:39 — 👍 0    🔁 0    💬 0    📌 0

Combina 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)

23.09.2024 22:34 — 👍 0    🔁 0    💬 1    📌 0
Preview
JDBC Batch INSERT and UPDATE example in Java with PreparedStatement Java tutorial on How to use JDBC batch INSERT and UPDATE with PreparedStatement with example. You should always use batch updates for better performance, it's one of the JDBC best practice.

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. +

23.09.2024 22:33 — 👍 0    🔁 0    💬 1    📌 0

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

@eronalves is following 18 prominent accounts