您的位置:首页 > 职场人生

初识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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate 框架 程序员