之前跟着 教程建表 编译器报错 检查过后 发现教程版本过老。于是自己找了一个
环境 Hibernate 5.2.12 5.1.X也适用
首先 先创建实体类 取名为User 并按照编码规则 写Setter/Getter方法
文件总体结构
package org.util;
public class User {
private String id;
private String name;
private String password;
public String getName() {
return name;
}
public String getPassword() {
return password;
}
public String getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public void setId(String id) {
this.id = id;
}
public void setPassword(String password) {
this.password = password;
}
}
第二步 编写 hbm.xml 配置文件
<?xml version="1.0" ?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="org.util.User">
<id name="id">
<generator class="uuid"/>
</id>
<property name="name"/>
<property name="password"/>
</class>
</hibernate-mapping>
第三步 在hibernate.cfg.xml中 添加映射关系
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:mysql://211.159.219.126:3306/XSJ</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">******</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="show_sql">true</property>
<mapping resource="/org/util/KcbEntity.hbm.xml"/>
<mapping resource="/org/util/User.hbm.xml"/>
<!-- DB schema will be updated if needed -->
<!-- <property name="hbm2ddl.auto">update</property> -->
</session-factory>
</hibernate-configuration>
password 要自己改 第一个KcbEntity可以无视… …
第四步 创建主函数 就是这里 因为hibernate版本不一样 所以之前的报错了
package test;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.boot.spi.MetadataImplementor;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.hibernate.tool.hbm2ddl.Target;
import org.hibernate.tool.schema.TargetType;
import javax.imageio.spi.ServiceRegistry;
import java.util.EnumSet;
public class ExportDB {
public static void main(String argv[]){
org.hibernate.service.ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
MetadataImplementor metadataImplementor = (MetadataImplementor)new MetadataSources(serviceRegistry).buildMetadata();
SchemaExport export = new SchemaExport();
export.create(EnumSet.of(TargetType.DATABASE),metadataImplementor);
}
}
看一下效果
多出了一个 User表
还是个空表 因为没加数据