初识Hibernate
2017-04-05 14:41
246 查看
Hibernate(冬眠)
优缺点:
a)优点:Hibernate是一个轻量级的, 以ORM(Object-Relation-Mapping)设计思想构建的, 持久化框架. 此框架无侵入性. 极大的提高了开发效率. 框架提供了缓存机制和强大的查询能力. 支持多种数据库的访问. 并在一定程度上实现0 SQL开发. 可以快速实现数据库移植;
b)缺点:
i.该框架程序员是没有办法干预sql语句的生成的;
ii.如果一个项目中,对sql语句的优化的要求比较高,这个时候不能用hibernate来做;
iii.不适用表之间的关系很复杂的情况以及数据超过千万级别;
持久化概念:
a.狭义:对数据进行存储;
b.广义:对数据进行CRUD操作;
持久化类,映射文件(*.hbm.xml),配置文件(Hibernate.cfg.xml);
POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称;
Hibernate的事务不是自动提交的,需要手动提交;(查询时有load和get两种方法前者支持懒加载后者不支持,懒加载:当要使用此对象时才会进行加载,不使用就不加载);
错误:session-factory中定义了name属性,而dtd中没有定义会出现JNDI错误;
Configuration类:加载Hibernate的配置文件;
*SessionFactory类:
a.Hibernate配置文件和持久化类的信息以及映射文件信息全部在此类中;
b.生命周期整个hibernate实例,本身是线程安全的,且只有一个对象;
c.二级缓存存放在此类中;
d.和数据库连接没有直接的关系;
Session类:
a.一个session代表一个数据库连接;
b.CRUD操作是session完成的,需注意关闭session;
在获取标准服务对象信息的时候不同版本会有不同的写法;
Hibernate生命周期
a)临时状态:只在内存中存在与session无关;
b)持久化状态:在hibernate中存在==>数据库,session进行管理;
c)游离状态:数据对象在内存中存在,且在数据库对应表中有相应的记录与session无关;
d)Session.get()方法获得是一个持久化状态对象,当事务提交时,hibernate自动更新,使用session.evict()可以让持久化对象变成游离状态防止自动更新,update转化为持久化状态;
e)session.clear方法把hibernate中所有的持久化状态转化为脱管状态;
Hibernate内部会自动比较当前对象和副本是否一样,一样则不做更新,反之则更新;
反向工程
Hibernate有两种类型:java type(效率高)和hibernate type两者之间有对照;
主键生成策略:increment、assigned(手动)、native(自适应)、identity(orcal不支持)、sequence(支持orcal字符串类型)、uuid;
优缺点:
a)优点:Hibernate是一个轻量级的, 以ORM(Object-Relation-Mapping)设计思想构建的, 持久化框架. 此框架无侵入性. 极大的提高了开发效率. 框架提供了缓存机制和强大的查询能力. 支持多种数据库的访问. 并在一定程度上实现0 SQL开发. 可以快速实现数据库移植;
b)缺点:
i.该框架程序员是没有办法干预sql语句的生成的;
ii.如果一个项目中,对sql语句的优化的要求比较高,这个时候不能用hibernate来做;
iii.不适用表之间的关系很复杂的情况以及数据超过千万级别;
持久化概念:
a.狭义:对数据进行存储;
b.广义:对数据进行CRUD操作;
持久化类,映射文件(*.hbm.xml),配置文件(Hibernate.cfg.xml);
POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称;
Hibernate的事务不是自动提交的,需要手动提交;(查询时有load和get两种方法前者支持懒加载后者不支持,懒加载:当要使用此对象时才会进行加载,不使用就不加载);
错误:session-factory中定义了name属性,而dtd中没有定义会出现JNDI错误;
Configuration类:加载Hibernate的配置文件;
*SessionFactory类:
a.Hibernate配置文件和持久化类的信息以及映射文件信息全部在此类中;
b.生命周期整个hibernate实例,本身是线程安全的,且只有一个对象;
c.二级缓存存放在此类中;
d.和数据库连接没有直接的关系;
Session类:
a.一个session代表一个数据库连接;
b.CRUD操作是session完成的,需注意关闭session;
在获取标准服务对象信息的时候不同版本会有不同的写法;
Hibernate生命周期
a)临时状态:只在内存中存在与session无关;
b)持久化状态:在hibernate中存在==>数据库,session进行管理;
c)游离状态:数据对象在内存中存在,且在数据库对应表中有相应的记录与session无关;
d)Session.get()方法获得是一个持久化状态对象,当事务提交时,hibernate自动更新,使用session.evict()可以让持久化对象变成游离状态防止自动更新,update转化为持久化状态;
e)session.clear方法把hibernate中所有的持久化状态转化为脱管状态;
Hibernate内部会自动比较当前对象和副本是否一样,一样则不做更新,反之则更新;
反向工程
Hibernate有两种类型:java type(效率高)和hibernate type两者之间有对照;
主键生成策略:increment、assigned(手动)、native(自适应)、identity(orcal不支持)、sequence(支持orcal字符串类型)、uuid;
相关文章推荐
- Hibernate初识(下)
- 初识Hibernate——关系映射
- Hibernate 之 初识 uuid 和 native
- hibernate初识
- hibernate初识
- Hibernate征途(一)之初识
- 初识Hibernate(三)之多表关系维护
- 初识Hibernate 缓存
- hibernate学习笔记之二(初识hibernate)
- Hibernate之hibernate初识
- Hibernate4自学入门(一)——初识Hibernate
- hibernate缓存初识之session的get()与load()方法
- 分享知识-快乐自己:初识 Hibernate 概念片(一)
- 初识hibernate(1)--简介
- Hibernate(5.2.10)快速入门 (一) 初识Hibernate、框架搭建、xml基本配置
- 【Hibernate3】(1)初识Hibernate
- 初识Hibernate
- Hibernate懒加载初识 1
- 深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架
- Hibernate初识