新手上路之Hibernate:第一个Hibernate例子

http://blog.csdn.net/aboy123/article/details/10085635

一、Hibernate概述

(一)什么是Hibernate?

           Hibernate核心内容是ORM(关系对象模型)。可以将对象自动的生成数据库中的信息,使得开发更加的面向对象。这样作为程序员就可以使用面向对象的思想来操作数据库,而不用关心繁琐的JDBC。所以,Hibernate处于三层架构中的D层(持久层)。

(二)使用Hibernate的优点

1、Hibernate可以使用在java的任何项目中,不一定非要使用在java web项目中。因为Hibernate不需要类似于tomact这些容器的支持,可以直接通过一个main方法进行测试。

2、通过下面的实例,可以发现使用Hibernate可以大大减少代码量。

3、由于使用了Hibernate,代码中不涉及具体的JDBC语句,所以就方便了代码的可移植性。

二、Hibernate开发的环境搭建

(一)Hibernate的环境搭建非常简单,只需要引入Hibernate核心包(单击下载)以及Hibernate依赖包(单击下载)即可。
(二)加入数据库驱动。下面的例子中主要是采用Mysql数据库来演示的,所以在这里引入MysqL的JDBC驱动(点击下载)。
(三)提供核心配置文件hibernate.cfg.xml文件(在src文件夹下即可)。其中的配置如下(针对mysql)
    <!DOCTYPE hibernate-configuration PUBLIC  
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
      
    <hibernate-configuration>  
        <session-factory >  
            <!-- mysql数据库驱动 -->  
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
            <!-- mysql数据库名称 -->  
            <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>  
            <!-- 数据库的登陆用户名 -->  
            <property name="hibernate.connection.username">root</property>  
            <!-- 数据库的登陆密码 -->  
            <property name="hibernate.connection.password">root</property>  
            <!-- 方言:为每一种数据库提供适配器,方便转换 -->  
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
              
        </session-factory>  
    </hibernate-configuration>  


三、HIbernate第一个实例

该实例的目录结构如下
说明:最后一个HIBERNATE3里面包含了所有的需要引用的jar包

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

2、建立User实体类
    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文件,完成实体类的映射
[html] view plain copy
    <?xml version="1.0"?>  
    <!DOCTYPE hibernate-mapping PUBLIC   
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
          
    <hibernate-mapping>  
        <class name="com.example.hibernate.User">  
            <id name="id">  
                <generator class="uuid"/>  
            </id>  
            <property name="username"/>  
            <property name="password"/>  
            <property name="createTime"/>  
            <property name="expireTime"/>  
        </class>  
    </hibernate-mapping>  



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

3、配置hibernate.cfg.xml文件
    <hibernate-configuration>  
        <session-factory >  
            <!-- mysql数据库驱动 -->  
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
            <!-- mysql数据库名称 -->  
            <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>  
            <!-- 数据库的登陆用户名 -->  
            <property name="hibernate.connection.username">root</property>  
            <!-- 数据库的登陆密码 -->  
            <property name="hibernate.connection.password">root</property>  
            <!-- 方言:为每一种数据库提供适配器,方便转换 -->  
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
              
            <span style="color:#ff0000;"><mapping resource="com/example/hibernate/User.hbm.xml"/></span>  
        </session-factory>  
    </hibernate-configuration>  

注意:必须是“/”而不能是“.”。
4、生成表:编写工具类ExoprtDB.java,将hbm生成ddl
    import org.hibernate.cfg.Configuration;  
    import org.hibernate.tool.hbm2ddl.SchemaExport;  
    /** 
     * 将hbm生成ddl 
     * @author BCH 
     * 
     */  
    public class ExoprtDB {  
      
        public static void main(String[] args) {  
            //默认读取hibernate.cfg.xml文件  
            Configuration cfr = new Configuration().configure();  
              
            SchemaExport export = new SchemaExport(cfr);  
            export.create(true, true);  
        }  
    }  

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

5、向表中添加数据
    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());  
                  
                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等等。这些内容将在以后介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值