我的hibernate学习之旅(2)

来源:互联网 发布:截面数据回归分析实例 编辑:程序博客网 时间:2024/06/09 17:36

一、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