Hiberante反向生成数据库表

来源:互联网 发布:美工培训班学费 编辑:程序博客网 时间:2024/06/03 20:42

1、hibernate.cfg.xml

注释掉此段配置

<!-- 自动更新数据库的级别 --><!--<property name="hbm2ddl.auto">create</property>-->

2、新建生成数据库表工具类

public class HibernateSchemaExport {    static Session session;    static Configuration config = null;    static Transaction tx = null;    public static void main(String[] args) {        try {            config = new Configuration().configure(new File(                    "src/main/resources/hibernate.cfg.xml"));            System.out.println("Creating tables...");            SessionFactory sessionFactory = config.buildSessionFactory();            session = sessionFactory.openSession();            tx = session.beginTransaction();            StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()                    .configure().build();            Metadata metadata = new MetadataSources(serviceRegistry)                    .buildMetadata();            SchemaExport schemaExport = new SchemaExport();            schemaExport.create(EnumSet.of(TargetType.DATABASE), metadata);            System.out.println("Table created.");            tx.commit();        } catch (HibernateException e) {            e.printStackTrace();            try {                tx.rollback();            } catch (HibernateException e1) {                e1.printStackTrace();            }        } finally {        }    }}

3、在数据库中创建JDBC链接中配置的数据库

4、执行工具类代码main


附:程序执行后未生成表的解决办法

(1)不报错状态:检查hibernate.cfg.xml文件中关于方言的配置,笔者初始配置了MySQL57Dialect的方言,数据库表未生成成功,换成55方言,解决了此问题。

<!-- SQL 方言 --><property name="dialect">org.hibernate.dialect.MySQL55Dialect</property>

(2)报错信息如下:
这里写图片描述
检查JDBC配置信息关于数据库名是否与手动创建的数据库名一致。

原创粉丝点击