VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test
Interview Q/A

Câu hỏi phỏng vấn Java

Phỏng vấn Java Core 1 Phỏng vấn Java Core 2 Phỏng vấn Java Core 3 Phỏng vấn String và Exception Phỏng vấn Java Collection Phỏng vấn Servlet Phỏng vấn JSP Phỏng vấn Hibernate

Câu hỏi phỏng vấn Web

Phỏng vấn HTML Phỏng vấn CSS Phỏng vấn JavaScript Phỏng vấn JQuery Phỏng vấn AngularJS Phỏng vấn AJAX Phỏng vấn XML Phỏng vấn XPath
1 / 3
❮ ❯

List câu hỏi phỏng vấn Hibernate

Dưới đây là danh sách các câu hỏi phỏng vấn Hibernate. Nếu bạn biết bất kỳ câu hỏi phỏng vấn hay về Hibernate, vui lòng đăng nó trong phần bình luận để chia sẻ cho mọi người nhé.


1. Hibernate là gì?

Hibernate là một công cụ ORM mã nguồn mở, được sử dụng để lưu trữ, thao tác và truy xuất dữ liệu từ cơ sở dữ liệu.

chi tiết...


2. ORM là gì?

ORM là từ viết tắt của Object/Relational mapping có nghĩa là ánh xạ đối tượng/quan hệ. Đây là một kỹ thuật lập trình để ánh xạ đối tượng với dữ liệu được lưu trữ trong cơ sở dữ liệu. Nó đơn giản hóa việc tạo dữ liệu, thao tác dữ liệu và truy cập dữ liệu.


3. ORM bao gồm những gì?

Giải pháp ORM bao gồm 4 phần như sau:

  1. API để thực hiện các thao tác CRUD cơ bản.
  2. API để thể hiện các truy vấn tham chiếu đến các lớp.
  3. Phương tiện để chỉ định Metadata.
  4. Tối ưu hóa phương tiện: dirty checking,lazy associations fetching.

4. Tại sao bạn cần công cụ ORM như Hibernate?

Ưu điểm chính của ORM như Hibernate là nó bảo vệ các nhà phát triển khỏi SQL lộn xộn. Ngoài ra, ORM cung cấp các lợi ích sau:

Improved productivity

  • High-level object-oriented API
  • Less Java code to write
  • NoSQL to write

Improved performance

  • Sophisticated caching
  • Lazy loading
  • Eager loading

Improved maintainability

  • A lot less code to write

Improved portability

  • ORM framework generates database-specific SQL for you

5. Phương thức hay được sử dụng nhất để cấu hình Hibernate là gì?

  • Anotation configuration
  • XML configuration (hibernate.cfg.xml)

6. Các core interface của Hibernate là gì?

Các core interface của Hibernate framework bao gồm:

  • Configuration
  • SessionFactory
  • Session
  • Query
  • Criteria
  • Transaction

7. Session interface đóng vai trò gì trong Hibernate?

Session là interface chính được sử dụng trong ứng dụng Hibernate. Nó là một đối tượng single-threaded, short-lived biểu diễn cuộc giao tiếp giữa ứng dụng và persistent store. Nó cho phép bạn tạo các đối tượng truy vấn để lấy ra các đối tượng được lưu trữ trong store.

Vai trò của Session interface:

  • Gói một JDBC connection
  • Nhà máy cho các Transaction
  • Giữ bộ đệm bắt buộc (first-level) của các đối tượng persistent, được sử dụng khi thao tác hoặc tìm kiếm đối tượng bằng mã định danh.

8. ORM có những ưu điểm gì so với JDBC?

ORM có những ưu điểm sau so với JDBC:

  • Phát triển ứng dụng nhanh.
  • Quản lý giao dịch.
  • Tạo khóa tự động.
  • Chi tiết về các truy vấn SQL được ẩn đi.

9. Liệt kê một vài database được Hibernate hỗ trợ.

Một số cơ sở dữ liệu được Hibernate hỗ trợ là:

  • DB2
  • MySQL
  • Oracle
  • Sybase SQL Server
  • Informix Dynamic Server
  • HSQL
  • PostgreSQL
  • FrontBase

10. Kể tên 2 thành phần chính của đối tượng cấu hình Hibernate.

Database Connection

Class Mapping Setup


11. HQL là gì?

