Chủ đề của Tích hợp ứng dụng trang đơn với Spring Boot - Integrate single page application with Spring Boot

SBA301 - Chương 7: Truy cập dữ liệu quan hệ với JPA và Hibernate

Lớp ánh xạ đối tượng - quan hệ trong Spring Boot: JPA che phần JDBC thủ công, Hibernate với tệp cấu hình hibernate.cfg.xml và thẻ mapping resource trỏ tới tệp ánh xạ lớp Java sang bảng, giao diện Transaction để quản lý giao dịch, tính năng hbm2ddl tự sinh lược đồ. Kèm khoá lạc quan (optimistic locking) chống xung đột khi ghi đồng thời, phương thức truy vấn suy diễn từ tên hàm trong Spring Data JPA, và thời điểm nên dùng Slice thay cho Page để khỏi đếm toàn bộ bản ghi.

Xem danh sách câu hỏi14 câu hỏi100% có giải thích

Bắt đầu bằng Chế độ học nếu bạn muốn đáp án và giải thích hiện ngay sau mỗi câu — không bấm giờ, dừng lúc nào cũng được. Chọn Thi thử khi muốn biết mình đang ở đâu: có bấm giờ, chấm điểm ở cuối, và giải thích chỉ mở sau khi nộp.

Học ngân hàng câu hỏi của chủ đề

Luyện tập theo chủ đề này

14Câu hỏi hiện có

Câu hỏi của chủ đề

