inflearn logo

[Lv2] Chinh phục hoàn toàn JPA dành cho nhà phát triển thực thụ - Từ Persistence Context đến các mô hình thực tế

Bạn chắc hẳn đã từng viết SQL bằng JdbcTemplate rồi đúng không? Chắc hẳn ai cũng từng có trải nghiệm thở dài khi mỗi lần thay đổi một cột là phải sửa đồng thời cả SQL lẫn RowMapper. Khóa học này bắt đầu từ chính nỗi đau đó. Nếu dùng JDBC thuần để thực hiện một lệnh SELECT, bạn sẽ mất 35 dòng code. Mở Connection, tạo PreparedStatement, duyệt ResultSet, và nếu lỡ quên một lệnh close() thôi là server sẽ bị sập. Sau khi tự tay gõ qua những dòng code địa ngục này và chạm đến duy nhất một dòng save() của JPA, bạn sẽ cảm nhận được "tại sao phải dùng JPA" không chỉ bằng cái đầu mà bằng chính đôi bàn tay của mình.

(5.0) 8 đánh giá

116 học viên

Độ khó Cơ bản

Thời gian Không giới hạn

JPA
JPA
spring-jpa
spring-jpa
Java
Java
Spring
Spring
Spring Boot
Spring Boot
JPA
JPA
spring-jpa
spring-jpa
Java
Java
Spring
Spring
Spring Boot
Spring Boot

Đánh giá từ những học viên đầu tiên

5.0

5.0

Bruce Han

100% đã tham gia

Điểm rất tốt của khóa học này - Giảng viên dạy JPA rất tốt, tập trung vào thực tế. - Giải thích lý thuyết thông qua các phép ẩn dụ giúp tôi hiểu bài rất nhanh. Lưu ý khi nghe giảng - Nếu chỉ nghe không thì sẽ không nhớ được lâu. Vì vậy, tôi nghĩ việc nghe xong mỗi bài giảng, thực hành gõ theo giáo trình và hiểu rõ rồi mới chuyển sang bài tiếp theo là rất quan trọng. Điểm cần cải thiện để tốt hơn - Thỉnh thoảng có lỗi đánh máy trong video. Ví dụ, có những trường hợp phụ đề hiển thị sai từ như tính đa hình (다형성) thành tính đa dạng (다양성), hay giải thích nhầm builder.and thành builder.end.

5.0

안승현

61% đã tham gia

Tôi đang lắng nghe rất kỹ, tuy là ý kiến chủ quan nhưng đây là bài giảng dễ hiểu nhất đối với tôi.

5.0

부분적무료화

100% đã tham gia

Khóa học này giải thích JPA một cách cực kỳ dễ hiểu, đồng thời giải thích rất tốt về sự khác biệt trong mô hình (paradigm) giữa đối tượng và bảng DB kèm theo các ví dụ cụ thể. Thay vì chỉ dừng lại ở việc liệt kê các tính năng của JPA, giảng viên còn đưa ra các ví dụ về những tính năng nên dùng và những tính năng nên hạn chế, đồng thời gợi ý cách sử dụng thực tế trong công việc. Đối với những người đã sử dụng JPA khá thành thạo trong thực tế, đây là một khóa học tốt để ôn lại kiến thức. Còn đối với những người mới bắt đầu hoặc đang cân nhắc áp dụng JPA, nếu sử dụng khóa học này như một cuốn sách hướng dẫn, tôi tin rằng các bạn có thể xây dựng dịch vụ mà không gặp quá nhiều khó khăn.

Bạn sẽ nhận được điều này sau khi học.

  • Khả năng giải thích trôi chảy về bộ nhớ đệm cấp 1 (first-level cache), cơ chế phát hiện thay đổi (dirty checking) và trì hoãn ghi (write-behind) dựa trên kinh nghiệm thực tế.

  • Kinh nghiệm cảm nhận sâu sắc lý do tại sao JPA lại cần thiết sau khi trực tiếp nếm trải nỗi đau của 35 dòng mã JDBC

  • Khả năng debug thực tế để tìm ra nguyên nhân bằng cách xem log khi vấn đề N+1 xảy ra, và lựa chọn giải pháp phù hợp với tình huống giữa Fetch Join / @EntityGraph / @BatchSize.

  • Khả năng thiết kế truy vấn động gọn gàng mà không bị vướng vào "spaghetti if-else" bằng BooleanExpression của QueryDSL, đồng thời tích hợp JPA và QueryDSL thành cấu trúc tiêu chuẩn thực tế thông qua Custom Repository pattern.

  • Từ việc thiết kế thực thể (entity) đến ánh xạ quan hệ kế thừa, BaseEntity (Auditing), và cả kiểu nhúng (embedded type) — đây là tư duy thiết kế giúp bạn không còn phải thắc mắc "Nên thiết kế bảng như thế nào?" mà có thể quyết định ngay "Hãy làm theo mô hình này" khi bắt đầu một dự án thực tế.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Dành cho những ai muốn nắm bắt khái niệm JPA là gì và tại sao nên sử dụng nó.

  • Những người muốn thu hút thêm câu hỏi từ người phỏng vấn bằng các câu trả lời dựa trên kinh nghiệm thực tế.

  • Dành cho những ai đã hiểu @ManyToOne nhưng vẫn chưa rõ tại sao cần quan hệ hai chiều và mappedBy là gì.

  • Những ai muốn biết nguyên lý về thời điểm truy vấn được gửi đi, cơ chế hoạt động của việc phát hiện thay đổi (dirty checking), và tại sao không cần sử dụng update().

  • Những người cần kỹ năng thực tế để có thể đọc log truy vấn và trực tiếp giải quyết vấn đề.

