Hibernate是一个开源的对象关系映射框架,对JDBC进行非常轻量级的封装。它将POJO与数据表建立了映射关系,是一个全自动的ORM框架。
Hibernate可以自动生成SQL语句并且自动执行SQL,可以用面向对象思想来操纵数据库。
在开始第一个hibernate小程序之前我们有必要熟悉一下hibernate的五大对象。
Configuration: Configuration 类负责管理 Hibernate 的配置信息
SessionFactory:
1)针对单个数据库映射关系经过编译后的内存镜像,是线程安全的。
2)SessionFactory 对象一旦构造完毕,即被赋予特定的配置信息
3)SessionFactory是生成Session的工厂
4)构造 SessionFactory 很消耗资源,一般情况下一个应用中只初始化一个 SessionFactory 对象。
5)Hibernate4 新增了一个 ServiceRegistry 接口,所有基于 Hibernate 的配置或者服务都必须统一向这个 ServiceRegistry 注册后才能生效
Session:
1)Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,所有持久化对象必须在 session 的管理下才可以进行持久化操作。此对象的生命周期很短。Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久层操作的数据都缓存在 session 对象处。相当于 JDBC 中的 Connection。
2)持久化类与 Session 关联起来后就具有了持久化的能力。
Transaction:
允许应用程序定义工作单位,同时保持底层事务实现的抽象。
Criteria:
criteria是通过组合criteria对象检索实体的一个简化的接口,session是一个标准的工厂Criteria实例通常是通过工厂的方法来限制。
上面对hibernate和其常用对象做了一个简单的介绍,下面就开始我们的第一个小程序吧。
一、hibernate开发环境准备
1、新建一个web工程,将…….\hibernate-release-4.2.4.Final\lib\required下面的所有jar包导入到web工程lib目录下。
2、加入数据库驱动包,我这里用的数据库是mysql驱动包是:
mysql-connector-java-5.1.7-bin.jar
二、开始编写第一个hibernate程序
1、新建hibernate.cfg.xml文件并编写其基本信息(主要是配置sessionFactory,相当于connection,起到链接数据库的作用)
2、在mysql数据库客户端新建一个数据表
3、编写一个实体类,该实体类属性与数据表中的字段名或者别名相映射
4、新建实体类的数据库映射文件XXXX.hbm.xml
5、将实体类的数据库映射文件引入到hibernate配置文件中
6、新建一个测试类,如下
package com.wxf.hibernate.test;
import java.util.UUID;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.Test;
import com.wxf.hibernate.entity.Student;
public class HelloworldTest {
@Test
public void test() {
//1.创建一个SessiionFactory对象
SessionFactory sessionFactory=null;
//1).创建Configuration对象:对应hibernate的基本信息和对象关系映射信息
Configuration configuration=new Configuration().configure();
//2).创建一个ServiceRegistry对象:hibernate的任何配置和服务都需要在该对象中注册后才能有效
ServiceRegistry serviceRegistry=
new ServiceRegistryBuilder().applySettings(configuration.getProperties())
.buildServiceRegistry();
//3).基于以上几个对象创建SessionFactory对象
sessionFactory=configuration.buildSessionFactory(serviceRegistry);
//2.创建一个Session对象
Session session=sessionFactory.openSession();
//3.开启事务
Transaction transaction=session.beginTransaction();
//4.执行操作
Student student=new Student(UUID.randomUUID().toString(),"wangxiaofei",22,"male","13190241");
session.save(student);
//5.提交事务
transaction.commit();
//6.关闭Session对象
session.close();
//7.关闭SessionFactory对象
sessionFactory.close();
}
}
运行结果如下: