- 配置hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.username">root</property>
<property name="connection.password"></property>
<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="connection.url"><![CDATA[jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=PRC&useOldAliasMetadataBehavior=true]]></property>
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.current_session_context_class">thread</property>
<mapping class="com.entity.Students" />
</session-factory>
</hibernate-configuration>
- 生成表结构
package com.entity;
import java.util.EnumSet;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.hibernate.tool.schema.TargetType;
import org.junit.Test;
public class TestStudents {
@SuppressWarnings("unused")
@Test
public void testSchemaExport() {
// 1.创建服务注册对象
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.configure().build();
// 2.生成Metadata
Metadata metadata = new MetadataSources(registry).buildMetadata();
// 3.生成表结构
SchemaExport schemaExport = new SchemaExport();
schemaExport.create(EnumSet.of(TargetType.DATABASE), metadata);
}
}
- pom依赖清单
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.3.6.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
</dependencies>
- 小结
- 连接驱动更新为cj.dbjc
- url连接用xml配置时,有多个可选参数需要使用CADAT包裹(&对xml而言是特殊字符)
- dialect值所采用的mysql版本在5.1以上的,比如MarriDB, 默认是innodb
- cfg配置开启hbm2ddl.auto
- hibernate5.3之后,生成方法不再是用create(true,true)。其基本流程:注册服务->构建元数据->生成表结构