menu

VanThuong.Com

Blog học lập trình Java và SEO miễn phí.

Hướng dẫn cách cấu hình Hibernate trong Java

Posted by on
Hibernate là một giải pháp Object-Relational Mapping(ORM) dành cho JAVA. Chắc hẳn nếu như bạn mới bắt đầu làm quen với Java thì sẽ được nghe đến nó. Kể từ 2001 cho đến nay, Hibernate đã được phát triển qua nhiều phiên bản giúp cải thiện hiệu năng về Object-Relational Persistence và Query service cho bất kỳ ứng dụng nào sử dụng nó.
Hướng dẫn cách cấu hình Hibernate trong Java

Khi mới làm quen với Hibernate, bạn sẽ được giới thiệu hoặc hướng dẫn cách cấu hình nó thông qua tập tin XML cụ thể là hibernate.cfg.xml. Tuy nhiên, trong bài viết này, mình sẽ hướng dẫn để các bạn cấu hình Hibnerate trong Java mà không sử dụng đến tập tin config XML. Sở dĩ mình không sử dụng XML là hiện tại mình thấy mọi người thường không dùng đến các tập tin XML các dự án mà thay vào đó đều cấu hình bằng Java Class.

Hướng dẫn cấu hình Hibernate

Trong hướng dẫn này, mình sử dụng hệ quản trị cơ sở dữ liệu MySQL để thực hiện nhé. Nếu như bạn dùng hệ quản trị CSDL khác thì có thể search thêm trên Google để cấu hình dialect cho nó, còn các thông tin khác về database thì cũng tương tự thôi.
1. Đầu tiên, bạn cần thêm Hibernate Dependency vào dự án của mình.
<dependency>
 <groupId>org.hibernate</groupId>
 <artifactId>hibernate-core</artifactId>
 <version>5.1.0.Final</version>
</dependency>

2. Bây giờ tạo ra một lớp Student.java trong package com.vanthuong.tutorial.model với nội dung tương tự như sau:
package com.vanthuong.tutorial.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "students")
public class Student {

    @Id
    @GeneratedValue
    private Long id;

    @Column(name="firstName")
    private String firstName;

    @Column(name="lastName")
    private String lastName;

    @Column
    private String address;

    public Student() {
    }

    public Student(Long id, String firstName, String lastName, String address) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
        this.address = address;
    }

    // ...Getters & setter goes here
}

Ở đây bạn cần lưu ý đến các Annotation của Hibernate như sau:
- @Entity: Chỉ cho hibernate biết đây là một Entity sẽ được mapping với cơ sở dữ liệu
- @Table(name="persons"): Chỉ ra tên của bảng persons trong CSDL sẽ được map với Entity
- @Column: Chỉ cho hibernate biết các field này tương ứng với các column trong CSDL

3. Tạo ra một lớp HibernateConfig.java để cấu hình như sau:
package com.vanthuong.tutorial.config;

import java.util.Properties;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

import com.vanthuong.tutorial.model.Student;

public class HibernateConfig {
    private static SessionFactory sessionFactory;
    static {
        try {
            Properties prop = new Properties();
            prop.setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/hibernate");
            prop.setProperty("hibernate.connection.username", "root");
            prop.setProperty("hibernate.connection.password", "");
            prop.setProperty("dialect", "org.hibernate.dialect.MySQLDialect");

            sessionFactory = new AnnotationConfiguration()
                    .addPackage("com.vanthuong.tutorial.model")
                    .addProperties(prop)
                    .addAnnotatedClass(Student.class)
                    .buildSessionFactory();
        } catch (Throwable ex) {
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static Session getSession() throws HibernateException {
        return sessionFactory.openSession();
    }
}
4. Tạo ra một lớp Application.java để bắt đầu sử dụng lớp cấu hình mình vừa làm ở bước 3
package com.vanthuong.tutorial.app;

import org.hibernate.Session;

import com.vanthuong.tutorial.model.Student;
import com.vanthuong.tutorial.config.HibernateConfig;

public class Application {
    public static void main(String[] args) {
        Session session = HibernateConfig.getSession();
        session.beginTransaction();
        Student student = (Student) session.get(Student.class, 1L);
        System.out.println(student.getFirstName() + "\t" + student.getLastName());
        session.close();
    }
}

5. Trong database các bạn tạo dữ liệu sau đó run thử App để xem kết quả nhé.
id    firstName    lastName    address
----------------------------------------
1     Thuong         Nguyen     VN
2     Thien            Ha             USA

Output:
Thuong Nguyen

Như vậy là mình vừa kết thúc hướng dẫn cách cấu hình Hibernate trong Java không sử dụng tập tin hibernate.cfg.xml như thông thường. Hi vọng rằng bài viết này sẽ giúp ích cho các bạn đọc giả. Đừng ngại ngần để lại bình luận nếu bạn có thắc mắc gì nhé.
2 nhận xét:
  1. cảm ơn bài viết của bạn! mình làm theo như bạn nhưng lại không được và nó ném ra một ngoại lệ trong class HibernateConfig.java

    Trả lờiXóa
    Trả lời
    1. Bạn kiểm tra lại các property nhé. Nếu nó sai thì biệt lệ ở đây sẽ bị ném ra "throw new ExceptionInInitializerError(ex);"

      Xóa

menu