50 câu hỏi phỏng vấn Hibernate hàng đầu (2025)
Dưới đây là những câu hỏi và câu trả lời phỏng vấn Hibernate dành cho cả ứng viên mới và ứng viên có kinh nghiệm để có được công việc mơ ước của mình.
1. Hibernate là gì?
Hibernate là một khuôn khổ phổ biến của Java cho phép ánh xạ quan hệ đối tượng hiệu quả bằng cách sử dụng các tệp cấu hình ở định dạng XML. Sau khi các đối tượng Java ánh xạ tới các bảng cơ sở dữ liệu, cơ sở dữ liệu được sử dụng và xử lý bằng các đối tượng Java mà không cần viết các truy vấn cơ sở dữ liệu phức tạp.
Tải xuống PDF miễn phí: Câu hỏi và câu trả lời phỏng vấn Hibernate
2. ORM là gì?
ORM (Object Relational Mapping) là khái niệm cơ bản của khung Hibernate, dùng để ánh xạ các bảng cơ sở dữ liệu với các Đối tượng Java và sau đó cung cấp nhiều APIđể thực hiện các loại thao tác khác nhau trên các bảng dữ liệu.
3. Thuộc tính của một lớp được ánh xạ vào các cột của bảng cơ sở dữ liệu trong Hibernate như thế nào?
Các ánh xạ giữa các thuộc tính lớp và các cột bảng được chỉ định trong XML tập tin như trong ví dụ dưới đây:
4. Giao diện cấu hình trong chế độ ngủ đông có tác dụng gì?
Giao diện cấu hình của khung hibernate được sử dụng để cấu hình hibernate. Nó cũng được sử dụng để bootstrap hibernate. Các tài liệu ánh xạ của hibernate được định vị bằng giao diện này.
5. Làm thế nào chúng ta có thể sử dụng giao diện tùy chỉnh mới để tăng cường chức năng của các giao diện tích hợp của chế độ ngủ đông?
Chúng ta có thể sử dụng giao diện mở rộng để thêm bất kỳ chức năng cần thiết nào không được hỗ trợ bởi giao diện tích hợp sẵn.
6. Tất cả các tệp ánh xạ của hibernate có nên có phần mở rộng .hbm.xml để hoạt động bình thường không?
Không, việc có phần mở rộng .hbm.xml là một quy ước chứ không phải là yêu cầu đối với tên tệp ánh xạ hibernate. Chúng ta có thể có bất kỳ phần mở rộng nào cho các tệp ánh xạ này.
7. Làm thế nào để tạo session factory trong hibernate?
Để tạo một nhà máy phiên trong hibernate, trước tiên, một đối tượng cấu hình được tạo ra, đối tượng này tham chiếu đến đường dẫn của tệp cấu hình, sau đó đối với cấu hình đó, nhà máy phiên được tạo ra như trong ví dụ dưới đây:
Configuration config = new Configuration(); config.addResource("myinstance/configuration.hbm.xml"); config.setProperties( System.getProperties() ); SessionFactory sessions = config.buildSessionFactory();
8. POJO là gì và ý nghĩa của chúng là gì?
POJO (Plain Old Java Objects) là các java bean có phương thức getter và setter phù hợp cho từng thuộc tính.
Việc sử dụng POJO thay vì các lớp Java đơn giản tạo ra mã hiệu quả và được xây dựng tốt.
9. HQL là gì?
HQL là ngôn ngữ truy vấn được sử dụng trong Hibernate, là phần mở rộng của SQL. HQL là ngôn ngữ truy vấn rất hiệu quả, đơn giản và linh hoạt để thực hiện nhiều loại hoạt động khác nhau trên cơ sở dữ liệu quan hệ mà không cần viết các truy vấn cơ sở dữ liệu phức tạp.
10. Làm thế nào chúng ta có thể gọi các thủ tục được lưu trữ trong chế độ ngủ đông?
Trong chế độ ngủ đông, chúng ta có thể thực thi các thủ tục được lưu trữ bằng mã như sau:
11. Tiêu chí API là gì?
Criteria là một API đơn giản nhưng mạnh mẽ của Hibernate được sử dụng để truy xuất các thực thể thông qua thành phần đối tượng tiêu chí.
12. Lợi ích của việc sử dụng mẫu Hibernate là gì?
Sau đây là một số lợi ích chính của việc sử dụng mẫu Hibernate:
a. Phiên đóng được tự động hóa.
b. Tương tác với phiên ngủ đông được đơn giản hóa.
c. Xử lý ngoại lệ được tự động hóa.
13. Làm thế nào chúng ta có thể thấy SQL được tạo ra bởi Hibernate trên bảng điều khiển?
Chúng ta cần thêm nội dung sau vào tệp cấu hình hibernate để cho phép xem SQL trên bảng điều khiển nhằm mục đích gỡ lỗi:
14. Có hai loại bộ sưu tập nào trong hibernate?
Sau đây là hai loại bộ sưu tập trong hibernate:
- Bộ sưu tập được sắp xếp
- Đặt hàng thu thập
15. Sự khác biệt giữa các phương thức session.save() và session.saveOrUpdate() trong hibernate là gì?
Phương thức Sessionsave() chỉ lưu bản ghi nếu bản ghi đó là duy nhất theo khóa chính và sẽ không chèn được nếu khóa chính đã tồn tại trong bảng.
phương thức saveOrUpdate() chèn một bản ghi mới nếu khóa chính là duy nhất và sẽ cập nhật bản ghi hiện có nếu khóa chính đã tồn tại trong bảng.
16. Những lợi ích của chế độ ngủ đông là gì? JDBC?
- Hibernate có thể được sử dụng liền mạch với bất kỳ loại cơ sở dữ liệu nào vì nó độc lập với cơ sở dữ liệu trong khi với JDBC, nhà phát triển phải viết các truy vấn cụ thể cho cơ sở dữ liệu.
- Khi sử dụng hibernate, nhà phát triển không cần phải là chuyên gia trong việc viết các truy vấn phức tạp vì HQL đơn giản hóa quá trình viết truy vấn trong khi với JDBC, công việc của nhà phát triển là viết và điều chỉnh các truy vấn.
- Trong trường hợp ngủ đông, không cần phải tạo nhóm kết nối vì ngủ đông sẽ tự động xử lý mọi kết nối trong khi trong trường hợp JDBC, cần phải tạo nhóm kết nối.
17. Làm sao chúng ta có thể lấy được số liệu thống kê về chế độ ngủ đông?
Chúng ta có thể lấy số liệu thống kê hibernate bằng phương thức getStatistics() của lớp SessionFactory như hiển thị bên dưới:
SessionFactory.getStatistics()
18. Trạng thái tạm thời trong Hibernate là gì?
Nếu một thể hiện không được liên kết với bất kỳ ngữ cảnh liên tục nào và cũng chưa bao giờ được liên kết với bất kỳ ngữ cảnh liên tục nào thì nó được gọi là ở trạng thái tạm thời.
19. Làm thế nào để giảm thời gian ghi cơ sở dữ liệu trong Hibernate?
Hibernate cung cấp tính năng kiểm tra bẩn có thể được sử dụng để giảm thời gian ghi cơ sở dữ liệu. Tính năng kiểm tra bẩn của hibernate chỉ cập nhật những trường cần thay đổi trong khi vẫn giữ nguyên những trường khác.
20. Giao diện gọi lại trong hibernate được sử dụng để làm gì?
Giao diện gọi lại của hibernate hữu ích trong việc nhận thông báo sự kiện từ các đối tượng. Ví dụ, khi một đối tượng được tải hoặc xóa, một sự kiện được tạo và thông báo được gửi bằng giao diện gọi lại.
21. Khi nào một phiên bản chuyển sang trạng thái tách biệt trong chế độ ngủ đông?
Khi một thể hiện trước đó được liên kết với một ngữ cảnh cố định nào đó (ví dụ như bảng) và không còn được liên kết nữa, thì thể hiện đó sẽ ở trạng thái tách biệt.
22. Có bốn cấp độ ORM nào trong chế độ ngủ đông?
Sau đây là bốn cấp độ ORM trong hibernate:
- Quan hệ thuần túy
- Ánh xạ đối tượng ánh sáng
- Ánh xạ đối tượng trung bình
- Ánh xạ đối tượng đầy đủ
23. Quản lý giao dịch trong hibernate là gì? Nó hoạt động như thế nào?
Quản lý giao dịch là quá trình quản lý một tập hợp các câu lệnh hoặc lệnh. Trong hibernate; quản lý giao dịch được thực hiện bằng giao diện giao dịch như được hiển thị trong mã bên dưới:
Session s = null;
Transaction tr = null;
try {
s = sessionFactory.openSession();
tr = s.beginTransaction();
doTheAction(s);
tr.commit();
} catch (RuntimeException exc) {
tr.rollback();
} finally {
s.close();
}
24. Có hai phương pháp cấu hình ngủ đông nào?
Chúng ta có thể sử dụng bất kỳ phương pháp nào sau đây để cấu hình chế độ ngủ đông:
- Cấu hình dựa trên XML (sử dụng tệp hibernate.cfg.xml)
- Cấu hình theo chương trình (Sử dụng logic mã)
25. Dịch vụ bộ nhớ đệm mặc định của chế độ ngủ đông là gì?
Hibernate hỗ trợ nhiều dịch vụ bộ nhớ đệm như EHCache, OSCache, SWARMCache và TreeCache và dịch vụ bộ nhớ đệm mặc định của Hibernate là EHCache.
26. Hai liên kết ánh xạ nào được sử dụng trong chế độ ngủ đông?
Trong chế độ ngủ đông; chúng ta có hai loại liên kết ánh xạ giữa các thực thể sau:
- Hiệp hội một-một
- Liên kết nhiều-nhiều
27. Công dụng của Hibernate QBC API là gì?
API Truy vấn theo tiêu chí Hibernate (QBC) được sử dụng để tạo truy vấn bằng cách thao tác các đối tượng tiêu chí khi chạy.
28. Có bao nhiêu cách để lấy đối tượng từ cơ sở dữ liệu trong chế độ ngủ đông?
Hibernate cung cấp bốn cách sau để lấy các đối tượng từ cơ sở dữ liệu:
- Sử dụng HQL
- Sử dụng định danh
- Sử dụng API Tiêu chí
- Sử dụng SQL chuẩn
29. Khóa chính được tạo ra như thế nào khi sử dụng hibernate?
Khóa chính của cơ sở dữ liệu được chỉ định trong tệp cấu hình hbm.xml. Generator cũng có thể được sử dụng để chỉ định cách tạo khóa chính trong cơ sở dữ liệu.
Trong ví dụ dưới đây, deptId đóng vai trò là khóa chính:
30. Làm thế nào chúng ta có thể gắn lại bất kỳ đối tượng nào bị tách rời trong Hibernate?
Các đối tượng đã bị tách rời và không còn liên kết với bất kỳ thực thể cố định nào có thể được gắn lại bằng cách gọi phương thức session.merge() của lớp phiên.
31. Có những cách nào để vô hiệu hóa bộ nhớ đệm cấp độ thứ hai khi ngủ đông?
Có thể vô hiệu hóa chế độ ngủ đông bộ nhớ đệm cấp độ thứ hai bằng bất kỳ cách nào sau đây:
- Bằng cách đặt use_second_level_cache thành false.
- Bằng cách sử dụng CACHEMODE.IGNORE
- Sử dụng nhà cung cấp bộ nhớ đệm là org.hibernate.cache.NoCacheProvider
32. Siêu dữ liệu ORM là gì?
Mọi ánh xạ giữa các lớp và bảng, thuộc tính và cột, kiểu Java và kiểu SQL, v.v. đều được định nghĩa trong siêu dữ liệu ORM.
33. Nhà máy giao dịch mặc định trong chế độ ngủ đông là gì?
Với hibernate 3.2, nhà máy giao dịch mặc định là JDBCTransactionFactory.
34. Vai trò của JMX trong chế độ ngủ đông là gì?
Các ứng dụng và thành phần Java được quản lý trong hibernate bằng một API chuẩn gọi là JMX API. JMX cung cấp các công cụ để phát triển các giải pháp phân tán, dựa trên web hiệu quả và mạnh mẽ.
35. Làm thế nào chúng ta có thể liên kết phiên bản hibernate với JNDI?
Nhà máy phiên Hibernate có thể được liên kết với JNDI bằng cách thực hiện các thay đổi cấu hình trong tệp hibernate.cfg.
36. Có bao nhiêu cách để xác định đối tượng trong Hibernate?
Có thể thực hiện việc nhận dạng đối tượng trong chế độ ngủ đông theo ba cách sau:
- Sử dụng Object Identity: Sử dụng toán tử ==.
- Sử dụng Object Equality: Sử dụng phương thức equals().
- Sử dụng danh tính cơ sở dữ liệu: Các đối tượng cơ sở dữ liệu quan hệ có thể được xác định nếu chúng biểu diễn cùng một hàng.
37. Có những chiến lược tìm nạp nào khác nhau trong chế độ ngủ đông?
Các chiến lược tìm nạp sau đây có sẵn trong hibernate:
- Tham gia Lấy
- Lấy hàng loạt
- Chọn Lấy
- Chọn phụ Lấy
38. Việc ánh xạ các đối tượng Java với các bảng cơ sở dữ liệu được thực hiện như thế nào?
Để ánh xạ các đối tượng Java với các bảng cơ sở dữ liệu, chúng ta cần có tên thuộc tính Java bean giống với tên cột của bảng cơ sở dữ liệu. Sau đó, ánh xạ được cung cấp trong tệp hbm.xml như sau:
39. Thuộc tính phái sinh trong chế độ hibernate là gì?
Thuộc tính phái sinh là những thuộc tính không được ánh xạ tới bất kỳ cột nào của bảng cơ sở dữ liệu. Các thuộc tính như vậy được tính toán tại thời điểm chạy bằng cách đánh giá bất kỳ biểu thức nào.
40. Truy vấn SQL có tên trong hibernate có nghĩa là gì và nó được sử dụng như thế nào?
Truy vấn SQL được đặt tên là những truy vấn được định nghĩa trong tệp ánh xạ và được gọi khi cần thiết ở bất kỳ đâu.
Ví dụ, chúng ta có thể viết truy vấn SQL trong tệp ánh xạ XML như sau:
Sau đó truy vấn này có thể được gọi như sau:
List students = session.getNamedQuery("studentdetails")
.setString("TomBrady", name)
.setMaxResults(50)
.list();
41. Sự khác biệt giữa phương thức load() và get() trong hibernate là gì?
Phương thức Load() trả về ngoại lệ nếu không tìm thấy bản ghi cần thiết trong cơ sở dữ liệu, trong khi phương thức get() trả về null khi không tìm thấy bản ghi có id trong cơ sở dữ liệu.
Vì vậy, lý tưởng nhất là chúng ta chỉ nên sử dụng phương thức Load() khi chúng ta chắc chắn về sự tồn tại của các bản ghi theo một id.
42. Thuộc tính version trong hibernate có tác dụng gì?
Thuộc tính phiên bản được sử dụng trong chế độ ngủ đông để biết liệu một đối tượng đang ở trạng thái tạm thời hay trạng thái tách biệt.
43. Lập trình hướng thuộc tính là gì?
Trong lập trình hướng thuộc tính, nhà phát triển có thể thêm siêu dữ liệu (thuộc tính) vào mã nguồn Java để tăng thêm ý nghĩa cho mã. Đối với Java (hibernate), lập trình hướng thuộc tính được kích hoạt bởi một công cụ gọi là XDoclet.
44. Session.lock() có tác dụng gì trong chế độ ngủ đông?
Phương thức session.lock() của lớp session được sử dụng để gắn lại một đối tượng đã bị tách ra trước đó. Phương thức gắn lại này không kiểm tra bất kỳ sự đồng bộ hóa dữ liệu nào trong cơ sở dữ liệu trong khi gắn lại đối tượng và do đó có thể dẫn đến việc thiếu sự đồng bộ hóa trong dữ liệu.
45. Hibernate có hỗ trợ đa hình không?
Có, hibernate hỗ trợ đầy đủ tính đa hình. Truy vấn đa hình và liên kết đa hình được hỗ trợ trong tất cả các chiến lược ánh xạ của hibernate.
46. Ba mô hình kế thừa của hibernate là gì?
Hibernate có ba mô hình kế thừa sau:
- Bảng cho mỗi lớp cụ thể
- Bảng phân cấp theo lớp
- Bảng theo từng lớp con
47. Làm thế nào chúng ta có thể ánh xạ các lớp thành không thay đổi?
Nếu chúng ta không muốn ứng dụng cập nhật hoặc xóa các đối tượng của một lớp trong chế độ ngủ đông, chúng ta có thể làm cho lớp đó không thể thay đổi bằng cách đặt mutable=false
48. Luồng ngủ đông chung khi sử dụng RDBMS là gì?
Luồng ngủ đông chung liên quan đến RDBMS như sau:
- Tải tệp cấu hình và tạo đối tượng của lớp cấu hình.
- Sử dụng đối tượng cấu hình, tạo đối tượng sessionFactory.
- Từ sessionFactory, lấy một phiên.
- Tạo truy vấn HQL.
- Thực hiện truy vấn HQL và nhận kết quả. Kết quả sẽ ở dạng danh sách.
49. Ánh xạ vật thể ánh sáng là gì?
Ánh xạ đối tượng ánh sáng là một trong những cấp độ chất lượng ORM trong đó tất cả các thực thể được biểu diễn dưới dạng các lớp và chúng được ánh xạ theo cách thủ công.
50. Sự khác biệt giữa các liên kết được quản lý và các liên kết ngủ đông là gì?
Các liên kết được quản lý liên quan đến tính bền vững của quản lý vùng chứa và mang tính hai chiều trong khi các liên kết ngủ đông mang tính một chiều.
Những câu hỏi phỏng vấn này cũng sẽ giúp ích cho bài thi viva(orals) của bạn
Bộ sưu tập câu hỏi hay…
Giải thích tuyệt vời,,,,
Bạn có thể thêm các câu hỏi bên dưới không?
Làm thế nào chúng ta có thể gọi các thủ tục được lưu trữ trong chế độ ngủ đông?
Bộ sưu tập được sắp xếp và bộ sưu tập được sắp xếp là gì?
trạng thái liên tục là gì
Kiểm tra bẩn được cấu hình như thế nào
Cấu hình giao diện gọi lại
Làm thế nào để tách một vật thể ra
điều gì xảy ra nếu tôi tách đối tượng tạm thời
giải thích từng cấp độ ORM trong Hibernate
Cách bật/tắt bộ nhớ cache cấp độ 1 và cấp độ 2
Làm thế nào chúng ta có thể liên kết phiên bản Hibernate với JNDI?
Sự khác biệt giữa phương thức load() và get() trong hibernate là gì?
sự khác biệt giữa session.lock() và session.merge()
Làm thế nào một lớp được ánh xạ là không thay đổi và tại sao
Làm thế nào chúng ta có thể sử dụng giao diện tùy chỉnh mới để tăng cường chức năng của các giao diện tích hợp của chế độ ngủ đông?
Xin chào admin Sẽ rất hữu ích nếu bạn thêm câu hỏi này hoặc các câu hỏi trắc nghiệm quan trọng hơn cho kỳ thi cạnh tranh