Hibernate là gì?

    Ngày nay công nghệ ngày càng phát triển, thời đại 4.0 đang nổi lên phổ biến nhất trong đó là công nghệ Hibernate. Vậy Hibernate là gì? Tác dụng của nó đỗi với đời sống xã hội ra sao? Liệu rằng nó có giúp ích gì được không?

    Bạn nào có thể giải thích giúp cho mình về Hibernate này với.

    Câu hỏi của vào 15/09/2019   danh mục: Kiến thức chung.
    Thêm bình luận
  • 1 Trả lời

      Các bạn đã bao giờ nghe đến phần mềm Hibernate bao giờ chưa. Mình đảm bảo rằng trong số các bạn sẽ có rất nhiều người không biết về phần mềm Hibernate này. Nó có tác dụng gì? Ưu điểm, nhược điểm ra sao? Tại sao lại có nhiều người quan tâm tới nó như vậy.

      Vậy để hiểu rõ hơn về phần mềm này thì sau đây các bạn hãy tham khảo những thông tin dưới đây nhé.

      Hibernate là gì?

      Chính thức được gọi là Hibernate ORM, nó là một công cụ hoặc khung công tác ánh xạ quan hệ đối tượng cho ngôn ngữ lập trình Java. Đây là phần mềm miễn phí theo Giấy phép Công cộng GNU.

      Nó nhằm mục đích cung cấp cho người dùng khuôn khổ để xử lý ánh xạ trở kháng quan hệ đối tượng. Nó cũng quản lý truy cập cơ sở dữ liệu liên tục với các chức năng xử lý đối tượng mức rất cao. Nó là một khung công tác trung gian của java được sử dụng để ánh xạ quan hệ đối tượng và để thực hiện tính bền vững của đối tượng hiệu quả.

      Kiến trúc của Hibernate

      Để tìm hiểu thêm chúng ta cần hiểu kiến ​​trúc của nó, bao gồm:

      • Mã ứng dụng Java bao gồm tất cả các lớp, biến và đối tượng xác định logic nghiệp vụ của ứng dụng. Các lớp này giao tiếp với Hibernate.
      • Sau đó, Hibernate và các nguyên tắc cốt lõi của nó, sử dụng chúng ta có thể duy trì (lưu trữ hoặc lưu và truy xuất) các đối tượng của các lớp lớp nghiệp vụ của chúng ta bằng cách giao tiếp với lớp máy chủ cơ sở dữ liệu.
      • Nó sử dụng API lõi Java, Kết nối cơ sở dữ liệu Java (JDBC), API giao dịch Java (JTA). Giao diện đặt tên và giao diện Java (JNDI) để giao tiếp với cơ sở dữ liệu nhằm duy trì trạng thái của đối tượng bằng cách thực hiện đọc, tạo, cập nhật , xóa (CRUD) hoạt động.

      Về cơ bản nó được sử dụng để giao tiếp với cơ sở dữ liệu. Ở đây chúng ta chỉ tạo một số thực thể, không gì khác ngoài một lớp java sẽ tạo một bảng cơ sở dữ liệu cho chúng ta trong cơ sở dữ liệu.

      Khung Hibernate

      Ở đây chúng ta bắt gặp một câu hỏi rằng tại sao chúng ta sử dụng khung hibernate của java nếu chúng ta đã có các nguyên tắc java cốt lõi. Vì vậy, đây là câu trả lời cho điều đó:

      • Được sử dụng các khái niệm JDBC tốt nhất như:
      1. Rowset thay vì resultset
      2. DataSource (kết nối nhóm) thay vì DriverManager
      3. Hoạt động theo lô thay vì hoạt động riêng lẻ
      4. PreparedStatement thay vì Statement
      • Chi phí phát triển dự án được giảm xuống một yếu tố lớn.
      • Không có rò rỉ bộ nhớ
      • Quản lý các hiệp hội như một-nhiều, v.v … đơn giản và dễ dàng so với làm việc với các thuộc tính bộ sưu tập như java.util.Set, List, Map.
      • Là một khung ORM, Hibernate sẽ nhận được tất cả các lợi thế của nó
      • Hỗ trợ bộ đệm cấp hai
      • Đối tượng trở thành một bản ghi và ngược lại.
      • Ngoài ra còn hỗ trợ ngôn ngữ truy vấn đối tượng (HQL)
      • Hỗ trợ nhiều bộ tạo khóa chính

      Các tính năng của Hibernate

      Vì vậy, tất cả là về khung hibernate java và kiến ​​trúc của nó, hãy nói về các tính năng của ổn định ngủ đông mới nhất được phát hành cách đây 57 ngày, tức là ngày 23 tháng 2 năm 2019. Được phát triển bởi phần mềm Red Hat, đây là một nền tảng máy ảo với nhiều tính năng:

      • Nó hỗ trợ JMX và JCA.
      • Nó cung cấp một tính năng tích hợp J2EE 
      • Tại thời điểm khởi tạo hệ thống, nó tạo ra SQL.
      • Tùy chọn cung cấp nhóm kết nối nội bộ và bộ đệm ẩn câu lệnh đã chuẩn bị.
      • Nó hỗ trợ khóa lạc quan với phiên bản.
      • Nó cung cấp tìm nạp tham gia bên ngoài.
      • Nó giới thiệu khởi tạo Lazy.
      • Nó cung cấp bộ đệm cấp phiên và bộ đệm cấp hai tùy chọn.
      • Nó cung cấp Kiến trúc Cache hai lớp.
      • Tự động tạo khóa chính.
      • Nó hỗ trợ các khái niệm khó khăn của các phím tổng hợp.
      • Nó hỗ trợ khái niệm đối tượng Detached.
      • Nó giới thiệu khái niệm Kiểm tra bẩn tự động.
      • Nó cung cấp sự bền bỉ trong suốt mà không cần xử lý mã byte.
      • Nó cung cấp các ánh xạ đối tượng / quan hệ. Dưới đây là các chiến lược ánh xạ O / R khác nhau dưới dạng nhiều đối tượng thành ánh xạ một hàng,
      • Hiệp hội đa hình, hiệp hội hai hướng, lọc liên kết. Nó cũng cung cấp các tài liệu ánh xạ XML.
      • Nó cung cấp các ngôn ngữ truy vấn hướng đối tượng khác nhau.
      • Ngôn ngữ truy vấn Hibernate hướng đối tượng tối thiểu (HQL), truy vấn SQL gốc
      • Khái niệm hướng đối tượng cao của tiêu chí.

      Tại sao chúng tôi sử dụng Hibernate

      1. Object Mapping

      Với JDBC ta phải map các trường trong bảng với các thuộc tính của Java object một cách “thủ công”. Với Hibernate sẽ hỗ trợ ta map một cách “tự động” thông qua các file cấu hình map XML hay sử dụng các anotation.

      2. HQL

      Hibernate cung cấp các câu lệnh truy vấn tương tự SQL, HQL của Hibernate hỗ trợ đầy đủ các truy vấn đa hình như, HQL “hiểu” các khái niệm như kế thừa (inheritance), đa hình (polymorphysm), và liên kết (association).

      3. Database Independent

      Code sử dụng Hibernate là độc lập với hệ quản trị cơ sở dữ liệu, nghĩa là ta không cần thay đổi câu lệnh HQL khi ta chuyển từ hệ quản trị CSDL MySQL sang Oracle, hay các hệ quản trị CSDL khác… Do đó rất dễ để ta thay đổi CSDL quan hệ, đơn giản bằng cách thay đổi thông tin cấu hình hệ quản trị CSDL trong file cấu hình.

      4. Minimize Code Changes

      Khi ta thay đổi (thêm) cột vào bảng, Với JDBC ta phải thay đổi những gì:

      • Thêm thuộc tính vào POJO class.
      • Thay đổi method chứa câu truy vấn “select”, “insert”, “update” để bổ sung cột mới. Có thể có rất nhiều method, nhiều class chứa các câu truy vấn như trên. Với Hibernate ta chỉ cần:
      • Thêm thuộc tính vào POJO class.
      • Cập nhật Hibernate XML mapping file để thêm map column – property. Ta chỉ thay đổi duy nhất 2 file trên.

      5. Lazy Loading

      Với những ứng dụng Java làm việc với cơ sở dữ liệu lớn hàng trăm triệu bản ghi, việc có sử dụng Lazy loading trong truy xuất dữ liệu từ database mang lại lợi ích rất lớn. Nó giống như việc ta có thể bẻ từng chiếc đũa của bó đũa to thay vì bẻ cả bó đũa.

      Ví dụ những file tài liệu do người dùng upload được lưu ở bảng document. Bảng user có quan hệ một-nhiều với bảng document. Trong trường hợp này class User là class cha, class Document là class con. Bảng document nhanh chóng đầy lên theo thời gian. Mỗi khi ta lấy thông tin user và docment tương ứng từ database giả sử dữ liệu document là rất lớn.

      6. Loại bỏ Try-Catch Block

      Sử dụng JDBC nếu lỗi xảy khi tao tác với database thì sẽ có exception bắn ra. Bởi vậy ta phải sử dụng try-catch block để xử lý ngoại lệ. Hibernate xử lý việc này giúp bạn bằng cách nó override toàn bộ JDBC exception thành Uncheck xeption, và ta không cần viết try-catch trong code của mình nữa.

      7. Quản lý commit/ rollback Transaction

      Transaction là nhóm các hoạt động (với database) của một tác vụ. Nếu một hoạt động không thành công thì toàn bộ tác vụ không thành công. Với JDBC lập trình viên phải chủ động thực hiện comit khi toàn bộ hoạt động của tác vụ thành công, hay phải rollback khi có một hoạt động không thành công để kết thúc tác vụ. Với Hibernate thì ta không cần quan tâm đến comit hay rollback, Hibernate đã quản lý nó giúp ta rồi.

      8. Hibernate Caching

      Hibernate cung cấp một cơ chế bộ nhớ đệm, giúp giảm số lần truy cập vào database của ứng dụng càng nhiều càng tốt. Điều này sẽ có tác dụng tăng performance đáng kể cho ứng dụng của bạn. Hibernate lưu trữ các đối tượng trong session khi transation được kích hoạt. Khi một query được thực hiện liên tục, giá trị được lưu trữ trong session được sử dụng lại. Khi một transaction mới bắt đầu, dữ liệu được lấy lại từ database và được lưu trữ session. Hibernate cung cấp hai cấp độ Cach, mình sẽ có bài chi tiết hơn về Cach trong Hibernate.

      Ưu điểm

      Giới thiệu tóm tắt mọi thứ về chế độ ngủ đông, giờ là lúc để thảo luận về chương trình nghị sự chính đó là ưu điểm và nhược điểm của việc sử dụng chế độ ngủ đông. Bao quát chủ đề chúng ta hãy bắt đầu với những lợi thế của ngủ đông như sau:

      1. ORM – bảo trì dễ dàng và hiệu quả chi phí.
      2. Kiên trì minh bạch
      3. Cơ sở dữ liệu độc lập
      4. HQL – Các tính năng nâng cao của HQL như phân trang và định hình động không có trong SQL. Vì vậy, chúng ta có thể sử dụng nó trong ngủ đông.
      5. Bộ nhớ đệm hai lớp
      6. Phiên bản tài sản
      7. Mã nguồn mở và phần mềm miễn phí
      8. Khả năng mở rộng dễ dàng
      9. Lazy-Loading. Khái niệm tải lười biếng chỉ tìm nạp đối tượng cần thiết được yêu cầu để thực thi một ứng dụng.
      10. Dễ học
      11. Cũng hỗ trợ các bộ sưu tập như Danh sách, Bộ, Bản đồ.
      12. khả năng tạo khóa chính
      13. Hibernate cung cấp các lớp Phương ngữ
      14. Nó hỗ trợ các mối quan hệ như Một-Nhiều, Một-Một, Nhiều-Nhiều-Nhiều, Nhiều-Một

      Nhược điểm

      1. chậm hơn một chút so với JDBC thuần túy
      2. vấn đề mã nồi hơi
      3. tạo nhiều câu lệnh SQL trong thời gian chạy
      4. Hibernate không phù hợp để xử lý hàng loạt
      5. Hibernate chậm vì nó sử dụng phản xạ thời gian chạy
      6. Rất nhiều API để học
      7. Đôi khi gỡ lỗi và điều chỉnh hiệu suất trở nên khó khăn.
      8. Không phù hợp với các dự án nhỏ
      9. Không cho phép chèn nhiều
      10. Tạo các quires phức tạp với nhiều phép nối
      11. Các truy vấn HQL không thể gọi chương trình PL / SQL

       

      Tiểu họcĐã trả lời vào 17/09/2019
      Thêm bình luận

    • Câu trả lời của bạn
      Khi tham gia trả lời bạn phải đồng ý với các điều khoản trên web site của chúng tôi: privacy policy and terms of service.