HQL là viết tắt của Hibernate Query Language - Ngôn ngữ truy vấn Hibernate được biết đến như một ngôn ngữ truy vấn hướng đối tượng. Nó giống như một ngôn ngữ truy vấn có cấu trúc (SQL).

Ưu điểm chính của HQL so với SQL là:

  • Không cần học SQL.
  • Độc lập cơ sở dữ liệu.
  • Đơn giản để viết một truy vấn.

12. Truy vấn HQL được tạo ra như thế nào?

Sử dụng phương thức: Session.createQuery()


Làm thế nào để chúng ta có thể thêm criteria vào truy vấn SQL?

Sử dụng phương thức: Session.createCriteria()


13. persistent class là gì?

Các lớp có đối tượng được lưu trữ trong bảng cơ sở dữ liệu được gọi là persistent class.


14. Các bước cơ bản của Hibernate giao tiếp với hệ quản trị cơ sở dữ liệu (RDBMS)

1. Tải Hibernate configuration file và tạo đối tượng configuration. Nó cũng sẽ tải tất cả các file hbm mapping.

2. Tạo đối tượng session factory từ đối tượng configuration.

3. Open một session từ đối tượng session factory.

4. Tạo truy vấn HQL.

5. Thự thi câu lệnh truy vấn.


15. SessionFactory đóng vai trò gì trong Hibernate?

SessionFactory tạo ra các thể hiện của Session. Nó là nhà máy của Session. Nó giữ data của bộ nhớ cache cấp 2 (second-level) mà không được bật theo mặc định.


16. SessionFactory có phải đối tượng thread-safe không?

Có, SessionFactory là một đối tượng thread-safe, vì nhiều thread không thể truy cập nó một cách đồng thời.


17. Session là gì?

Một Session trong Hibernate được sử dụng để có được một kết nối vật lý với một cơ sở dữ liệu. Đối tượng Session là nhẹ và được thiết kế để được khởi tạo mỗi khi cần tương tác với cơ sở dữ liệu. Các đối tượng persistent được lưu và truy xuất thông qua một đối tượng Session.

chi tiết...


18. Session có phải là đối tượng thread-safe không?

Không, nhiều thread có thể truy cập nó một cách đồng thời.


19. Các kiểu của mô hình kế thừa trong Hibernate là gì?

Có 3 kiểu mô hình kế thừa trong Hibernate:

  • Table per class hierarchy
  • Table per subclass
  • Table per concrete class

20. Sự khác nhau giữa phương thức session.save() và session.persist() là gì?

No.save()persist()
1)trả về identifier (Serializable) của thể hiện.Kiểu trả về là void.
2)Syn: public Serializable save(Object o)Syn: public void persist(Object o)

21. Sự khác nhau giữa phương thức get và load là gì?

Có vài Sự khác nhau giữa phương thức get và load như sau:

No.get()load()
1)Trả về null nếu không tìm thấy đối tượng.Ném ra ngoại lệ ObjectNotFoundException nếu không tìm thấy đối tượng.
2)get() luôn chọc vào database. load() không chọc vào database.
3)Nó trả về đối tượng thực tế.Nó trả về đối tượng proxy.
4)Nó nên được sử dụng nến bạn không chắc chắn về sự tồn tại của thể hiện.Nó nên được sử dụng nếu bạnchắc chắc về sự tồn tại của thể hiện.

22. Sự khác nhau giữa phương thức update và merge là gì?

No.The update() methodmerge() method
1)Update nghĩa là sửa một cái gì đó.Merge nghĩa là kết hợp nhiều cái với nhau.
2)update() nên được sử dụng nếu session không chứa trạng thái persistent với id giống nhau. Nó có nghĩa là update nên chỉ sử dụng bên trong session. Sau khi đóng session, nó sẽ throw error.merge() nên được sử dụng nếu bạn không biết về trạng thái của session, nghĩa là bạn muốn sửa bất cứ lúc nào.

Ví dụ:

...  
SessionFactory factory = cfg.buildSessionFactory();  
Session session1 = factory.openSession();  
   
Employee e1 = (Employee) session1.get(Employee.class, Integer.valueOf(101)); //101 là id của employee  
session1.close();  
   
e1.setSalary(70000);  
   
Session session2 = factory.openSession();  
Employee e2 = (Employee) session1.get(Employee.class, Integer.valueOf(101)); //truyền id giống e1
  
