[Hibernate] Cách thêm file hibernate XML mapping (hbm.xml) theo cách lập trình

File mapping XML của Hibernate chứa relationship mapping giữa class Java và table trong database. Chúng thường có tên là “xx.hbm.xml” và khai báo trong file cấu hình Hibernate “hibernate.cfg.xml”.

Ví dụ, file mapping (hbm.xml) được khai báo trong thẻ “mapping”.

XML:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
  <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.password">password</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mkyong</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="show_sql">true</property>
  <mapping resource="com/mkyong/common/Stock.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>

Thêm file mapping của Hibernate (hbm.xml) bằng cách lập trình
Vì bất kì lý do nào, nếu không muốn include các file mapping trong file hibernate.cfg.xml, Hibernate cung cấp một phương thức cho phép developer có thêm các file mapping vào project bằng code Java.

Chỉ cần sửa class SessionFactory mặc định của Hibernate bằng cách chuyển đường đẫn file “hbm.xml” thành tham số trong phương thức addResource().

Java:
SessionFactory sessionFactory = new Configuration()
   .addResource("com/mkyong/common/Stock.hbm.xml")
   .buildSessionFactory();

HibernateUtil.java
Code đầy đủ trong HibernateUtil.java, để load file mapping XML “xx.hbm.xml” bằng cách lập trình.

Java:
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {

            SessionFactory sessionFactory = new Configuration()
                    .configure("/com/mkyong/persistence/hibernate.cfg.xml")
                    .addResource("com/mkyong/common/Stock.hbm.xml")
                    .buildSessionFactory();

            return sessionFactory;

        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void shutdown() {
        // Close caches and connection pools
        getSessionFactory().close();
    }

}
Hoàn thành.


Cám ơn các bạn đã theo dõi. Hẹn gặp lại các bạn trong các bài viết sau :D

Bài viết tham khảo tại: https://mkyong.com/hibernate/how-to-add-hibernate-xml-mapping-file-hbm-xml-programmatically/
 

Bình luận