本站文章均为 李华明Himi 原创,转载务必在明显处注明:
转载自
【黑米GameDev街区】 原文链接: http://www.himigame.com/hibernate/783.html

          ☞ 点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!

OK,从这篇开始Himi将与大家一起进入Hibernate框架的学习啦,新手新手的说,希望大家多多指教;

对于Hibernate概述一下:

"  Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。 "

本篇则简单介绍大家如何配置我们的第一个Hibernate框架环境和第一个项目,HelloHibernate;

------

准备工作:

1. Himi这里使用的一些开发资源如下:

1.1         hibernate-distribution-3.3.2.GA   (hibernate核心包)

1.2         hibernate-annotations-3.4.0.GA   (annotations核心包)

1.3         slf4j-1.5.8       (slf4j 实现库,虽然hibernate核心包中有slf4j的jar包,但是只是api包没有实现)

1.4          mysql-connector-java-3.1.14    (mysql 驱动)

OK了,关于资源下载,大家百度下,当然Himi这里用的不是最新的,刚上手怕最新的自己玩不转~咳咳、

Elipse 中user lib 配置工作:(这里Himi用的mac的eclipse)

我们添加到新建的一个 Java Project里,这里Himi新建的Java项目名:HelloHibernate;

打开你的Eclipse-偏好设置-User Libraries中:

点击 New... 新建,然后输入自定义名称,然后添加Hibernate所需的jar包,jar包一共8个如下:

 

   
   
   
   
  1. /HibernateSoftWare/hibernate-distribution-3.3.2.GA/hibernate3.jar 
  2.  
  3.  /HibernateSoftWare/hibernate-distribution-3.3.2.GA/required/lib 下的6个jar包 
  4.  
  5. /slf4j-1.5.8/slf4j-1.5.8/slf4j-nop-1.5.8.jar 

如下图:

 

OK,搞定之后,然后右键你的项目,然后->Build Path->Add Libraries ->User Library->选择你新建的包含hibernate8个jar包的library即可;

继续右键你的项目Build Path->Add External Archives 将 mysql-connector-java-3.1.14, mysql驱动导入项目中;

MySQL 准备工作:

这里Himi新建一个数据库“hibernate”,新建表“teacher”;对于MySQL不太了解的,请移步到Himi本博客的MySQL相关博文中学习下吧,这里Himi不再赘述了;这里为了后续讲述便于理解,Himi将建立好的show出来让大家过目下;

 

   
   
   
   
  1. mysql> show databases; 
  2. +--------------------+ 
  3. | Database           | 
  4. +--------------------+ 
  5. | information_schema | 
  6. | hellohibernate     | 
  7. | hibernate          | 
  8. | himiDB             | 
  9. | mysql              | 
  10. | people             | 
  11. | performance_schema | 
  12. | test               | 
  13. +--------------------+ 
  14. 8 rows in set (0.00 sec) 
  15.  
  16. mysql> use hibernate; 
  17. Database changed 
  18. mysql> describe teacher; 
  19. +-------+-------------+------+-----+---------+-------+ 
  20. | Field | Type        | Null | Key | Default | Extra | 
  21. +-------+-------------+------+-----+---------+-------+ 
  22. | id    | int(11)     | NO   | PRI | NULL    |       | 
  23. | name  | varchar(20) | YES  |     | NULL    |       | 
  24. | age   | int(11)     | YES  |     | NULL    |       | 
  25. | gold  | int(11)     | YES  |     | NULL    |       | 
  26. +-------+-------------+------+-----+---------+-------+ 
  27. 4 rows in set (0.07 sec) 

其中 id  Himi将其设置为 primary key ;

准备工作完成后,我们首先创建两个类,一个入口函数类:

MainTest:

 

   
   
   
   
  1. import org.hibernate.Session; 
  2. import org.hibernate.SessionFactory; 
  3. import org.hibernate.cfg.Configuration; 
  4.  
  5. import com.himi.Teacher; 
  6.  
  7. public class MainTest { 
  8.  
  9.     /** 
  10.      * @param args 
  11.      */ 
  12.     public static void main(String[] args) { 
  13.     } 
  14.  

再创建一个Teacher类:( POJO)ps.  不太了解POJO的请百度下先~

 

   
   
   
   
  1. package com.himi; 
  2.  
  3. public class Teacher { 
  4.     private int id; 
  5.     private String name; 
  6.     private int age; 
  7.     private int gold; 
  8.  
  9.     public int getId() { 
  10.         return id; 
  11.     } 
  12.     public void setId(int id) { 
  13.         this.id = id; 
  14.     } 
  15.     public String getName() { 
  16.         return name; 
  17.     } 
  18.     public void setName(String name) { 
  19.         this.name = name; 
  20.     } 
  21.     public int getAge() { 
  22.         return age; 
  23.     } 
  24.     public void setAge(int age) { 
  25.         this.age = age; 
  26.     } 
  27.     public int getGold() { 
  28.         return gold; 
  29.     } 
  30.     public void setGold(int gold) { 
  31.         this.gold = gold; 
  32.     } 

整个项目目录如下图所示:

 

大家先不要在意,  hibernate.cfg.xml 和 Teacher.hbm.xml 这两个文件,下面再详细介绍;

首先我们使用Hibernate就应该先创建Hibernate的配置文件:(这里Himi采用默认此配置名为hibernate.cfg.xml,当然这个配置文件可以自定义名但是这个名字是否采用默认将影响后面我们使用的不同,这个后面将会详细讲解到)

下面是 hibernate.cfg.xml中的内容:

 

   
   
   
   
  1. '1.0' encoding='utf-8'?> 
  2.         "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
  3.         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
  4.  
  5.  
  6.  
  7.      
  8.  
  9.          
  10.         "connection.driver_class">com.mysql.jdbc.Driver 
  11.         "connection.url">jdbc:mysql://localhost/hibernate 
  12.         "connection.username">root 
  13.         "connection.password">Himi 
  14.  
  15.          
  16.          
  17.  
  18.          
  19.         "dialect">org.hibernate.dialect.MySQLDialect 
  20.  
  21.          
  22.          
  23.  
  24.          
  25.         "cache.provider_class">org.hibernate.cache.NoCacheProvider 
  26.  
  27.          
  28.         "show_sql">true 
  29.  
  30.          
  31.          
  32.  
  33.         "com/himi/Teacher.hbm.xml"/>  
  34.  
  35.      
  36.  
  37.  

这个配置文件我们不要自己写噢,去Hibernate的API文档中找到copy,然后简单针对项目进行设置即可;

OK,配置好这个文件其实就是对hibrenate进行的一些配置而已;

下面我们来看Teacher.hbm.xml文件:

这个文件的目录与Teacher.java默认放置同一级目录,约定俗成没有什么why;那么这个文件是个映射文件,它的主要作用是告诉hibernate我们Teacher类中的属性与数据库的哪些字段匹配;OK,看下其中的内容;

(注意这个文件,在Hibernate文档中也有例子,我们copy过来进行修改不要自己写!)

 

   
   
   
   
  1. xml version="1.0"?> 
  2.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
  3.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
  4.  
  5. <hibernate-mapping package="com.himi"> 
  6.     <class name="Teacher">    
  7.         <id name ="id"/>      
  8.          
  9.         <property name="name"/> 
  10.         <property name="age"/> 
  11.         <property name="gold"/> 
  12.