Header Ads

Seo Services

Chào các bạn, chúng ta biết rằng Hibernate là một ORM (Object Relational Mapping) framework hỗ trợ việc ánh xạ đối tượng trong Java sang bảng trong database. Từ đó giúp cho ứng dụng không còn phụ thuộc vào hệ quản trị cơ sở dữ liệu.

Trong bài viết này mình sẽ cùng các bạn xây dựng một chương trình Java đơn giản với chức năng lưu thông tin sinh viên vào cơ sở dữ liệu sử dụng Hibernate framework để thực hiện kết nối và thao tác với cơ sở dữ liệu.

Các công cụ mình sử dụng trong bài viết:

+ Eclipse JEE - 2019

+ MySQL server (phiên bản 8.0.15)

+ Maven 3.3.6

Và đây là cấu trúc của project.


Đầu tiên các bạn tạo cho mình một maven project bằng Eclipse với nội dung file pom.xml như sau:

<project xmlns="http://maven.apache.org/POM/4.0.0"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
    <modelVersion>4.0.0</modelVersion>  
    <groupId>com.laptrinhb2a.hibernate</groupId>  
    <artifactId>demo</artifactId>  
    <version>0.0.1-SNAPSHOT</version>  
  
    <dependencies>  
        <dependency>  
            <groupId>org.hibernate</groupId>  
            <artifactId>hibernate-core</artifactId>  
            <version>5.2.12.Final</version>  
        </dependency>  
  
        <dependency>  
            <groupId>mysql</groupId>  
            <artifactId>mysql-connector-java</artifactId>  
            <version>8.0.15</version>  
        </dependency>  
    </dependencies>  
  
    <build>  
        <plugins>  
            <plugin>  
                <artifactId>maven-compiler-plugin</artifactId>  
                <version>3.5.1</version>  
                <configuration>  
                    <source>1.8</source>  
                    <target>1.8</target>  
                </configuration>  
            </plugin>  
        </plugins>  
    </build>  
  
</project>  

Ở đây mình khai báo hai dependency là hibernate core (version 5.2.12) và mysql connector (version 8.0.15)

Sau khi khai báo file pom.xml các bạn nên build lại project để bằng cách chuột phải vào project -> Maven -> Update Project.

Sau đó các bạn tạo một mysql database có tên là testdb (các bạn có thể đặt tùy ý). Trong đó có bảng tbl_student với các trường như ảnh bên dưới.

Tiếp theo chúng ta sẽ viết cấu hình trong file hibernate.cfg.xml

connection.driver_class: Khai báo driver để kết nối đến cơ sở dữ liệu, ở đây là mysql server driver

connection.url: Cú pháp jdbc:mysql://<hostname>:<port>/<database name>

hibernate.connection.username: Tên kết nối đến cơ sở dữ liệu

hibernate.connection.password: Mật khẩu kết nói đến cơ sở dữ liệu

hibernate.dialect: Là một tham số để Hibernate biết được loại cơ sở dữ liệu mà bạn đang làm việc.

show_sql: Dùng để hiển thị các câu truy vấn mà Hibernate tạo ra và ghi ra log.

package com.laptrinhb2a.hibernate;  
  
public class Student {  
    private Integer id;  
    private String name;  
    private String address;  
      
    public Student() {  
    }  
      
    public Student(String name, String address) {  
        this.name = name;  
        this.address = address;  
    }  
  
    public Integer getId() {  
        return id;  
    }  
  
    public void setId(Integer id) {  
        this.id = id;  
    }  
  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public String getAddress() {  
        return address;  
    }  
  
    public void setAddress(String address) {  
        this.address = address;  
    }  
} 

Bây giờ đã có Java object chúng ta sẽ mapping với các trường trong cơ sở dữ liệu thông qua file Student.hbm.xml như sau:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE hibernate-mapping PUBLIC   
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"   
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">  
  
<hibernate-mapping>  
    <class name="com.laptrinhb2a.hibernate.Student" table="tbl_student" catalog="testdb">  
        <id name="id" type="java.lang.Integer">  
            <column name="id" />  
            <generator class="identity" />  
        </id>  
        <property name="name" type="string">  
            <column length="45" name="name" />  
        </property>  
        <property name="address" type="string">  
            <column length="255" name="address" />  
        </property>  
    </class>  
</hibernate-mapping> 

Sau khi tạo xong file Student.hbm.xml chúng ta sẽ thêm phần mapping vào file hibernate.cfg.xmlnhư sau


Bây giờ mình sẽ viết một lớp gọi là HibernateUtil.java có một phương thức static là getSessionFactory() để trả về một đối tượng SessionFactory với thông tin lấy từ file config.

Note: Cụ thể về phần này mình sẽ trình bày trong một bài viết khác nha!

package com.laptrinhb2a.hibernate;  
  
import org.hibernate.SessionFactory;  
import org.hibernate.cfg.Configuration;  
  
public class HibernateUtil {  
    public static SessionFactory getSessionFactory() {  
        SessionFactory sessionFactory = null;  
        try {  
            Configuration configuration = new Configuration();  
            sessionFactory = configuration.configure().buildSessionFactory();  
        } catch (Throwable ex) {  
            ex.printStackTrace();  
        }  
        return sessionFactory;  
    }  
}  

Cuối cùng mình sẽ viết lớp App.java có chứa phương thức main() để thực hiện lưu thông tin của sinh viên vào cơ sở dữ liệu.

Ở đây mình sẽ tạo một list gồm 3 sinh viên (các bạn có thể tạo nhiều hơn tùy thích) vào sau đó bấm run để chạy chương trình.

package com.laptrinhb2a.hibernate;  
  
import java.util.ArrayList;  
import java.util.List;  
  
import org.hibernate.HibernateException;  
import org.hibernate.Session;  
import org.hibernate.SessionFactory;  
import org.hibernate.Transaction;  
  
public class App {  
      
    public static void main(String[] args) {  
          
        SessionFactory factory = HibernateUtil.getSessionFactory();  
          
        Session session = factory.openSession();  
        Transaction transaction = null;  
          
        List<Student> students = new ArrayList<>();  
        students.add(new Student("Nguyễn Văn An", "Hà Nội"));  
        students.add(new Student("Vũ Văn Long", "Hải Nam"));  
        students.add(new Student("Lê Thanh Hoa", "Bắc Gian"));  
          
        try {  
            transaction = session.beginTransaction();  
            for(Student s: students) {  
                session.save(s);  
            }  
            transaction.commit();  
        } catch (HibernateException e) {  
            if (transaction != null) {  
                transaction.rollback();  
            }  
            e.printStackTrace();  
        } finally {  
            session.close();  
        }  
    }  
}

Sau khi chạy chương trình các bạn có thể xem logs ở tab Console để thấy rằng Hibernate đã tạo ra các câu query như thế nào.

Và đây chính là kết quả khi các bạn kiểm tra trong database.


Ok, vậy là trong bài viết này mình đã cùng các bạn code một chương trình Java đơn giản sử dụng Hibernate với cấu hình bằng các file xml để thao tác với cơ sở dữ liệu MySQL server. 
Còn khá là nhiều nội dung kiến thức trong bài viết mình chưa đi sâu được. Mình sẽ trình bày trong các bài viết tiếp theo. Hẹn gặp lại các bạn trong các bài viết tiếp theo về Hibernate nha!

Không có nhận xét nào:

Được tạo bởi Blogger.