hibernate自动建表(不用sql语句)

之前没有写过的代码不会再重复了,直接上干货

(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>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值