Hibernate và Spring framework

Mình đã giới thiệu với các bạn cơ bản về Hibernate và do đó các bạn cũng đã biết trong Hibernate đối tượng hiện thực interface SessionFactory sẽ là đối tượng nắm dữ các thông tin liên quan đến kết nối database, các entity để thao tác với database. Sẽ tốt hơn nếu đối tượng này được quản lý bởi Spring, khi nào chúng ta cần thì chúng ta có thể lấy ra để sử dụng ngay. Trong bài viết này, mình sẽ hướng dẫn các bạn cách sử dụng Hibernate trong Spring framework các bạn nhé!

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

Hibernate và Spring framework

Spring dependency như sau:

Để làm việc với Hibernate, giống như JPA, chúng ta cũng cần thêm spring-orm dependency nữa:

Hibernate dependency:

Trong bài viết này, mình sẽ sử dụng MySQL database nên mình cũng sẽ thêm MySQL Driver dependency như sau:

Project Lombok:

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

Entity của table student có nội dung như sau:

Đối với Hibernate, Spring 5 chỉ hỗ trợ chúng ta duy nhất một class để tạo đối tượng hiện thực interface SessionFactory đó là: LocalSessionFactoryBean.

Đối tượng này cho phép chúng ta khai báo các thông tin liên quan đến database, entity luôn nên chúng ta không cần phải có tập tin cấu hình cho Hibernate nữa các bạn nhé.

Dưới đây là các thông tin cần thiết mà các bạn cần phải khai báo cho đối tượng LocalSessionFactoryBean trong Spring container:

Trong khai báo trên, như các bạn thấy, chúng ta có 3 thuộc tính của đối tượng LocalSessionFactoryBean cần phải khai báo:

Thuộc tính đầu tiên thì liên quan đến phần dataSource. DataSource ở đây chúng ta có thể hiểu nôm na là phần quản lý kết nối tới database. Chúng ta có thể khai báo nhiều loại DataSource khác nhau do nhiều tổ chức khác nhau implement interface javax.sql.DataSource.

Ở đây mình khai báo phần DataSource sử dụng đối tượng DriverManagerDataSource như sau:

Thuộc tính thứ 2 chúng ta cần khai báo đó là các thông tin liên quan đến entity. Trong bài viết này, mình chỉ định nghĩa một entity duy nhất là Student.

Thuộc tính cuối cùng là một số thuộc tính liên quan đến Hibernate. Chúng ta sẽ sử dụng dialect của MySQL, MySQLDialect và sẽ hiển thị câu SQL mà Hibernate dùng để execute database.

Vậy là chúng ta đã hoàn thành việc khai báo đối tượng hiện thực interface SessionFactory trong Spring container rồi, sử dụng nó thôi 😀

Ví dụ của mình như sau:

Hiện tại trong database của mình đang có những dữ liệu sau đây:

Hibernate và Spring framework

thì khi chạy kết quả sẽ là:

Hibernate và Spring framework

Chia sẽ bài viết này ...Share on Facebook
Facebook
0Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin

12 thoughts on “Hibernate và Spring framework

  1. Avatar

    SessionFactory sf = (SessionFactory) ac.getBean(“sessionFactory”);

    vậy bản chất khi dùng sf thì nó là loại class gì bạn nhỉ?

    SessionFactory của hibernate hay LocalSessionFactoryBean của spring-orm?

  2. Avatar

    Error creating bean with name ‘sessionFactory’ defined in class path resource [hibernate.xml]: Cannot resolve reference to bean ‘dataSource’ while setting bean property ‘dataSource’; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ‘dataSource’ available

    em code giong bai nay ma no hien loi ntn la sao v a

  3. Avatar

    từ khi học java tới giờ toàn đọc tài liệu của anh…cảm ơn anh vì tất cả những kiến thức đã chia sẽ rất đầ đủ

Add Comment