1.导入相关的jar包
2.实体类
- package demo;
- public class User {
- private int id;
- private String username;
- private String password;
- private int age;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public User(){
- }
- }
2.配置文件
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd
- ">
- <hibernate-configuration>
- <session-factory>
- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
- <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.connection.password"></property>
- <property name="show_sql">true</property>
- <property name="hbm2ddl.auto" >update</property>
- <mapping resource="demo/user.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
- <property name="hbm2ddl.auto" >update</property>
create: 每次加载hibernate时都会删除上一次的生成的表,然后根据你的类再重新来生成新表,这样很容易丢失数据库
update: 第一次加载hibernate时会根据实体类自动建立表的结构,以后加载hibernate时根据 实体类自动更新数据库表
注意!敲黑板!hibernate只能自动创建数据库表不可以自动创建数据库嗷~
3.映射关系
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "hibernate-mapping-3.0.dtd" >
- <hibernate-mapping>
- <class name="demo.User" table="t_user">
- <id name="id" column="ID" type="int">
- <generator class="native"/>
- </id>
- <property name="username" column="username" type="java.lang.String" />
- <property name="password" column="password" type="java.lang.String" />
- <property name="age" column="age" type="int"/>
- </class>
- </hibernate-mapping>
4.测试类
- package test;
- import java.util.EnumSet;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- 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.boot.spi.MetadataImplementor;
- import org.hibernate.cfg.Configuration;
- import org.hibernate.service.ServiceRegistry;
- import org.hibernate.tool.hbm2ddl.SchemaExport;
- import org.hibernate.tool.schema.TargetType;
- import demo.User;
- public class UserTest {
- public static void main(String[] args) {
- Configuration conf = new Configuration().configure();//1、读取配置文件
- <span style="color:#ff0000;"> StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
- Metadata metadata = new MetadataSources(serviceRegistry).buildMetadata();
- SchemaExport schemaExport = new SchemaExport();
- schemaExport.create(EnumSet.of(TargetType.DATABASE), metadata)}</span>
重点是加红部分的代码,由于用的是hibernate5.0版本所以创新数据库表的代码改变,旧版本创建数据库的代码是
- Configuration cfg = new Configuration().configure();
- SchemaExport export = new SchemaExport(cfg);
- export.create(true, true);
5。运行