Cấu hình Spring Data JPA với @EnableJpaRepositories annotation

Trong bài viết Tổng quan về Spring Data JPA, mình đã giới thiệu với các bạn Spring Data JPA và cách cấu hình nó sử dụng tập tin XML. Có một cách khác để cấu hình Spring Data JPA đó là sử dụng các annotation mà nó hỗ trợ như @EnableJpaRepositories annotation. Cụ thể như thế nào? Chúng ta hãy cùng nhau tìm hiểu trong bài viết này các bạn nhé!

Đầu tiên, mình sẽ tạo mới một Maven project để làm ví dụ:

Spring Data JPA và Hibernate implementation dependencies như sau:

Mình sẽ sử dụng MySQL database để làm ví dụ:

Và Project Lombok nữa:

Để làm ví dụ và để đơn giản, mình định nghĩa 1 table trong database chứa thông tin sinh viên với 2 cột như sau:

Entity của table này:

và Repository class cho nó nữa:

Bây giờ, mình sẽ tạo mới một class để cấu hình cho phần thao tác với database của ứng dụng sử dụng các class Repository của Spring Data JPA với annotation @EnableJpaRepositories như sau:

Spring khi scan và gặp annotation @EnableJpaRepositories này sẽ tự động khởi tạo các đối tượng cần thiết để chúng ta có thể sử dụng các Repository của Spring Data JPA.

Thuộc tính basePackages sẽ định nghĩa package mà chúng ta đã định nghĩa các Repository. Có 2 thuộc tính khác của annotation @EnableJpaRepositories mà chúng ta cần cấu hình nữa là entityManagerFactoryRef và transactionManagerRef. Giá trị của những thuộc tính này là tên bean được tạo trong Spring container, cho các class lần lượt là của EntityManagerFactory và TransactionManager đó các bạn! Giá trị mặc định của 2 thuộc tính này lần lượt là entityManagerFactory và transactionManager các bạn nhé!

Cho EntityManagerFactory, các bạn có thể sử dụng implementation là class LocalContainerEntityManagerFactoryBean như mình như sau:

Phương thức setPackagesToScan() khai báo package sẽ chứa các JPA entity của ứng dụng. Trong ví dụ của mình thì đó là package com.huongdanjava.springdatajpa.entity.

Phương thức setDataSource() sẽ cấu hình thông tin DataSource connect tới database, các bạn có thể khai báo một bean của DataSource với implementation là class DriverManagerDataSource như sau:

Các thông tin database trong cấu hình của DataSource các bạn nên lấy từ tập tin properties. Ở đây, để đơn giản nên mình hardcode những thông tin này các bạn nhé.

Bean cho TransactionManager, các bạn có thể khai báo như sau:

Đến đây thì chúng ta đã cấu hình xong Spring Data JPA cho ứng dụng của mình.

Để kiểm tra kết quả, mình sẽ viết một class với main() method có nội dung như sau:

Giả sử trong database, mình đang có những thông tin như sau:

thì kết quả khi chạy ứng dụng sẽ như sau:

Add Comment