Hibernate学习笔记:第一个程序的搭建
前一段时间对Struts2这个框架有了一点点地了解,很高兴,自己开始学习Hibernate这个框架了。本篇博文将记录下第一个Hibernate程序的搭建过程。其实有时候个人觉得无论我们学习什么语言也好,还是学习什么框架也好,第一个HelloWorld程序真的相当重要,假如 我们在学习第一个HelloWorld程序都跑不出来,这完全影响着我们对新接触的东西的兴趣和动力,但是,往往第一个程序都会涉及到很多的配置,因此使得对于初学者要摸索一定的时间,对于我也是如此,因为对于刚开始学习Hibernate这个框架的时候,我并不清楚要添加哪些库文件,因此我需要参考一些博客和视频,才能更好的完成第一个程序的搭建工作,只有在我们成功地搭建好了第一个程序之后,我们就为我们后面的学习做好的准备,在后面的学习中我们就不需要担心添加哪些库文件呀,需要哪些配置呀 等等工作。本篇博文就是对Hibernate的第一个程序的搭建的所有过程的一个建立,希望对刚学习Hibernate的你有所帮助
废话不多说,开始干正事。
第一个Hibernate程序的搭建
相信在学Hibernate的你在前段时间一定学习过Java这门语言,因此一定有Java的编译环境以及我们常见的IDE,即一定使用过eclipse/MyEclipse等IDE,如果没有使用,就需要下载。
下面就假设你有Java相关的开发环境(JDK,IDE)。
在开始介绍之前,先提供一个参考文档:Hibernate3.1.2在线中文帮助文档,这个文档有着很好的参考价值,也有第一个Hibernate 应用程序的搭建过程:http://www.jq-school.com/Show.aspx?id=321。本人第一个Hibernate的搭建也是主要参考这个文档来完成的.
1、准备工作
a、在Hibernate官网下载Hibernate发布包,链接为:http://hibernate.org/orm/downloads/,下载后解压到相应的文件夹中,里面涉及到的一些Jar包将会为我们所用。我下载的是和ibernate-release-5.1.0.Final 这个版本。
b、数据库驱动包,JDBC Driver要根据你用的database来定,一般database官方网站上都会有。Hibernate支持常用的database,比如 MySQL, Oracle, PostgreSQL, 和MS-SQL Server。这些数据库都有JDBC Driver:
我自己下载的是MySQL数据库的Driver 。
Oracle JDBC Driver下载地址(下载前必须同意Oracle协议书)
http://otn.oracle.com/software/htdocs/distlic.html?/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html
MySQL JDBC Driver下载地址
http://dev.mysql.com/downloads/connector/j/3.0.html
PostgreSQL JDBC Driver下载地址
http://jdbc.postgresql.org/download.html
MS-SQL Server JDBC Driver下载地址
http://www.microsoft.com/downloads/details.aspx?FamilyID=9f1874b6-f8e1-4bd6-947c-0fc5bf05bf71&displaylang=en
2、新建工程,添加Jar包
1)、我使用的IDE是MyEclipse ,打开MyEclipse,新建一个Java Project,我这里的工程取名为:HelloWorld_Hibernate,然后添加相应的Jar包。
怎么添加Jar包呢??
添加Jar包主要有两个方法,第一种方法为:点击项目—>Build Path—>Add External JARS;由于hibernate 有许多Jar需要添加,并且这些Jar包都是属于hibernate的,因此,我们就将其放在一起,然后引入工程这样才是最好的。这也就是第二种方法。
具体步骤如下:
window—>Java—->Build Path —->User Libraries —>new ,这样就新建了一个文件夹(我这里新建的文件夹为:hibernate),然后在这个夹 ,点击Add External JARS 中添加Jar包,需要添加的Jar包在hibernate解压后的lib/required下,我将这个文件夹下所有的包都加入进去了。具体截图如下:
当上面的步骤完成之后,我们就可以在工程中引入这个
实体类 Student
实体类中有几个属性:id name age,并为这些属性配上get/set 方法。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
所有的持久化类(persistent classes)都要求有无参的构造器,因为Hibernate必须使用Java反射机制来为你创建对象。构造器(constructor)的访问级别可以是private,然而当生成运行时代理(runtime proxy)的时候则要求使用至少是package 级别的访问控制
在数据库中创建表与实体类对应
这里我们采用的是自己创建表,我们也可以要Hibernate 帮我们创建。
在下面即将要介绍的配置文件hibernate.cfg.xml文件中:
- 1
- 2
- 3
- 4
- 5
- 6
Hibernate配置 hibernate.cfg.xml 配置文件
Hibernate 的配置文件名字叫 hibernate.cfg.xml,不要对此名字进行改动,在我们不懂Hibernate 原理的情况下进行了改动就是自找麻烦。
内容如下,主要是参考了上面所提到的参考文档资料,然后进行一定的改动即可:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
创建映射文件
上面虽然我们建立了实体类的数据库表,但是我们还没有建立关联,即映射。
一个映射文件的基本结构看起来像这样 :
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
在我们的项目中,映射文件Student.hbm.xml文件内容如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
测试类
待上面的工作完成之后,我们就可以建立一个测试类来进行测试了。测试类StudentTest的代码如下 :
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
测试结果在数据库中的结果 如下 :
这就说明我们的第一个Hibernate 程序就成功了。
用Annotation来创建第一个程序
上面采用的是xml配置文件的方式来创建实体类与数据库表的对应关系,下面就用Annotation的方式来创建第一个程序。
下面我们又创建一个实体类Teacher。
内容如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
从上面的代码中可以看到@Entity /@Id 等注解,利用这种方式我们就不需要写实体类和数据库表的映射文件了。
hibernate.cfg.xml文件的内容如下,与第一种方式的区别在于添加了这样一行代码:
- 1
详细内容如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
测试文件与TestStudent 一样,如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
同样当我们运行之后,在数据库表中查询的结果如下:
参考资料
1、blog :http://blog.youkuaiyun.com/doodoofish/article/details/43207/
2、http://www.jq-school.com/hibernate/html/tutorial.html#tutorial-firstapp
from: http://blog.youkuaiyun.com/u010412719/article/details/51258691