Hibernate学习(2)入门案例

上篇博客已经把Hibernate概念和其中的核心接口介绍,下面举个实例添加用户来介绍Hibernate如何使用。

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、编辑实体 

[java]  view plain copy print ?
  1. package com.entity;    
  2.     
  3. import java.util.Date;    
  4.     
  5. public class User {    
  6.     
  7.     private String id;      
  8.     private String name;        
  9.     private String password;        
  10.     private Date createTime;        
  11.     private Date expireTime;    
  12.     
  13.     public String getId() {    
  14.         return id;    
  15.     }    
  16.     public void setId(String id) {    
  17.         this.id = id;    
  18.     }     
  19.     public String getName() {    
  20.         return name;    
  21.     }     
  22.     public void setName(String name) {    
  23.         this.name = name;    
  24.     }     
  25.     public String getPassword() {    
  26.         return password;    
  27.     }     
  28.     public void setPassword(String password) {    
  29.         this.password = password;    
  30.     }      
  31.     public Date getCreateTime() {    
  32.         return createTime;    
  33.     }      
  34.     public void setCreateTime(Date createTime) {    
  35.         this.createTime = createTime;    
  36.     }    
  37.     
  38.     public Date getExpireTime() {    
  39.         return expireTime;    
  40.     }      
  41.     public void setExpireTime(Date expireTime) {    
  42.         this.expireTime = expireTime;    
  43.     }    
  44. }  

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

 

3、创建数据库、表


创建数据库 

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

创建表 

Hibernate学习(2)入门案例_第1张图片

显示表结构

Hibernate学习(2)入门案例_第2张图片

 

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

 

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

[html]  view plain copy print ?
  1. <?xml version="1.0"?>    
  2. <!DOCTYPE hibernate-mapping PUBLIC     
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">    
  5. <hibernate-mapping>    
  6.     <class name="com.entity.User">    
  7.         <id name="id">    
  8.             <generator class="uuid"/>    
  9.         </id>    
  10.         <property name="name"/>    
  11.         <property name="password"/>    
  12.         <property name="createTime"/>    
  13.         <property name="expireTime"/>    
  14.     </class>    
  15. </hibernate-mapping>    


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


5、创建数据库连接和映射配置文件 hibernate.cfg.xml

[html]  view plain copy print ?
  1. <!DOCTYPE hibernate-configuration PUBLIC    
  2.     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"    
  3.     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">    
  4.     
  5. <hibernate-configuration>    
  6.     <session-factory>    
  7.         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>    
  8.         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>    
  9.         <property name="hibernate.connection.username">root</property>    
  10.         <property name="hibernate.connection.password">root</property>    
  11.         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>    
  12.         <property name="hibernate.show_sql">true</property>    
  13.          
  14.         <mapping resource="com/entity/User.hbm.xml"/>    
  15.     </session-factory>    
  16. </hibernate-configuration>   

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


6、创建测试文件 Client.java 

[java]  view plain copy print ?
  1. package test;    
  2.     
  3. import java.util.Date;    
  4.     
  5. import org.hibernate.Session;    
  6. import org.hibernate.SessionFactory;    
  7. import org.hibernate.cfg.Configuration;    
  8.     
  9. import com.entity.User;    
  10.     
  11. public class Client {    
  12.     
  13.     public static void main(String[] args) {    
  14.             
  15.         //读取hibernate.cfg.xml文件    
  16.         Configuration cfg = new Configuration().configure();    
  17.             
  18.         //建立SessionFactory    
  19.         SessionFactory factory = cfg.buildSessionFactory();    
  20.             
  21.         //取得session    
  22.         Session session = null;    
  23.         try {    
  24.             session = factory.openSession();    
  25.             //开启事务    
  26.             session.beginTransaction();    
  27.             User user = new User();    
  28.             user.setName("NAME1");    
  29.             user.setPassword("PWD1");    
  30.             user.setCreateTime(new Date());    
  31.             user.setExpireTime(new Date());    
  32.                 
  33.             //保存User对象    
  34.             session.save(user);    
  35.                 
  36.             //提交事务    
  37.             session.getTransaction().commit();    
  38.         }catch(Exception e) {    
  39.             e.printStackTrace();    
  40.             //回滚事务    
  41.             session.getTransaction().rollback();    
  42.         }finally {    
  43.             if (session != null) {    
  44.                 if (session.isOpen()) {    
  45.                     //关闭session    
  46.                     session.close();    
  47.                 }    
  48.             }    
  49.         }    
  50.     }    
  51. }   

程序执行结果如下: 

Hibernate学习(2)入门案例_第3张图片

 

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


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


你可能感兴趣的:(Hibernate学习(2)入门案例)