您的位置:首页 > 数据库

解决Hibernate不能自动创建数据库表的问题

2018-01-15 21:45 651 查看
HibernateTest(测试类):
package club.mochunrong.hibernate.test;

import java.io.PrintStream;
import club.mochunrong.hibernate.bean.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

public class HibernateTest
{
public static void main(String[] args)
{
try
{
Configuration configuration = new Configuration()
.configure();

ServiceRegistry serviceRegistry =
new StandardServiceRegistryBuilder().applySettings(configuration.getProperties())
.build();

SessionFactory sf = configuration.buildSessionFactory(serviceRegistry);

System.out.println(sf);

User user = new User();
user.setId(12);
user.setName("moxi");
user.setAge(10);

Session session = sf.openSession();

Transaction tx = session.beginTransaction();

session.save(user);

tx.commit();
session.close();
sf.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
User(持久化类):

package club.mochunrong.hibernate.bean;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity(name="tb_user2")
public class User
implements Serializable
{
@Id
@Column(name="TB_ID")
private int id;
@Column(name="TB_NAME")
private String name;
private int age;

public int getId()
{
return this.id;
}

public void setId(int id)
{
this.id = id;
}

public String getName()
{
return this.name;
}

public void setName(String name)
{
this.name = name;
}

public int getAge()
{
return this.age;
}

public void setAge(int age)
{
this.age = age;
}

public String toString()
{
return "User [id=" + this.id + ", name=" + this.name + ", age=" + this.age + "]";
}
}

hibernate.cfg.xml(配置文件)<!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>

<!-- MySQL数据库的配置 -->
<!-- 数据库方法:告诉hibernate是什么数据库 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<!-- 数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库的连接地址 -->
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/haha</property>
<!-- 用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 密码 -->
<property name="hibernate.connection.password">chunrong</property>

<!-- ### c3p0连接池 ### -->
<property name="hibernate.c3p0.max_size">10</property>
<property name="hibernate.c3p0.min_size">2</property>
<property name="hibernate.c3p0.timeout">5000</property>

<!-- 因为hibernate的sql语句是自动生成的 ,所有通过此配置来显示自动生成的sql语句输出 -->
<property name="hibernate.show_sql">true</property>
<!-- 格式化输出的sql语句: 看起来更加清楚 -->
<property name="hibernate.format_sql">true</property>

<!-- hibernate的表是自动创建的:
根据持久化类(User Book),自动创建持久化类对象的表
正是因为hibernate的表示根据持久化类自动创建的
所以持久化类才可以与数据库表直接映射。

update : 如果持久化类对应的表不存在就自动创建,如果持久化类对应的表存在就不创建。
-->
<property name="hibernate.hbm2ddl.auto">update</property>

<!-- 配置持久化类的映射 -->
<mapping class="club.mochunrong.hibernate.bean.User" />

</session-factory>
</hibernate-configuration>

导包图:



——————————————————————————————————————————————

测试类中要注意了:

Configuration configuration = new Configuration()
.configure();

ServiceRegistry serviceRegistry =
new StandardServiceRegistryBuilder().applySettings(configuration.getProperties())
.build();

SessionFactory sf = configuration.buildSessionFactory(serviceRegistry);
以上的语句不适合新版本的Hibernate
以上用的版本是“hibernate-release-4.3.11.Final”目前我只知道适合这个版本,其他版本还没有试。

如果用太高的Hibernate版本,这些语句,在myelicpse里面就会报错,曾我试过换数据库,改数据库ini里面的驱动格式,还有配置文件里面的修修改改,搞了差不多三天,也查了三天的资料,原来我弄的版本不一样,我对着视频跟着老师弄,老师却很顺的用Hibernate自动建立了表,而我,在官网下载最新版本,照样按照他的代码逐个逐个的敲,却错误!那么我就开始找原因了,知道今天我才知道,【有一些版本高的Hibernate的包,有新的技术用新的aip,以前的不适合罢了。】

也好,因为这个问题,让我遇见了CSDN!

hibernate-release-4.3.11.Finals下载地址:

链接:http://pan.baidu.com/s/1qZ0IVxi 密码:x489
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