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.

Go 08/07/2026 6 phút

panic không phải throw, recover không phải catch — và panic trong goroutine giết cả chương trình

panic như nút DỪNG KHẨN của máy: dành cho hỏng hóc cấu trúc chứ không phải chi tiết không vừa, chạy trình tắt rồi ngừng. recover chỉ làm việc từ chòi điều khiển (defer), và mỗi goroutine phải tự lo nút của mình. Ba chỗ được phép panic, ba chỗ được phép recover.