我的hibernate学习之旅(2)

一、HIbernate第一个实例
该实例的目录结构如下
这里写图片描述
说明:最后一个HIBERNATE3里面包含了所有的需要引用的jar包

1、新建一个普通的java项目,按照上面的步骤引入相关的jar包和配置文件

2、建立User实体类

package com.dapeng.domain;
import java.util.Date;  

public class User {  
    private String id;  
    private String username;  
    private String password;  
    private Date createTime;  
    private Date expireTime;  

    public String getId() {  
        return id;  
    }  
    public void setId(String 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 Date getCreateTime() {  
        return createTime;  
    }  
    public void setCreateTime(Date createTime) {  
        this.createTime = createTime;  
    }  
    public Date getExpireTime() {  
        return expireTime;  
    }  
    public void setExpireTime(Date expireTime) {  
        this.expireTime = expireTime;  
    }  
}  

2、提供User.hbm.xml文件,完成实体类的映射

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC   
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  

<hibernate-mapping>  
    <!--生成默认为user的数据库表-->  
    <class name="com.dapeng.domain.User">  
        <id name="id">  
            <!-- 算法的核心思想是结合机器的网卡、当地时间、一个随机数来生成GUID -->  
            <generator class="uuid"></generator>  
        </id>  
        <property name="username"></property>  
        <property name="password"></property>  
        <property name="createTime" type="date"></property>  
        <property name="expireTime" type="date"></property>  
    </class>  

</hibernate-mapping>

其中的property标签是将要生成是数据库表中的字段,在这里不用关心各个字段是什么类型的。因为Hibernate会根据上面的实体类中属性的类型来决定将来表中字段的类型

3、配置hibernate.cfg.xml文件

<!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.connection.driver_class">com.mysql.jdbc.Driver</property>  
        <!-- 设置数据库URL -->  
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>  
        <!-- 数据库用户名 -->  
        <property name="hibernate.connection.username">root</property>  
        <!-- 数据库密码 -->  
        <property name="hibernate.connection.password">11231007</property>  
        <!-- 指定对应数据库的方言,hibernate为了更好适配各种关系数据库,针对每种数据库都指定了一个方言dialect -->  
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  

        <!-- 映射文件 -->  
        <mapping resource="com/dapeng/domain/User.hbm.xml"/>
    </session-factory>  
</hibernate-configuration>  

注意:必须是“/”而不能是“.”。

4、生成表:编写工具类ExoprtDB.java,将hbm生成ddl

package com.dapeng.domain;

import org.hibernate.cfg.Configuration;  
import org.hibernate.tool.hbm2ddl.SchemaExport;  

/** 
 * 将hbm生成ddl 
 * @author liang 
 * 
 */  
public class ExportDB{    
    public static void main(String[]args){  
        //默认读取hibernate.cfg.xml文件  
        Configuration cfg = new Configuration().configure();  
        生成并输出sql到文件(当前目录)和数据库  
        SchemaExport export = new SchemaExport(cfg);  
        export.create(true, true);  
    }  
}  

到这里就可以生成User表了,但是如果直接运行ExoprtDB.java文件是不能生成User表的。因为在mysql数据中还没有建立数据库Hibernate-first。所以在mysql控制台中通过create database hibernate-first; use hibernate-first;之后再执行ExoprtDB.java文件就可以生成表了。

5、向表中添加数据

package com.dapeng.domain;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Client {
    public static void main(String[] args) {
        //读取配置文件
        Configuration cfg=new Configuration().configure();
        SessionFactory factory=cfg.buildSessionFactory();
        Session session=null;
        try{
            session=factory.openSession();
            //开启事务
            session.beginTransaction();

            User user=new User();
            user.setUsername("张永鹏");
            user.setPassword("123");
            user.setCreateTime(new Date());
            user.setExpireTime(new Date());
            //保存User对象
            session.save(user);
            //提交事务
            session.getTransaction().commit();
        }catch(Exception e){
            e.printStackTrace();
            session.getTransaction().rollback();
        }finally {
            if(session!=null){
                if(session.isOpen()){
                    //关闭session
                    session.close();
                }
            }
        }

}
}

执行该java文件就可以完成向表中增加数据了,效果如下
这里写图片描述

二、总结
通过上面的代码我们可以看出,在代码中没有涉及到任何有关JDBC的代码,作为开发人员只需要写好相应的实体类,然后通过配置就可以实现了表的建立以及向表中实现数据的插入。
在代码中有许多Hibernate的核心对象,例如Configuration、SessionFactory、Session、Transaction接口、Query接口和Criteria接口。这些内容的用处将在(1)中已经做出解释。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值