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>



阅读更多
个人分类: 框架心得
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