Transaction tx=session2.beginTransaction();  
session2.merge(e1);  
  
tx.commit();  
session2.close();  

Sau khi đóng session1, e1 ở trạng thái detached. Nó sẽ không có trong bộ đệm session1. Vì vậy, nếu bạn gọi phương thức update(), nó sẽ báo lỗi.

Sau đó, chúng tôi đã mở một session khác và load cùng một employee có id là 101. Nếu chúng ta gọi merge() trong session2, các thay đổi của e1 sẽ được hợp nhất trong e2.


23. Các trạng thái của một đối tượng trong Hibernate là gì?

Các thể hiện có thể tồn tại ở một trong ba trạng thái sau đây tại một thời điểm nhất định:

  • transient: Một thể hiện mới của một lớp persistent không liên quan đến một Session, không có đại diện trong cơ sở dữ liệu và không có giá trị định danh được coi là transient (tạm thời) bởi Hibernate.
  • persistent: Bạn có thể tạo một thể hiển transient persistent bằng cách liên kết nó với một session. Một thể hiện persistent có một dại diện trong cơ sở dữ liệu, một giá trị định danh và được liên kết với một Session.
  • detached: Khi chúng ta đóng session trong Hibernate, thể hiện persistent sẽ trở thành một thể hiện detached.

chi tiết...


24. Làm thế nào để tạo lớp immutable trong Hibernate?

Nếu bạn đánh dấu một lớp là mutable = "false", lớp đó sẽ được coi là một lớp bất biến. Theo mặc định, nó là mutable = "true".


25. dirty checking tự động trong hibernate là gì?

Tính năng dirty checking tự động của Hibernate, tự động gọi câu lệnh update trên các đối tượng được sửa đổi trong transaction.

Hãy hiểu nó bằng ví dụ được đưa ra dưới đây:

...  
SessionFactory factory = cfg.buildSessionFactory();  
Session session1 = factory.openSession();  
Transaction tx=session2.beginTransaction();  
   
Employee e1 = (Employee) session1.get(Employee.class, Integer.valueOf(101));  
   
e1.setSalary(70000);  
   
tx.commit();  
session1.close();  

Ở đây, sau khi có được nhân viên e1 và chúng ta sẽ thay đổi trạng thái của e1.

Sau khi thay đổi trạng thái, chúng ta commit. Trong trường hợp như vậy, trạng thái sẽ được cập nhật tự động. Điều này được gọi là dirty check tự động trong Hibernate.


26. Có bao nhiêu loại mapping trong Hibernate?

Có thể có 4 loại:

  1. One to One
  2. One to Many
  3. Many to One
  4. Many to Many

26.Có thể thực hiện mapping collection với One-to-One và Many-to-One không?

Không, chỉ có thể thể thực hiện mapping collection với One-to-Many and Many-to-Many.


28. lazy loading trong Hibernate là gì?

Nó tải các đối tượng con theo yêu cầu, được sử dụng để cải thiện hiệu suất.

Hibernate 3, lazy loading được bật theo mặc định và bạn không cần phải cài đặt lazy = "true". Có nghĩa là không tải các đối tượng con khi đối tượng cha được tải.


29. Sự khác biệt giữa bộ đệm cấp một và bộ đệm cấp hai là gì?

No.First Level CacheSecond Level Cache
1)First Level Cache được liên kết với Session.Second Level Cache được liên kết với SessionFactory.
2)Nó được bật theo mặc định.Nó không được bật theo mặc định.

Recent Updates

Sắp Tết 2024 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2024?interview201 câu hỏi phỏng vấn java core (phần 1)201 câu hỏi phỏng vấn java core (phần 2)201 câu hỏi phỏng vấn java core (phần 3)201 câu hỏi phỏng vấn java core (phần 4)List câu hỏi phỏng vấn HibernateList câu hỏi phỏng vấn HTMLList câu hỏi phỏng vấn Java CollectionList câu hỏi phỏng vấn JSPList câu hỏi phỏng vấn servletJava Swing - Bài tập quản lý sinh viên trong javaSắp Tết 2024 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2024?LinkedList trong javaArrayList trong javaBài tập java có lời giảiXử lý duplicate trong SQLPhím tắt hay dùng trong ExcelBảo mật tập tin ExcelDịch trang tính trong ExcelIn trang tính trong ExcelHàm VLOOKUP trong ExcelĐối tượng đồ họa trong Excel

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml