概述:
框架:即软件的半成品
SSH: struts2、spring 4、hibernate5当前流行框架
SSM: spring MVC、sping、mybatis
Hibernate是一个开放源代码的对象关系映射框架(ORM),它对JDBC进行了非常轻量级的对象封装,它将 j avabean 类与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动 执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库,hibernate工作在dao层的orm框 架,使我们可以使用面向对象的思想操作数据库
入门:
1. 下载Hibernate
2. 搭建环境(新建项目)
导入jar包:
hibernate解压目录/lib/required/*.jar
数据库的驱动包
日志jar包 : log4j的jar包
日志配置文件
log4j. properties放到项目的src目录下
3. 新建数据库和表(大部分是通过hibernate配置文件中update来生成)
4. 创建实体类
5.映射文件(类和表的映射)
6. 创建核心配置文件
必须的配置项:连接数据库的基本信息,参考hibernate解压录/project/etc/hibernate.properties
可选的配置项:是否配置方言、是否打印/sq/l、是否格式化/sq/l
加载映射文件:
7. 此时,就可以编写测试代码了。
配置文件详解:
映射文件 名称:类名.hbm .xml
位置:和实体类放在一起
核心配置文件
名称:
格式1: xml (推荐) 建议使用使用:hibernate .cfg .xml
格式2: properites(不能加载映射文件,需要通过api加载) 建议使用 hibernate.properties
位置: 建议放在src目录下
配置:
基本信息配置: property标签
可选配置(方言,是否打印sql,是否格式化sql,是否由hibernate来生成ddl语句,及其如何生成) property标签
注意:
是否由hibernate生成ddl语句,及如何生成
可选值:
none:不使用
create:由hibernate生成ddl语句,每执行一次就生成一次.若之前有先删除(测试) create-drop:由hibernate生成ddl语句,每执行一次就生成一次,完全使用完毕之后就删 除了这张表.若之前有先删除(测试)
update:自动更新表.若有表直接使用且更新,若没有表则创建表(常用)
validate:使用之前先校验映射文件和表对应上,若对应上则使用,若对应不上抛异常
eg:update
加载映射文件(xml)
mapping标签
四大API详解:
Configuration:
作用:
★1.加载核心配置文件
new configuration();默认加载src目录下hibernate.properties
new configuration().configure();默认加载src目录下hiberna te.cfg.xml
2.加载映射文件(不用)
addReso urce(String path);
★3.创建Sessio nFactory
buildSess ionFactory();
Session Factory:session的工厂
这里用到了工厂模式。需要注意的是Session Factory并不是轻量级的,
因为一般情况下,一个项目通常只需要一个Session Factory就够,当需要操作多个数据库时,可 以为每个数据库指定一个Session Factory。
作用:
★1.获取session
★2.初始化hibernate,底层维护了一个内置数据源
3.维护二级缓存.(eh cache一般不用,用redis替代了)
整合c3p0:
步骤:
1.导入c3p0 .jar(hibernate解压目录下)
2.编写核心配置文件
org .hibernate.connection. C3P0Connection Provider
5
20
120
3000
抽取一个工具类:目的是为了在外部方便获取与线程绑定的Session
Hibernate Utils
Session:类似于连接
作用:
开启事务
和数据库进行交互
Session对象是有生命周期的,它以Transaction对象的事务开始和结束边界
方法:
begin Transaction();
Seria lizable save(Object):保存 返回数据库记录id
update(Object):更新
delete(Object):删除
注意:先查询在删除或者更新
T get(Class ,id):通过id获取一个对象
T load(Class ,id):通过id获取一个对象
get和load的区别:
get:立即发送一条sql语句,返回的类型为本身
load:不是立即发送一条sql语句,使用该对象的非id属性的时候才发送sql语句,返回的类 型为子类的代理对象.(lazy 懒加载)
Transaction:事务
作用:
提交 commit()
回滚 rollback()
待续……