本文主要讲如何搭建Hibernate开发环境和简单实例。
一、搭建开发测试环境
1.1 下载Hibernate
从Hibernate官方网站上下载最新的Hibernate ORM,从Hibernate官方文档页面可以看到相应的最新帮助文档内容。
我下载了当前最新的Hibernate压缩包为hibernate-release-4.3.6.Final.zip,这里面也包含了相应的帮助文档,不过在线的帮助文档有所差别,会更加全面一些。
1.2 在Eclipse中配置Hibernate
Hibernate不存在安装的说法,只需要在目标Java工程中添加Hibernate相应的库文件即可。具体操作步骤如下:
- 打开eclipse->windows->preferences->java->build path->user libraries,点击new,新建一个library,可取名为HibernateLib;
- 点击Add JARs,选择上一步解压出来的文件夹hibernate-release-4.3.6.Final->lib->required中的所有jar文件;
- 下载数据库对应的JDBC驱动,我这里用的是Windows SQL Server 2008,所以从微软官网下载了一个sqljdbc4.jar。当然,如果使用MySQl或者Oracle,也需要下载相应的JDBC驱动。
- 将JDBC驱动添加到Eclipse依赖库中。
1.3 配置数据库
这里主要是为了测试Hibernate,所以搭建一个简单的数据库和测试表即可,创建的SQL语句如下:
create database hibernate go use hibernate go create table student(id int primary key, name varchar(20), age int)
这样就创建了一个名为hibernate的数据库,并且包含一张名为student的表格,表格中有三列分别是:id、name、age。
二、测试代码实例
2.1 创建Java工程
- 在Eclipse中新建一个名为HibernateDemo的工程,其package可以命名为com.xiaoku.hibernate.model。
- 添加工程环境配置中创建的User Library,添加方法为:右键单击工程名,选择Build Path->Add Libraries->User Library->Next->勾选HibernateLib->Finish。
2.2 新建一个简单类
将此类定义于com.xiaoku.hibernate.model包下。类定义具体内容如下:
package com.xiaoku.hibernate.model; public class Student { private int id; // ID private String name; // NAME private int age; // AGE public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
2.3 修改Hibernate配置文件
Hibernate配置文件默认命名为hiberante.cfg.xml,不要尝试修改此文件名。在hibernate-release-4.3.6.Finalprojectetc文件夹中包含了一个hiberante.cfg.xml配置文件示例,可以直接拿过来修改即可。当然在工程根目录新建一个hiberante.cfg.xml也可以。我这里使用SQL Server,配置文件的示例如下:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="dialect">org.hibernate.dialect.SQLServerDialect</property> <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=hibernate</property> <property name="connection.username">sa</property> <property name="connection.password">12345678</property> <!-- Echo all executed SQL to stdout --> <property name="show_sqlserver">true</property> <!--根据需要自动生成、更新数据表--> <property name="hbm2ddl.auto">update</property> <property name="myeclipse.connection.profile">sqlserver</property> <mapping resource="com/xiaoku/hibernate/model/Student.hbm.xml"/> </session-factory> </hibernate-configuration>
如果使用其他的数据库,请相应修改其中的数据库驱动、用户名密码等信息。注意上面配置文件中指定了mapping resource,这个值可根据包名和类名做修改。若类名为Student,则此处的类配置文件必为:Student.hbm.xml。
2.4 创建一个Mapping文件
这里Student类要用到数据库,所以针对Student类创建一个Mapping文件名为Student.hbm.xml,放在com.xiaoku.hibernate.model包下。内容大致如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.xiaoku.hibernate.model"> <class name="Student"> <id name="id"></id> <property name="name"></property> <property name="age"></property> </class> </hibernate-mapping>
注意文件开始处的配置,此处与hibernate.cfg.xml不一样。
2.5 创建一个StudentTest用于测试
创建一个测试类StudentTest.java,放在com.xiaoku.hibernate.model包下代码如下:
package com.xiaoku.hibernate.model; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class StudentTest { public static void main(String[] args){ Student s = new Student(); s.setId(1); s.setName("猪猪"); s.setAge(28); Configuration cfg = new Configuration(); SessionFactory sf = cfg.configure().buildSessionFactory(); Session session = sf.openSession(); session.beginTransaction(); session.save(s); session.getTransaction().commit(); session.close(); sf.close(); } }
2.6 运行结果
在Eclipse中会提示buildSessionFactory()这个函数被deprecated,但实际上程序还是可以运行成功的。
检查数据库中的student表,可以发现多了一条记录(1,'猪猪', 28)。表明Hibernate成功执行了数据库插入操作。
小结:
本文介绍了Hibernate最简单的一个入门实例,可以对Hibernate的使用有一个清晰直观的认识了。