Spring 09/07/2026 8 phút

@Transactional: tự gọi thì vô hiệu, checked exception vẫn commit, readOnly nuốt thay đổi — ba cái bẫy im lặng

@Transactional như một buồng đệm hai cửa: mọi thứ bên trong hoặc cùng qua cửa (commit) hoặc bị đẩy ngược lại (rollback). Nhưng buồng đệm gắn ở CỬA, nên tự gọi thì không đi qua nó; checked exception mặc định vẫn commit; readOnly âm thầm nuốt thay đổi.

Spring 08/07/2026 7 phút

LazyInitializationException là tấm phiếu chỉ đổi được khi quầy chưa đóng — và vì sao OSIV giấu nó đi là một món nợ

Quan hệ lazy như tấm phiếu chỉ đổi được tại quầy đang mở (session); giao dịch đóng là quầy đóng, phiếu thành vô giá trị. OSIV giữ quầy mở cả buổi để che lỗi — đổi lại N+1 lúc render và kết nối bị giữ. Cách sửa đúng.

Spring 06/07/2026 7 phút

Một giao diện rỗng cho bạn cả tầng truy vấn — và tên phương thức sai thì ứng dụng không lên

Repository như ra lệnh cho một trợ lý cực kỳ máy móc: bạn không chỉ CÁCH tìm, chỉ đặt TÊN cho thứ mình muốn theo một văn phạm chặt, và nó dịch cái tên đó ra SQL. Truy vấn dẫn xuất từ tên, projection, và chỗ tên phương thức không còn đáng dùng.