一、Hibernate概述

(一)什么是Hibernate?

(二)使用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)



1. <!DOCTYPE hibernate-configuration PUBLIC  
2.     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
3. >  
4.   
5. <hibernate-configuration>  
6. <session-factory >  
7. <!-- mysql数据库驱动 -->  
8. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
9. <!-- mysql数据库名称 -->  
10. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>  
11. <!-- 数据库的登陆用户名 -->  
12. <property name="hibernate.connection.username">root</property>  
13. <!-- 数据库的登陆密码 -->  
14. <property name="hibernate.connection.password">root</property>  
15. <!-- 方言:为每一种数据库提供适配器,方便转换 -->  
16. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
17.           
18. </session-factory>  
19. </hibernate-configuration>


三、HIbernate第一个实例



该实例的目录结构如下



新手上路之Hibernate:第一个Hibernate例子_数据库



说明:最后一个HIBERNATE3里面包含了所有的需要引用的jar包






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






2、建立User实体类




1. import java.util.Date;  
2.   
3. public class User {  
4. private String id;  
5. private String username;  
6. private String password;  
7. private Date createTime;  
8. private Date expireTime;  
9.       
10. public String getId() {  
11. return id;  
12.     }  
13. public void setId(String id) {  
14. this.id = id;  
15.     }  
16. public String getUsername() {  
17. return username;  
18.     }  
19. public void setUsername(String userName) {  
20. this.username = userName;  
21.     }  
22. public String getPassword() {  
23. return password;  
24.     }  
25. public void setPassword(String password) {  
26. this.password = password;  
27.     }  
28. public Date getCreateTime() {  
29. return createTime;  
30.     }  
31. public void setCreateTime(Date createTime) {  
32. this.createTime = createTime;  
33.     }  
34. public Date getExpireTime() {  
35. return expireTime;  
36.     }  
37. public void setExpireTime(Date expireTime) {  
38. this.expireTime = expireTime;  
39.     }  
40. }




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


    1. <?xml version="1.0"?>  
    2. <!DOCTYPE hibernate-mapping PUBLIC   
    3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    4. >  
    5.       
    6. <hibernate-mapping>  
    7. <class name="com.example.hibernate.User">  
    8. <id name="id">  
    9. <generator class="uuid"/>  
    10. </id>  
    11. <property name="username"/>  
    12. <property name="password"/>  
    13. <property name="createTime"/>  
    14. <property name="expireTime"/>  
    15. </class>  
    16. </hibernate-mapping>





    3、配置hibernate.cfg.xml文件



    1. <hibernate-configuration>  
    2. <session-factory >  
    3. <!-- mysql数据库驱动 -->  
    4. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
    5. <!-- mysql数据库名称 -->  
    6. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>  
    7. <!-- 数据库的登陆用户名 -->  
    8. <property name="hibernate.connection.username">root</property>  
    9. <!-- 数据库的登陆密码 -->  
    10. <property name="hibernate.connection.password">root</property>  
    11. <!-- 方言:为每一种数据库提供适配器,方便转换 -->  
    12. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
    13.           
    14. <span style="color:#ff0000;"><mapping resource="com/example/hibernate/User.hbm.xml"/></span>  
    15. </session-factory>  
    16. </hibernate-configuration>



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




    1. import org.hibernate.cfg.Configuration;  
    2. import org.hibernate.tool.hbm2ddl.SchemaExport;  
    3. /**
    4.  * 将hbm生成ddl
    5.  * @author BCH
    6.  *
    7.  */  
    8. public class ExoprtDB {  
    9.   
    10. public static void main(String[] args) {  
    11. //默认读取hibernate.cfg.xml文件  
    12. new Configuration().configure();  
    13.           
    14. new SchemaExport(cfr);  
    15. true, true);  
    16.     }  
    17. }


    5、向表中添加数据



      1. import java.util.Date;  
      2.   
      3. import org.hibernate.Session;  
      4. import org.hibernate.SessionFactory;  
      5. import org.hibernate.cfg.Configuration;  
      6.   
      7. public class Client {  
      8. public static void main(String[] args) {  
      9. //读取配置文件  
      10. new Configuration().configure();  
      11.           
      12.         SessionFactory factory = cfg.buildSessionFactory();  
      13.           
      14. null;  
      15. try{  
      16.             session = factory.openSession();  
      17. //开启事务  
      18.             session.beginTransaction();  
      19.               
      20. new User();  
      21. "用户名");  
      22. "123");  
      23. new Date());  
      24. new Date());  
      25.               
      26.             session.save(user);  
      27. //提交事务  
      28.             session.getTransaction().commit();  
      29.               
      30. catch(Exception e){  
      31.             e.printStackTrace();  
      32. //回滚事务  
      33.             session.getTransaction().rollback();  
      34. finally{  
      35. if(session != null){  
      36. if(session.isOpen()){  
      37. //关闭session  
      38.                     session.close();  
      39.                 }  
      40.             }  
      41.         }  
      42.     }  
      43. }



      执行该java文件就可以完成向表中增加数据了,效果如下



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






      (四)总结



      通过上面的代码我们可以看出,在代码中没有涉及到任何有关JDBC的代码,作为开发人员只需要写好相应的实体类,然后通过配置就可以实现了表的建立以及向表中实现数据的插入。



      在代码中有许多Hibernate的核心对象,例如Configuration、SessionFactory、Session等等。这些内容将在以后介绍。