hibernate教程4之自动创建数据库表以及插入数据

一、环境准备
环境的搭建我就不多说了,在我前面的教程有说道
1)新建java工程,导入·相关包
2)配置xml文件
3)编写实体类
下面贴出代码
user类

package czy.po;

import java.util.Date;

public class User {
    private String userId;
    private String userName;
    private String pass;
    private Date todate;
    public Date getTodate() {
        return todate;
    }
    public void setTodate(Date todate) {
        this.todate = todate;
    }
    @Override
    public String toString() {
        return "User [userId=" + userId + ", userName=" + userName + ", pass="
                + pass + "]";
    }
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPass() {
        return pass;
    }
    public void setPass(String pass) {
        this.pass = pass;
    }
}

配置跟MySQL的连接的xml文件

<?xml version="1.0"?>
<!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="show_sql">true</property>
        <property name="connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        <property name="connection.url">
            jdbc:mysql://127.0.0.1:3306/mysql</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- 方言 -->
        <mapping resource="User.hbm.xml" />

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

配置实体类的xml文件

<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
   <!--  auto-import="false" false不能自动识别对象,
   在使用hql时候需要加上包的路径 
   在使用相同的类名时候,需要把包名写上
   -->  
   <!-- package="czy"是指默认包的路径 -->

<hibernate-mapping auto-import="true" package="czy">
    <class name="czy.po.User" table="user_list1" >
   <!--  id表示是主键 -->
        <id name="userId" column="userId" >
              <generator class="native"/>       
        </id>
        <!--实体类的属性->
        <property name="userName"></property>
        <property name="pass"></property>
        <property name="todate"></property> 

    </class>

</hibernate-mapping>

基本环境弄好,接下来真正开始开工!

二、自动创建数据库表
1)配置自动生成序列(也就是自动递增)

自动生成序列
            <generator class="sequence">
                <param name="sequence">seq_user</param> 
            </generator>

2)在上面连接数据库的xml那里配置自动创建表

增加一句

<!-- 自动创建表 -->
        <property name="hbm2ddl.auto">create</property>
        <mapping resource="User.hbm.xml" />

这是MySQL的配置

<?xml version="1.0"?>
<!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="show_sql">true</property>
        <property name="connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        <property name="connection.url">
            jdbc:mysql://127.0.0.1:3306/mysql</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- 方言 -->

<!-- 自动创建表 -->
        <property name="hbm2ddl.auto">create</property>
        <mapping resource="User.hbm.xml" />

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

这是连接oracle的配置

<?xml version="1.0"?>
<!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="show_sql">true</property>
        <property name="connection.driver_class">
            oracle.jdbc.driver.OracleDriver
        </property>
        <property name="connection.url">
        jdbc:oracle:thin:@localhost:1521:orcl</property>
        <property name="connection.username">test</property>
        <property name="connection.password">admin</property>
        <property name="connection.isolation">2</property>
        <property name="dialect">
        <!--注意后面OracleDialect的写法表示兼容任何版本->
        org.hibernate.dialect.OracleDialect
        </property>
        <!-- 自动创建表 -->
        <property name="hbm2ddl.auto">create</property>
        <mapping resource="User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

3)初步成功,可以写一个测试类来试一下
新建test类

package czy.test;



import java.util.Date;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import czy.po.ChildUser;
import czy.po.User;


public class Test2 {

    public static void main(String[] args) {
        //加载总配置文件
//      Configuration cfg = new Configuration().configure("oracle.cfg.xml");
            Configuration cfg = new Configuration().configure();
                //获取会话工厂(一个数据库只能有一个会话工厂)
                SessionFactory sf = cfg.buildSessionFactory();
                //会话
                Session session = sf.openSession();
                //事务
                Transaction tx = session.beginTransaction();
                //动态插入
                Date date=new Date();
                user.setUserId("2");
//              user.setDate(date);
                user.setUserName("动态插入2");
                session.save(user);
//              session.update(user);
                System.out.println(date.toLocaleString());
                //关闭事务
                tx.commit();


    }

}

大功告成,可以在数据库查到我们的表

4)总结
配置成功的关键有以下几点:
1、数据库的连接,保证没有写错名字,有导入驱动包
2、主键id记得配置自动生成序列
3、在连接数据库的地方配置自动创建表的标签

最后有什么问题可以提出来!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值