`
aspnetwinform
  • 浏览: 84717 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

Hibernate从入门到精通(二)Hibernate实例演示

 
阅读更多

上篇Hibernate从入门到精通(一)JDBC简介我们主要对JDBC进行了简单介绍和使用说明这次我们做一个Hibernate简单实例,通过这个实例对比Hibernate和JDBC,了解Hibernate的优势所在。在此之前,读者有必要了解一下Hibernate中的每个jar包的作用和每个jar文件包主要负责的工作,这里我们不做过多的解释。


1、导入jar文件


    • 导入antlr-2.7.6.jar
    • 导入commons-collections-3.1.jar
    • 导入dom4j-1.6.1.jar
    • 导入hibernate-jpa-2.0-api-1.0.1.Final.jar
    • 导入hibernate3.jar
    • 导入javassist-3.12.0.GA.jar
    • 导入jta-1.1.jar
    • 导入mysql-connector-java-3.1.13-bin.jar
    • 导入slf4j-api-1.6.1.jar

这一部分没有过多的解释,只需要大家了解每个jar文件包的作用即可。

2、编辑实体

package com.entity;  
  
import java.util.Date;  
  
public class User {  
  
    private String id;    
    private String name;      
    private String password;      
    private Date createTime;      
    private Date expireTime;  
  
    public String getId() {  
        return id;  
    }  
    public void setId(String id) {  
        this.id = id;  
    }   
    public String getName() {  
        return name;  
    }   
    public void setName(String name) {  
        this.name = name;  
    }   
    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;  
    }  
}

这一步与普通的JDBC没有太大的区别,在JDBC中我们也可以通过实体封装需要的信息,如果你对面向对象编程有一定的了解相信不难理解。

3、创建数据库、表


创建数据库

说明: http://img.blog.csdn.net/20130616175235015

创建表

说明: http://img.blog.csdn.net/20130616175648453

显示表结构

说明: http://img.blog.csdn.net/20130616175712656

这一步就是一个创建数据库的过程,与我们平常做项目使用的数据库结构和过程也没有区别。

4、创建实体映射文件User.hbm.xml

<?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.entity.User">  
        <id name="id">  
            <generator class="uuid"/>  
        </id>  
        <property name="name"/>  
        <property name="password"/>  
        <property name="createTime"/>  
        <property name="expireTime"/>  
    </class>  
</hibernate-mapping>  


从这一步开始,JDBC开始与Hibernate有一定的区别,这里我们重点讲一下User.hbm.xml的作用。User.hbm.xml的作用简而言之就是对实体和数据库中的表进行相呼应,保证我们对实体对象进行的操作都会在数据库中产生与之对应响应的结果。但仅这样的配置还有一个问题那就是我们如何将能够将数据库中的表与对象进行关联。这就需要接下来的配置了。


5、创建数据库连接和映射配置文件 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>  
        <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>  
        <property name="hibernate.show_sql">true</property>  
       
        <mapping resource="com/entity/User.hbm.xml"/>  
    </session-factory>  
</hibernate-configuration> 

这里的重点区别在于,通过映射说明<mapping resource="com/entity/User.hbm.xml"/>我们可以将数据库连接和映射进行联系,也就是说通过hibernate.cfg.xml的配置,我们就可以找到具体的实体和数据库表对应关系。到此为止我们所有的配置就进行完毕了,接下来做一个测试。


6、创建测试文件 Client.java

package test;  
  
import java.util.Date;  
  
import org.hibernate.Session;  
import org.hibernate.SessionFactory;  
import org.hibernate.cfg.Configuration;  
  
import com.entity.User;  
  
public class Client {  
  
    public static void main(String[] args) {  
          
        //读取hibernate.cfg.xml文件  
        Configuration cfg = new Configuration().configure();  
          
        //建立SessionFactory  
        SessionFactory factory = cfg.buildSessionFactory();  
          
        //取得session  
        Session session = null;  
        try {  
            session = factory.openSession();  
            //开启事务  
            session.beginTransaction();  
            User user = new User();  
            user.setName("NAME1");  
            user.setPassword("PWD1");  
            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();  
                }  
            }  
        }  
    }  
} 

程序执行结果如下:

说明: http://img.blog.csdn.net/20130616175852703

通过上述实例的演示,对比上一篇Hibernate从入门到精通(一)JDBC简介文章中我们提到的JDBC操作的缺陷可以看出,我们向数据库中添加一个对象只需要通过HibernateAPI中最核心的Session接口,调用save()方法即可,不需要我们在代码中编写SQL语句,也不需要程序员对SQL语言过多的了解,这就体现了Hibernate完全面向对象编程。


到此为止,我们已经基本了解了Hibernate的基本使用步骤,接下来我们会分别讲解一些Hibernate中的一些重点概念和使用。


分享到:
评论

相关推荐

    Eclipse从入门到精通(第2版).pdf

    本书为《Eclipse从入门到精通》一书的全新改版。本书以最新的Eclipse 3.2作为写作版本。全书分为5篇:起步篇介绍了Eclipse及相关插件的安装,还介绍了一些Eclipse开发环境的基本使用技巧;SWT/JFace篇详细介绍了SWT...

    Eclipse从入门到精通(第1版+第2版)随书光盘

    Eclipse从入门到精通 (第1版+第2版)随书光盘 陈刚 清华大学出版社 第1版 2005 年6月 第2版 2007 年7月 国内第一本详细讲解SWT/JFace开发的书; 国内第一本详细讲解如何开发Eclipse插件的书; 一本写给程序员的书,是...

    eclipse从入门到精通(电子书).pdf.part2.rar

    本书共分为四篇。“起步篇”介绍了Eclipse及相关插件的安装,还介绍了一些Eclipse... 本书内容循序渐进,实例丰富,操作及开发步骤讲解详细,配书光盘含有各主要章节的操作视频演示,是Eclipse开发者不可多得的教程。

    Eclipse从入门到精通 [PDF] part1

    本书共分为四篇。“起步篇”介绍了Eclipse及相关插件的安装,还介绍了一些Eclipse...本书内容循序渐进,实例丰富,操作及开发步骤讲解详细,配书光盘含有各主要章节的操作视频演示,是Eclipse开发者不可多得的教程。

    Eclipse从入门到精通[PDF]part2

    本书共分为四篇。“起步篇”介绍了Eclipse及相关插件的安装,还介绍了一些Eclipse...本书内容循序渐进,实例丰富,操作及开发步骤讲解详细,配书光盘含有各主要章节的操作视频演示,是Eclipse开发者不可多得的教程。

    Eclipse从入门到精通 陈刚 源码

    本书共分为四篇。“起步篇”介绍了Eclipse及相关插件的安装,还介绍了一些Eclipse...本书内容循序渐进,实例丰富,操作及开发步骤讲解详细,配书光盘含有各主要章节的操作视频演示,是Eclipse开发者不可多得的教程。

    eclipse从入门到精通.pdf(电子书)

    一共有5个压缩包,总共收8分. 本书共分为四篇。“起步篇”介绍了Eclipse及相关插件... 本书内容循序渐进,实例丰富,操作及开发步骤讲解详细,配书光盘含有各主要章节的操作视频演示,是Eclipse开发者不可多得的教程。

    eclipse从入门到精通(电子书).pdf.part5.rar

    本书共分为四篇。“起步篇”介绍了Eclipse及相关插件的安装,还介绍了一些Eclipse... 本书内容循序渐进,实例丰富,操作及开发步骤讲解详细,配书光盘含有各主要章节的操作视频演示,是Eclipse开发者不可多得的教程。

    eclipse从入门到精通(电子书).pdf.part3.rar

    本书共分为四篇。“起步篇”介绍了Eclipse及相关插件的安装,还介绍了一些Eclipse... 本书内容循序渐进,实例丰富,操作及开发步骤讲解详细,配书光盘含有各主要章节的操作视频演示,是Eclipse开发者不可多得的教程。

    eclipse从入门到精通(电子书).pdf.part4.rar

    本书共分为四篇。“起步篇”介绍了Eclipse及相关插件的安装,还介绍了一些Eclipse... 本书内容循序渐进,实例丰富,操作及开发步骤讲解详细,配书光盘含有各主要章节的操作视频演示,是Eclipse开发者不可多得的教程。

Global site tag (gtag.js) - Google Analytics