一、概念
Hibernate是一个开源的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以抛弃在程序中编写SQL语句,随心所欲的使用对象编程思维来操纵数据库。

二、准备工作
在Eclipse中安装HibernateTools插件:Help -> Install New Software 来进行安装。New -> Other打开的对话框中如果有Hibernate选项则表明安装成功。
三、创建工程
1.New 一个 Java Project
2.为Java工程导入jar包:
-
- Hibernate核心jar包
- MySQL的jdbc驱动jar包
- Junit4的jar包
![]() |
![]() |
![]() |
我们在windows->preferences->java->build path-user libraries中将三者添加为三个用户类库,方便以后的导入:

右击Java项目->properties->Java Build Path->Library->add Library->User Library->next->将刚才建好的用户类库全打勾->finish->ok。
3. 创建Hibernate的配置文档,并编辑:
右击工程下的src->new->other->Hibernate->Hibernate Configuration File (cfg.xml)->next,next,finish
src下已经生成了配置文件hibernate.cfg.xml,打开
<hibernate-configuration>
<session-factory name="">
<property name="connection.driver_class">com.mysql.jdbc.Driver</property> //mysql的jdbc驱动
<property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=UTF-8</property> //指明数据库的url地址
<property name="connection.username">root</property> //mysql用户名
<property name="connection.password">****</property> //密码
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> //方言
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<mapping resource="Students.hbm.xml" /> //映射文件
</session-factory>
</hibernate-configuration>
4. 创建持久化类
假如我们想往数据库存放一张学生表,包括id,姓名,性别,生日,地址这些字段。那么我们可以创建一个Students类,类中包含了学生的这些属性,我们可以通过“更改Students对象的属性,再传递给数据库”来间接地操纵数据库,这样就避免了使用SQL语句。那么Students这个类我们就称为持久化类。
在src下创建一个类,命名为Students。持久化类的设计原则要遵循JavaBean的设计原则:
-
- 公有的类
- 私有的属性
- 无参的公有的构造方法
- 属性setter/getter封装
如下:

public class Students {
private int sid;
private String sname;
private String gender;
private Date brithday;
private String address;
public Students() {
}
public Students(int sid, String sname, String gender, Date brithday, String address) {
this.sid = sid;
this.sname = sname;
this.gender = gender;
this.brithday = brithday;
this.address = address;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getBrithday() {
return brithday;
}
public void setBrithday(Date brithday) {
this.brithday = brithday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Students [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", brithday=" + brithday
+ ", address=" + address + "]";
}
}
5. 创建对象-关系映射文件
右击src->new->other->Hibernate->Hibernater XML Mapping File (hbm.xml)->next,next->点选要持久化的类->finish
对象-关系映射文件创建完毕,打开可以看到:文件将一个实体类映射称为数据库中的一张表。

<hibernate-mapping>
<class name="Students" table="STUDENTS">
<id name="sid" type="int">
<column name="SID" />
<generator class="assigned" />
</id>
<property name="sname" type="java.lang.String">
<column name="SNAME" />
</property>
<property name="gender" type="java.lang.String">
<column name="GENDER" />
</property>
<property name="brithday" type="java.util.Date">
<column name="BRITHDAY" />
</property>
<property name="address" type="java.lang.String">
<column name="ADDRESS" />
</property>
</class>
</hibernate-mapping>
映射文件创建好之后要记得在hibernate配置文件中,添加mapping标签:
<mapping resource="Students.hbm.xml" />
6. 在Mysql中创建一个数据库,名称为配置文档中所配置的数据库名称
7. 通过Hibernate API编写访问数据库的代码,使用Junit进行测试。
三个注解:
-
- @Test :测试方法
- @Before:初始化方法
- @After:释放资源
右击工程名->new->source folder源文件夹->folder name命名为test->finish
在test文件夹下新建一个类,命名为StudentsTest:
1 import java.util.Date;
2 import org.hibernate.Session;
3 import org.hibernate.SessionFactory;
4 import org.hibernate.Transaction;
5 import org.hibernate.cfg.Configuration;
6 import org.hibernate.service.ServiceRegistry;
7 import org.hibernate.service.ServiceRegistryBuilder;
8 import org.junit.After;
9 import org.junit.Before;
10 import org.junit.Test;
11
12 //测试类
13 public class StudentsTest {
14
15 private SessionFactory sessionFactory;
16 private Session session;
17 private Transaction transaction;
18
19 @Before
20 public void init() {
21 // 创建配置对象
22 Configuration config = new Configuration().configure();
23 // 创建服务注册对象
24 ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties())
25 .buildServiceRegistry();
26 // 创建会话工厂对象
27 sessionFactory = config.buildSessionFactory(serviceRegistry);
28 // 会话对象
29 session = sessionFactory.openSession();
30 // 开启事务
31 transaction = session.beginTransaction();
32
33 }
34
35 @After
36 public void destroy() {
37 transaction.commit();// 提交事务
38 session.close();// 关闭会话
39 sessionFactory.close();// 关闭会话工厂
40 }
41
42 @Test
43 public void testSaveStudents() {
44 // 生成学生对象
45 Students s = new Students(1, "张三", "男", new Date(), "北京市");
46 // 保存对象进入数据库
47 session.save(s);
48 }
49 }
测试类创建好之后,右击该类下目录下的testSaveStudents()方法,Run as Junit Test!
之后我们去相应的数据库里查看,已经有一张students的表生成了:

来源:http://www.cnblogs.com/xingyazhao/p/6659124.html