Cần biết trước khi bắt đầu?

  • Ngữ pháp Java cơ bản (câu lệnh if, vòng lặp for, lớp, giao diện)

  • Kinh nghiệm tạo REST API đơn giản bằng Spring Boot

  • Kinh nghiệm thực hiện CRUD DB bằng JdbcTemplate (cơ bản như SQL SELECT, INSERT, v.v.)

Xin chào
Đây là dingcodingco

Xác minh Inflearn

Xác minh sự nghiệp

18,038

Học viên

1,845

Đánh giá

346

Trả lời

4.9

Xếp hạng

21

Các khóa học

Link giảm giá coupon 15% miễn phí!

🚀 Từng làm việc tại Toss, tốt nghiệp POSTECH | Nhà phát triển Backend hiện tại (+9 năm)
🎥 Youtuber 20.000 sub | Sáng tạo nội dung lập trình
📚 Giảng viên Inflearn | Tổng số học viên 18.000+
👥 Đang điều hành cộng đồng tuyển dụng lập trình viên (8.000+)
🧩 Contributor cho nhiều dự án mã nguồn mở (Gradle, Spring AI, v.v.)
📝 Kinh nghiệm đậu 38 bộ hồ sơ và hơn 100 lần chỉnh sửa CV trên Kmong (Đánh giá 5.0 sao)

Tôi truyền đạt những thông tin thực tế sống động từ ngành công nghiệp một cách dễ hiểu và có tính diễn dịch.

Link phỏng vấn Inflearn!

Thêm

Chương trình giảng dạy

Tất cả

41 bài giảng ∙ (9giờ 39phút)

Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

8 đánh giá

5.0

8 đánh giá

  • trixiel님의 프로필 이미지
    trixiel

    Đánh giá 6

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    Trước đây tôi chỉ mới dừng lại ở việc gắn các annotation mà chưa hiểu rõ cơ chế hoạt động bên trong, nhưng thông qua việc đi sâu vào mã kiểm thử và triển khai thực tế, tôi đã hiểu rõ hơn về cách nó hoạt động một cách logic và lý do tại sao chúng ta sử dụng JPA!

    • tarrot1415님의 프로필 이미지
      tarrot1415

      Đánh giá 3

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      Khóa học này giải thích JPA một cách cực kỳ dễ hiểu, đồng thời giải thích rất tốt về sự khác biệt trong mô hình (paradigm) giữa đối tượng và bảng DB kèm theo các ví dụ cụ thể. Thay vì chỉ dừng lại ở việc liệt kê các tính năng của JPA, giảng viên còn đưa ra các ví dụ về những tính năng nên dùng và những tính năng nên hạn chế, đồng thời gợi ý cách sử dụng thực tế trong công việc. Đối với những người đã sử dụng JPA khá thành thạo trong thực tế, đây là một khóa học tốt để ôn lại kiến thức. Còn đối với những người mới bắt đầu hoặc đang cân nhắc áp dụng JPA, nếu sử dụng khóa học này như một cuốn sách hướng dẫn, tôi tin rằng các bạn có thể xây dựng dịch vụ mà không gặp quá nhiều khó khăn.

      • abeb30318님의 프로필 이미지
        abeb30318

        Đánh giá 6

        Đánh giá trung bình 5.0

        5

        61% đã tham gia

        Tôi đang lắng nghe rất kỹ, tuy là ý kiến chủ quan nhưng đây là bài giảng dễ hiểu nhất đối với tôi.

        • techietaek님의 프로필 이미지
          techietaek

          Đánh giá 5

          Đánh giá trung bình 5.0

          5

          100% đã tham gia

          Đây là khóa học được thiết kế để bạn có thể giới thiệu và thực hành mọi thứ từ cơ bản đến mã nguồn cấp độ thực tế của JPA. Không chỉ dừng lại ở cách sử dụng đơn thuần, khóa học còn giúp tôi nắm vững nền tảng cơ bản chắc chắn hơn thông qua việc học hỏi các nguyên lý hoạt động bên trong! Cảm ơn vì một bài giảng tuyệt vời!

          • brucehan님의 프로필 이미지
            brucehan

            Đánh giá 94

            Đánh giá trung bình 4.4

            Đã chỉnh sửa

            5

            100% đã tham gia

            Điểm rất tốt của khóa học này - Giảng viên dạy JPA rất tốt, tập trung vào thực tế. - Giải thích lý thuyết thông qua các phép ẩn dụ giúp tôi hiểu bài rất nhanh. Lưu ý khi nghe giảng - Nếu chỉ nghe không thì sẽ không nhớ được lâu. Vì vậy, tôi nghĩ việc nghe xong mỗi bài giảng, thực hành gõ theo giáo trình và hiểu rõ rồi mới chuyển sang bài tiếp theo là rất quan trọng. Điểm cần cải thiện để tốt hơn - Thỉnh thoảng có lỗi đánh máy trong video. Ví dụ, có những trường hợp phụ đề hiển thị sai từ như tính đa hình (다형성) thành tính đa dạng (다양성), hay giải thích nhầm builder.and thành builder.end.

            Khóa học khác của dingcodingco

            Hãy khám phá các khóa học khác của giảng viên!

            Khóa học tương tự

            Khám phá các khóa học khác trong cùng lĩnh vực!

            Giảm 25% cho thành viên mới

            1.561.744 ₫

            25%

            2.082.324 ₫