之前没有写过的代码不会再重复了,直接上干货
(1)方法一:Java代码进行实现
package com.test;
import javax.websocket.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.Test;
import com.util.HibernateSessionFactory;
import com.util.HibernateUtil;
import com.vo.Person;
public class TestHibernate {
private static SessionFactory sessionFactory;
private static org.hibernate.Session session;
private static Transaction transaction;
private static Configuration config;
private static ServiceRegistry service;
public static void before() {
// 创建配置对象
config = new Configuration().configure();
// 创建服务注册对象
service = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
// 创建会话工厂对象
sessionFactory = config.buildSessionFactory(service);
// 创建会话对象
session = sessionFactory.openSession();
// 开启事务
transaction = session.beginTransaction();
}
public static void after() {
transaction.commit(); // 提交事务
session.close(); // 关闭会话
sessionFactory.close(); // 关闭会话工厂
}
@Test
public void createTest() {
TestHibernate.before();
// 工具类
SchemaExport export = new SchemaExport(config);
// 打到控制台,输出到数据库
export.create(true, true);
TestHibernate.after();
}
}
注意:执行该方法之前,需要手动在数据库中建立相应的数据库,数据库的名称需要和配置文件保持一致。因为Hibernate只会自动建表,不会自动建库。
(2)方法二 用xml文件进行实现
这个方法主要功能是将hbm生成ddl语句,进行建表。DDL是用来操作数据库、表、视图等,所以最终需要转换成ddl语句来完成建表。这样也比较麻烦,每次建表都要单独执行该类。还有一种方法,修改配置文件。每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表。但这个参数并不建议使用,正是因为每次加载都会重新生成表,会使得表中的数据丢失。
<properties>
<property name="hibernate.hbm2ddl.auto" value="create" />
</properties>