Hibernate
一个开源的对象关系映射框架
对JDBC进行了非常轻量级的对象封装
将JavaBean对象和数据库的表建立对应关系
Hibernate简化了JDBC繁琐的编码
Hibernate将数据库的连接信息都存放在配置文件中
持久化
将程序中数据子瞬时状态和持久状态间转换的机制
持久化层
JDBC就是持久化机制
将数据程序直接保存成文本文件也是持久化进制的一种实现
在分层结构中,Dao层(数据访问层)也被称为持久化层
持久化完成的操作
将对象保存到关系型数据库中
将关系型数据库中的数据读取出来以对象的形式封装
ORM(Object Relational Mapping,对象关系映射)
编写程序的时候,以面向对象的方式处理数据
保存数据的时候,却以关系型数据库的方式存储
ORM解决方案包含下面四个部分
在持久化对象上执行基本增、删、改、查操作的API
用于对持久化对象或属性查询的一种语言或者API
用于实体关系映射的工具
能够与事物对象交互、执行检查、延迟加载以及其他优化功能
hibernate.cfg.xml 示例:
<?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>
<property name="hbm2ddl.auto">update</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="connection.username">hibernate</property>
<property name="connection.password">Jredu12345</property>
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.timeout">5000</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
<property name="hibernate.c3p0.validate">true</property>
<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
<property name="show_sql">true</property>
<mapping resource="com/jredu/entity/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Hibernate准备工作
创建Hibernate配置文件
用于配置数据库连接
运行时所需的各种属性
默认文件名为“hibernate.cfg.xml”
使用Hibernate操作数据库需要7个步骤 如下:
//1.读取并解析配置文件
Configuration cfg=new Configuration().configure();
//注册服务对象
StandardServiceRegistry registry=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
//2.解析映射文件,创建SessionFactory
SessionFactory factory=cfg.buildSessionFactory(registry);
//3.打开session
Session session=factory.openSession();
//4.增删改需要开启事务
Transaction tran=session.beginTransaction();
5.数据库操作
session.save(user);
//6.提交事务
tran.commit();
//7.关闭session
session.close();
Hibernate支持两种主要的查询方式
HQL 查询
是一种面向对象的查询语言,其中没有表个字段的概念,只有类、对象和属性的概念
Criteria 查询
又称“对象查询”,它用面向对象的方式将构造查询的过程做了封装
使用HQL可以避免使用JDBC查询的一些弊端
语法:
使用HQL需要4步
//1.读取并解析配置文件
Configuration cfg=new Configuration().configure();
//注册服务对象
StandardServiceRegistry registry=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
//2.解析映射文件,创建SessionFactory
SessionFactory factory=cfg.buildSessionFactory(registry);
//3.打开session
session=factory.openSession();
执行HQL语句
where子句指定限定条件
通过与sql相同的比较操作符指定条件
如:
?占位符
例:
未完待续。。