14/14 câuHết danh sách
1When should you use the Slice interface in Spring Data JPA?4 lựa chọnDễ100% trả lời đúng
AWhen you need the total number of elements and total pages.
BWhen you want to avoid counting all elements and improve performance.
CWhen you need to sort the results with detailed page information.
DWhen you only need the data and a "previous" indicator.
Lời giải
Khi sử dụng Slice interface trong Spring Data JPA, bạn nên lưu ý rằng nó không phải là một cách thay thế cho Page interface. Slice interface được thiết kế để trả về một phần của dữ liệu, không bao gồm thông tin tổng số phần tử và tổng số trang. Điều này giúp cải thiện hiệu suất khi bạn không cần phải đếm tất cả các phần tử. Slice interface phù hợp khi bạn cần trả về một phần dữ liệu và chỉ cần biết có phần tử trước đó hay không. Ví dụ, khi bạn muốn trả về 10 phần tử đầu tiên và chỉ cần biết có phần tử trước đó hay không, bạn có thể sử dụng Slice interface. Tuy nhiên, nếu bạn cần biết tổng số phần tử và tổng số trang, bạn nên sử dụng Page interface.
Mở trang câu hỏi này →
2What is the primary reason for connecting a RESTful web service to JPA?4 lựa chọnDễ100% trả lời đúng
ATo increase API complexity.
BTo simplify data persistence and retrieval.
CTo hide database interactions.
DTo reduce API functionality.
Lời giải
Kết nối một dịch vụ web RESTful với JPA (Java Persistence API) là một phương pháp phổ biến trong lập trình web. Lý do chính để thực hiện điều này là để đơn giản hóa quá trình lưu trữ và truy xuất dữ liệu. JPA cung cấp một lớp trừu tượng giữa ứng dụng và cơ sở dữ liệu, giúp giảm thiểu sự phức tạp trong việc quản lý dữ liệu. Khi sử dụng JPA, bạn có thể tập trung vào việc phát triển logic kinh doanh của ứng dụng mà không cần lo lắng về việc tương tác với cơ sở dữ liệu. Điều này giúp tăng hiệu suất và giảm thiểu thời gian phát triển. Ngoài ra, JPA cũng hỗ trợ các tính năng như phân tích dữ liệu, tạo báo cáo và quản lý phiên bản dữ liệu, giúp bạn có thể dễ dàng quản lý và phân tích dữ liệu của ứng dụng.
Mở trang câu hỏi này →
ABy requiring manual SQL queries for every operation.
BBy providing an object-relational mapping (ORM) layer.
CBy hiding all data from the application.
DBy increasing the number of database connections.
Lời giải
JPA (Java Persistence API) giúp quản lý tương tác với cơ sở dữ liệu bằng cách cung cấp một lớp ánh xạ đối tượng-relational (ORM). Điều này cho phép các lập trình viên viết mã Java mà không cần phải viết mã SQL thủ công để tương tác với cơ sở dữ liệu. Thay vào đó, JPA sẽ tự động chuyển đổi các đối tượng Java thành các bản ghi trong cơ sở dữ liệu và ngược lại. Điều này giúp giảm thiểu sự phức tạp và tăng cường hiệu suất khi tương tác với cơ sở dữ liệu. Ngoài ra, JPA cũng cung cấp các tính năng như quản lý trạng thái, quản lý mối quan hệ và hỗ trợ các tính năng nâng cao khác.
Mở trang câu hỏi này →
AIt prevents concurrent data conflicts
BIt improves UI rendering
CIt replaces caching
DIt manages database indexes
Lời giải
Optimistic locking trong JPA là một kỹ thuật giúp ngăn chặn các xung đột dữ liệu đồng thời. Khi một ứng dụng cố gắng cập nhật dữ liệu trong cơ sở dữ liệu, JPA sẽ kiểm tra xem bản ghi dữ liệu đó đã được cập nhật bởi người dùng khác hay chưa. Nếu dữ liệu đã được cập nhật, ứng dụng sẽ ném ra ngoại lệ, giúp ngăn chặn các xung đột dữ liệu đồng thời. Điều này giúp đảm bảo tính toàn vẹn và chính xác của dữ liệu trong cơ sở dữ liệu. Ngoài ra, optimistic locking cũng giúp cải thiện hiệu suất của ứng dụng, vì nó không yêu cầu các khóa ngoại (foreign key) để ngăn chặn các xung đột dữ liệu.
Mở trang câu hỏi này →
ACaching.
Bhbm2ddl (DDL auto feature)
CAutomatic dirty checking.
DTransaction management.
Lời giải
Tính năng chính của Hibernate cung cấp tự động tạo bảng và tạo schema là hbm2ddl (tính năng tự động DDL). Đây là tính năng cho phép Hibernate tự động tạo bảng và schema trong cơ sở dữ liệu khi bạn chạy ứng dụng. Khi bạn sử dụng hbm2ddl, Hibernate sẽ tự động tạo bảng và schema dựa trên các thông tin được định nghĩa trong các tệp mapping Hibernate (hbm.xml hoặc hibernate.cfg.xml). Điều này giúp bạn tiết kiệm thời gian và công sức khi tạo cơ sở dữ liệu cho ứng dụng của mình. Ngoài ra, tính năng này cũng giúp bạn dễ dàng quản lý và cập nhật cơ sở dữ liệu khi ứng dụng của bạn thay đổi.
Mở trang câu hỏi này →
ASession.
BTransaction.
CSessionFactory.
DConfiguration.
Lời giải
Trong Hibernate, giao diện được sử dụng để quản lý các giao dịch cơ sở dữ liệu là Transaction. Giao diện Transaction cho phép bạn bắt đầu, hoàn thành và hủy bỏ các giao dịch cơ sở dữ liệu. Điều này giúp bạn có thể quản lý các giao dịch cơ sở dữ liệu một cách hiệu quả và an toàn. Khi sử dụng giao diện Transaction, bạn có thể đảm bảo rằng các giao dịch cơ sở dữ liệu được thực hiện một cách nguyên tử và không bị ảnh hưởng bởi các lỗi hoặc sự cố khác. Ngoài ra, giao diện Transaction cũng cho phép bạn sử dụng các tính năng như rollback và commit để quản lý các giao dịch cơ sở dữ liệu.
Mở trang câu hỏi này →
AThe database connection URL.
BThe database dialect.
CThe location of a Hibernate mapping file that defines how a Java class is mapped to a database table.
DThe location of the Hibernate configuration file.
Lời giải

Dòng <mapping resource="User.hbm.xml"> trong file hibernate.cfg.xml chỉ định vị trí của một tệp định nghĩa ánh xạ Hibernate (Hibernate mapping file) mà định nghĩa cách ánh xạ một lớp Java sang một bảng trong cơ sở dữ liệu. Tệp này thường được gọi là tệp định nghĩa ánh xạ (mapping file) và thường có định dạng .hbm.xml. Mục đích chính của tệp này là định nghĩa cách ánh xạ các trường trong lớp Java sang các cột trong bảng cơ sở dữ liệu, cũng như các mối quan hệ giữa các bảng.

Mở trang câu hỏi này →
AList<Book> findByPublishedDateAfterOrderByTitleAsc(LocalDate date);
BList<Book> findAllBooksAfterDateAndSortByTitle(LocalDate date);
CList<Book> findByPublishedDate(LocalDate date, Sort sort);
DList<Book> queryAfterPublishedDateSortedByTitle(LocalDate date);
Lời giải
Để tìm kiếm tất cả các sách được xuất bản sau một ngày nhất định và sắp xếp chúng theo tiêu đề, chúng ta cần sử dụng phương thức truy vấn có tên findByPublishedDateAfterOrderByTitleAsc. Phương thức này cho phép chúng ta tìm kiếm sách dựa trên ngày xuất bản và sắp xếp chúng theo tiêu đề theo thứ tự từ A đến Z. Phương thức này được sử dụng trong Spring Data JPA, một công cụ phổ biến để truy vấn cơ sở dữ liệu trong các ứng dụng Java. Để sử dụng phương thức này, chúng ta cần tạo một interface có tên là BookRepository và thêm phương thức truy vấn vào đó. Sau đó, chúng ta có thể sử dụng phương thức này trong ứng dụng của mình để tìm kiếm sách theo các điều kiện cụ thể.
Mở trang câu hỏi này →
ASort
BPageable
CSlice
DList
Lời giải
Để xác định số trang và kích thước trang trong Spring Data JPA, bạn cần sử dụng đối tượng Pageable. Đối tượng này cho phép bạn sắp xếp và phân trang dữ liệu một cách linh hoạt. Bạn có thể sử dụng Pageable để chỉ định số trang và kích thước trang trong các phương thức tìm kiếm dữ liệu. Ví dụ, bạn có thể sử dụng Pageable để tìm kiếm 10 bản ghi trên trang thứ 2 của dữ liệu. Đối tượng Pageable cũng cho phép bạn sắp xếp dữ liệu theo các tiêu chí khác nhau, chẳng hạn như sắp xếp dữ liệu theo tên hoặc sắp xếp dữ liệu theo ngày tạo.
Mở trang câu hỏi này →
10What does the "Transient" state of an object in Hibernate indicate?4 lựa chọnDễ80% trả lời đúng
AThe object is associated with a Session and has a corresponding database record.
BThe object is not associated with any Session and does not have a database record.
CThe object was previously associated with a Session but is now detached.
DThe object is cached in the second-level cache.
Lời giải
Trạng thái 'Transient' trong Hibernate cho biết đối tượng hiện không được liên kết với bất kỳ phiên làm việc nào và không có bản ghi tương ứng trong cơ sở dữ liệu. Điều này có nghĩa là đối tượng đã được tạo hoặc cập nhật nhưng chưa được lưu trữ vào cơ sở dữ liệu. Khi đối tượng ở trạng thái này, Hibernate sẽ không tự động lưu trữ nó vào cơ sở dữ liệu khi phiên làm việc kết thúc. Thay vào đó, bạn phải sử dụng phương thức save() hoặc persist() để lưu trữ đối tượng vào cơ sở dữ liệu.
Mở trang câu hỏi này →
11In JPA, which annotation defines a many-to-many relationship?4 lựa chọnDễ100% trả lời đúng
A@OneToOne
B@OneToMany
C@ManyToMany
D@JoinColumn
Lời giải
Trong JPA, annotation nào định nghĩa mối quan hệ nhiều đến nhiều? Mối quan hệ nhiều đến nhiều là một loại mối quan hệ giữa hai bảng trong cơ sở dữ liệu, trong đó một bản ghi trong bảng này có thể liên kết với nhiều bản ghi trong bảng khác và ngược lại. Annotation @ManyToMany được sử dụng để định nghĩa mối quan hệ này. Nó cho phép bạn tạo một mối quan hệ giữa hai bảng thông qua một bảng trung gian. Ví dụ, một người có thể có nhiều bạn bè và một bạn bè cũng có thể có nhiều người. Annotation @ManyToMany giúp bạn quản lý mối quan hệ này một cách dễ dàng.
Mở trang câu hỏi này →
12Which Hibernate Cache property enables the second-level cache?4 lựa chọnDễ100% trả lời đúng
Ahibernate.cache.use_second_level_cache
Bhibernate.cache.provider_class
Chibernate.cache.region.factory_class
Dhibernate.cache.use_query_cache
Lời giải
Câu hỏi này yêu cầu bạn chọn thuộc tính của Hibernate Cache cho phép bật cache cấp hai. Cache cấp hai là một tính năng quan trọng của Hibernate giúp giảm thiểu số lượng truy vấn cơ sở dữ liệu bằng cách lưu trữ kết quả của các truy vấn trước đó trong bộ nhớ. Điều này giúp cải thiện hiệu suất ứng dụng và giảm thiểu tải trên cơ sở dữ liệu. Để bật cache cấp hai, bạn cần thiết lập thuộc tính `hibernate.cache.use_second_level_cache` thành `true`. Ngoài ra, bạn cũng cần thiết lập thuộc tính `hibernate.cache.provider_class` để chỉ định lớp cung cấp cache. Một số lớp cung cấp cache phổ biến bao gồm `org.hibernate.cache.EhCacheProvider`, `org.hibernate.cache.HashtableCacheProvider`, v.v. Bạn cần chọn lớp cung cấp cache phù hợp với nhu cầu của ứng dụng. Tóm lại, thuộc tính `hibernate.cache.use_second_level_cache` là thuộc tính quan trọng nhất cho phép bật cache cấp hai trong Hibernate.
Mở trang câu hỏi này →
13What is the purpose of the @GeneratedValue annotation?4 lựa chọnDễ100% trả lời đúng
ATo define a column name.
BTo specify the strategy for generating primary key values.
CTo create a new table.
DTo define a new entity.
Lời giải
Annotation @GeneratedValue được sử dụng để chỉ định chiến lược tạo giá trị khóa chính. Khi sử dụng @GeneratedValue, bạn có thể chọn một trong các chiến lược tạo khóa chính như AUTO, IDENTITY, SEQUENCE hoặc TABLE. Mục đích chính của @GeneratedValue là tự động tạo khóa chính cho mỗi bản ghi mới được thêm vào bảng dữ liệu. Điều này giúp giảm thiểu sự phức tạp khi phải tự tạo khóa chính cho mỗi bản ghi.
Mở trang câu hỏi này →
14Which method is used to create a Sort object for ascending order?4 lựa chọnDễ100% trả lời đúng
ASort.descending()
BSort.ascending()
CSort.unsorted()
DSort.by()
Lời giải
Để tạo một đối tượng Sort cho thứ tự tăng dần, bạn cần sử dụng phương thức Sort.ascending(). Phương thức này được sử dụng để sắp xếp dữ liệu theo thứ tự tăng dần. Ví dụ, nếu bạn có một danh sách các số từ nhỏ đến lớn, phương thức này sẽ giúp bạn sắp xếp chúng theo thứ tự tăng dần. Ngoài ra, phương thức Sort.ascending() cũng có thể được sử dụng để sắp xếp các chuỗi hoặc các đối tượng theo thứ tự tăng dần dựa trên giá trị của chúng. Tuy nhiên, cần lưu ý rằng phương thức này chỉ hoạt động khi dữ liệu được sắp xếp là một danh sách hoặc một mảng.
Mở trang câu hỏi này →

Đề có câu hỏi của chủ đề này

1 đề chứa ít nhất một câu thuộc chủ đề — mở đề để làm cả bộ, không chỉ từng câu.