Một tác vụ bulk-import xử lý 15.000 template giao dịch đã khiến hệ thống crash do lỗi Cartesian product của Hibernate. JPQL query dùng JOIN FETCH trên hai collection cùng lúc khiến Hibernate cross-join chúng, biến ~11.000 bản ghi thành 50 triệu dòng trong bộ nhớ. Lỗi này không lộ ra trong test nhỏ vì các collection được mapping dưới dạng Set thay vì List (lẽ ra phải ném MultipleBagFetchException khi khởi động). Giải pháp là tách query thành hai lần fetch riêng biệt, dùng @BatchSize để tải batch, và flush/clear session Hibernate định kỳ trong quá trình import lâu dài, giúp giảm 9 lần số dòng và cải thiện tốc độ xử lý lên 15 lần.
Vì sao nên đọc: Lập trình viên nên đọc bài này để tránh rủi ro như biến vấn đề JOIN FETCH thành Cartesian product khổng lồ, gây sập ứng dụng do quá tải bộ nhớ trong các dự án bulk import lớn.
Trả lời 3 câu hỏi ngắn để nhận điểm thưởng cho bài này. Chỉ làm khi bạn muốn lấy điểm.
3 câu hỏi · dưới một phút · không bắt buộc
Nguồn: https://code.likeagirl.io/hibernate-turned-11-000-records-into-50-million-rows-2927c5886dca. 8sync News chỉ tóm tắt và dẫn link; bản quyền nội dung thuộc tác giả và nguồn gốc.

Báo cáo benchmark thực tế từ đội thanh toán quốc tế của Trendyol cho thấy việc nâng cấp từ Java 21 lên Java 25 (LTS) giúp tăng 22,7% throughput (RPS), giảm 20,1% độ trễ trung bình, tiết kiệm 63–120MB RAM và giảm 50% overhead dữ liệu mạng. Để tối ưu, cần bật -XX:+UseCompactObjectHeaders, nâng cấp Gradle lên v9.1+ và xây dựng lại image runtime thay vì chỉ thay đổi runtime.
Lập trình viên nên đọc bài này để tìm hiểu cách tối ưu hóa hiệu suất ứng dụng Java thông qua các phiên bản mới nhất, từ đó tiết kiệm tài nguyên và cải thiện trải nghiệm người dùng hiệu quả.
Java 26 bổ sung nhiều cải tiến về hiệu năng, bảo mật và tính năng ngôn ngữ. Đáng chú ý gồm: hạn chế sửa đổi phản chiếu (reflective) đối với trường final; loại bỏ API Applet lỗi thời; hỗ trợ AOT object caching cho mọi bộ thu gom rác (kể cả ZGC); bổ sung HTTP/3 qua QUIC trong HTTP Client API; cải thiện throughput cho G1 GC; phiên bản preview thứ hai của PEM encoding APIs; phiên bản preview thứ sáu của Structured Concurrency; phiên bản preview thứ hai của Lazy Constants; phiên bản incubator thứ mười một của Vector API; và phiên bản preview thứ tư mở rộng pattern matching cho kiểu nguyên thủy trong instanceof và switch.
Những cải tiến trong Java 26 giúp nâng cao hiệu suất thực hiện và bảo mật cho ứng dụng của bạn, từ đó tối ưu hóa hiệu suất công việc và giảm rủi ro khi phát triển.
Cuốn sách "Java Programming for Raspberry Pi" giờ đây có thêm phiên bản bìa mềm và bìa cứng trên Amazon ngoài các định dạng ebook Kindle và Leanpub. Ấn bản in đã được cập nhật lớn cho Java 25 và Pi4J V4, trong khi phiên bản Leanpub vẫn được duy trì thường xuyên hơn.
Nếu bạn là lập trình viên Java muốn kết hợp với IoT và điện tử thực tế, sách này cung cấp hướng dẫn thực hành cụ thể về cách lập trình Raspberry Pi với Java 25, giúp bạn nhanh chóng chuyển từ lý thuyết sang xây dựng dự án thực tế.
Bản tin Java tuần này ghi nhận JEP 539 (Strict Field Initialization) lên trạng thái Candidate, yêu cầu khởi tạo trường trước khi đọc; các bản JDK 27 Build 29 và JDK 28 Build 5; GlassFish 7.1.1 vá hai lỗ hổng RCE; GraalVM 25.1 giảm 3% kích thước native image và hỗ trợ G1 GC trên macOS AArch64; cùng nhiều cập nhật khác như Micronaut 5.0.3, Open Liberty 26.0.0.7 beta, JReleaser 1.25.0, Apache Grails 8.0.0-M2, RefactorFirst 0.9.0 và Java Operator SDK 5.4.0.
Nếu bạn đang phát triển ứng dụng Java và quan tâm đến tính bảo mật, hiệu suất hoặc tương thích tương lai, bài này sẽ giúp bạn cập nhật những thay đổi quan trọng như JEP 539 (cập nhật quy tắc khởi tạo biến) và các tính năng mới trong JDK 27/28, từ đó tối ưu hóa mã và tránh rủi ro trong tương lai.
Trong tuần qua, Foojay.io đã tiến hành bảo trì toàn diện với việc tái cấu trúc menu điều hướng, cập nhật nội dung và bổ sung bài viết mới. Menu trên cùng được sắp xếp lại thành ba mục chính: News, Resources và Java Basics, đồng thời giới thiệu mục Featured Authors, cập nhật trang team, xây dựng trang landing cho Java Almanac với các liên kết nhanh LTS, nâng cấp Java Quick Start lên phiên bản Java 25, và đặc biệt mở rộng Pedia (giải thích thuật ngữ Java) với 13 bài viết mới về Virtual Threads, GraalVM, Project Leyden, Structured Concurrency cùng nhiều cải tiến khác.
Lập trình viên Java nên đọc bài này để cập nhật những thay đổi mới nhất về kiến thức cơ bản, công cụ hỗ trợ và các tính năng tiến bộ trong thế hệ mới của Java như Virtual Threads và Project Leyden, giúp nâng cao hiệu suất và kiến thức thực tế trong công việc.
Bài viết hướng dẫn từng bước triển khai mô hình LLM-as-a-Judge trong Spring AI bằng cách sử dụng recursive advisors, nơi LLM thứ hai đánh giá và cho điểm phản hồi của LLM sinh ra dựa trên tiêu chí rubric, sau đó phản hồi phê bình được đưa trở lại prompt để tinh chỉnh. Quá trình lặp lại cho đến khi đạt ngưỡng chất lượng hoặc giới hạn số lần thử tối đa.
Làm việc với LLM-as-a-Judge trong Spring AI giúp tối ưu hóa chất lượng phản hồi của AI bằng cách kết hợp đánh giá tự động và phản hồi lặp đi lặp lại, giảm thiểu sai sót và tăng hiệu suất cho các ứng dụng tự động hóa.
Hướng dẫn thực hành xây dựng truy vấn SQL động trong Java bằng StringBuilder, StringJoiner và PreparedStatement. Nêu rõ các lỗi phổ biến như mệnh đề WHERE không hợp lệ khi bộ lọc tùy chọn là null, đồng thời giới thiệu kỹ thuật "WHERE 1=1" để an toàn khi nối thêm điều kiện AND. Có ví dụ mã trên GitHub.
Lập trình viên nên đọc bài này để tránh rủi ro khi xây dựng các câu lệnh SQL động bằng Java, từ đó bảo vệ hệ thống khỏi các lỗi SQL injection và xử lý hiệu quả các trường hợp điều kiện NULL trong WHERE clause.

Bản phát hành LTS mới Red Hat build of Quarkus 3.33 mang đến nhiều cải tiến quan trọng như nâng cấp Hibernate ORM 7.2, Reactive 3.2, Search 8.2, hỗ trợ Java 25 đầy đủ, kiểm soát bảo mật OIDC chi tiết hơn, cùng công nghệ AOT caching (dưới dạng preview) để giảm thời gian khởi động JVM. Ngoài ra, phiên bản này còn bổ sung tích hợp Jakarta Data, mặc định TLS 1.3, băm credential SHA-512, và cải thiện trải nghiệm nhà phát triển với nhiều backend cache, vòng đời đóng gói Maven mới, cũng như hỗ trợ Kafka request-reply (dưới dạng preview).
Lập trình viên phát triển ứng dụng Java doanh nghiệp nên đọc để cập nhật về Quarkus 3.33 LTS, từ đó tối ưu hiệu suất, ổn định và tính bảo mật cho dự án với các tính năng mới như Java 25, TLS 1.3, và cải tiến ORM/Hibernate, đồng thời khám phá các công nghệ tiên tiến như AOT và Kafka SmallRye để nâng cao hiệu suất và kinh nghiệm phát triển.