Hibernate框架 简述
Hibernate
全自动全映射ORM框架,旨在消除sql,是一个持久层的ORM框架
1)、基础概念
DAO(Data Accessor Object):实现数据访问和业务逻辑分离
POIO(Plain Ordinary Java Object):不包含业务逻辑代码的值对象
PO:Persistent Object
VO:Value Object
DTO:Data Transfer Object
2)、Hibernate特点
①对JDBC访问数据库的代码做了轻量级封装,大大简化了数据访问层繁琐的重复性代码,减少内存占用,加快运行效率
②基于JDBC的主流持久化框架,是ORM实现,简化了DAO层编码
③支持很多关系型数据库,从一对一到多对多的复杂关系
④扩展性强,源代码开源,自行编码进行扩展
配置步骤
1)、导包
①数据库驱动
②核心包
③日志包(slf4j、log4j、slf4j-log4j(需注意两者版本相对应))
2)、配置文件
①前置条件
数据库中表结构和类结构相对应
②映射配置文件
xml文件命名规范(类名.hbm.xml),使用DTD进行约束,根元素hibernate-mapping
③核心配置文件
xml文件命名规范(hibernate.cfg.xml),src下,使用DTD进行约束,根元素hibernate-configuration
3)、简单使用
①加载核心配置文件
Configuration con = new Configuration().configure();
②创建SessionFactory对象
con.buildSessionFactory()
③通过SessionFactory获取到Session对象
factory.openSession()
④手动开启事务
session.beginTransaction()
⑤操作
⑥事务提交
transaction.commit();
⑦释放资源
session.close()
涉及到的类
1)、Configuration
①加载核心配置文件
xml文件:new Configuration.configure()
properties文件:new Configuration()
②加载Mapper(在使用properties文件时,无法配置mapper,需使用)
configuration.addResource(“包名/映射文件名”)
2)、SessionFactory
负责初始化Hibernate和创建Session,充当数据源的代理,并不是轻量级的,
一般一个项目只需用一个,一个数据库只需用一个SessionFactory
维护了Hibernate的连接池和二级缓存,是线程安全的
①配置连接池
默认连接池:
需导入c3p0的jar包
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.min_size">value</property>//最小数目
<property name="c3p0.max_size">value</property>//最大数目
<property name="c3p0.timeout">value</property>//连接过期时间(秒),超时清除
<property name="c3p0.idle_test_period">value</property>//检查连接池中空闲连接的时间间隔(秒)
②使用工具类来管理SessionFactory和Configuration(可使用线程绑定)
3)、Session
是一个连接对象,负责被持久化对象的CRUD操作,非线程安全(不能定义为全局)
①增
Serializable save(Object obj);
②查
T get(Class c, Srializable id);
采用立即加载,返回真实对象,查询不到对象返回空
T load(Class c, Srializable id);
采用lazy加载,使用对象(非id属性)时,才会进行查询,返回代理对象(javassist技术),查询不到对象报异常
③改
void update(Object obj);
直接创建对象(不推荐):会将对象中所有属性(除id)进行更新,若有些属性未赋值,会修改为null
先查询,再修改(推荐):先查询,使用对象接收到所有信息,然后对某个信息进行更改后,进行修改
④删
void delete(Object obj);
直接创建对象删除 和 先查询再删除(推荐,可做级联删除)
⑤保存或更新
saveorUpdate(object);//无id保存(瞬时态),有id修改(托管态),有id但不存在,报错
4)、Transaction
管理事务对象,begin(),commit(),rollback()
hibernate5会默认自动提交,但当配置c3p0数据库连接池时,必须配置,
并且hibernate3也不会自动提交,推荐书写。
Hibernate框架 简述相关推荐
- Hibernate框架简述
Hibernate框架简述 Hibernate的核心组件 在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.propert ...
- Hibernate框架(1)
1.Hibernate框架简述 Hibernate的核心组件 在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.prope ...
- 1.Hibernate框架核心组件 (转自冯岩)
Hibernate框架核心组件 在Hibernate框架简述中,演示了一个简单的Hibernate应用,但并没有深入说明其中程序,在这篇中将比较详细的介绍一下Hibernate的核心组件. 首先最关键 ...
- Hibernate框架第二天
### Hibernate的持久化类 ### ---------- **什么是持久化类** 1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为 ...
- hibernate框架int和Integer类型区别
hibernate 框架在定义实体时,int类型最好定义为Inttger类型,因为在注入时int是值类型不允许为空. 转载于:https://www.cnblogs.com/codespirit/p/ ...
- 我的第一个用Hibernate框架写的小例子
Hibernate框架 今天我来主要讲一下Hibernate框架的配置步骤,在讲之前,我们先了解一下使用框架的优势 1.不再考虑公共问题,框架已经帮我们做好了 2.可以专心于业务逻辑,保证核心业务逻辑 ...
- Hibernate框架--学习笔记(上):hibernate项目的搭建和常用接口方法、对象的使用
一.什么是Hibernate框架: 1.Hibernate是一个操作数据库的框架,实现了对JDBC的封装: 2.Hibernate是一个ORM(对象关系映射)框架,我们在写程序时 ,用的是面向对象的方 ...
- SSH框架第一天——hibernate框架
什么是框架? 是软件的半成品,它已经完成了部分功能. 什么是hibernate? hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程 ...
- 深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架
这篇博客是hibernate学习的第一篇,主要简单介绍hibernate框架,之后简单说一下hibernate的目录结构,最后写一个简单的hibernate实例.通过这三步来简单的认识一下hibern ...
最新文章
- LeetCode 35.搜索插入位置
- 如何查看Linq to SQL运行时,实际执行的Sql语句
- maven打包常用的几个插件
- 李开复写给中国学生的七封信之给中国学生的第五封信——你有选择的权利(完)...
- ceil与intval区别
- 转载构造函数与拷贝构造函数
- mysql中profile的使用
- 一台服务器上使用docker安装redis6.0.10一主两从以及哨兵模式
- MonkeyDevice Class
- 【redis】spring boot利用redis的Keyspace Notifications实现消息通知
- 最简单的在IntelliJ IDEA导入一个本地项目教程
- 可批量查询企业工商数据信息的API
- CorelDRAW打造金属质感3D立体按钮教程
- 樊登读书会掌控读后感_樊登读书刻意练习读后感
- Unreal Engine 4 渲染目标(Render Target)教程 之 使用渲染目标绘制(下)
- EasyNVR网页Chrome无插件播放摄像机视频功能二次开发之云台控制接口示例代码
- TP6手册理解之架构·服务
- 1tb等于多少g 1TB和500G有什么区别
- Scrapy学习过程之二:架构及简单示例
- Cryptohack刷题记录(一) General部分 WP
热门文章
- linux5 vnc,CentOS 5 下安装配置VNC
- 【Python】二维数据格式化
- C#开发笔记之17-如何用C#深克隆一个对象(传统方案)?
- 如何优化Jupyter Notebook
- node js 技术架构_[视频] Node JS中的干净架构
- 机器学习训练营_如何不运行学习代码训练营
- 如何遍历JavaScript中的对象
- 程序员为什么觉得会议很无聊_我从100个无聊的会议中学到的难忘的教训
- 建立在线社区:Numenta
- AnnotationConfigApplicationContext ad has not been refreshed yet 错误