hibernate作为一个完整的ORM映射框架,通过配置即可以让我们从复杂的JDBC操作中脱离出来。hibernate封装了 JDBC,JTA(java transaction API) 和JNDI。hibernate 是一个轻量级的框架,对于开发人员,可以采用它提供的接口进行数据库操作,当然也可以直接绕过hibernate,采用原生JDBC操作。而且当与Spring整合之后,Spring也提供了jdbcTemplate 。所以,使用者最好区分到底用谁的。

hibernate主要接口

   根据图示:configration中获取到sessionfactory,然后sessionfactory中获取session,在获取对应接口执行对应的操作。

在这个地方需要注意的是,sessionfactory是重量级的(用来缓存sql语句之类),session是轻量级的,主要缓存一些java对象。

缓存清理

  java中对象生命周期是从 new开始,终止与没有引用指向。再说一下,session的清理缓存,在某些时间点按照缓存中对象的变化执行sql同步更新数据库,称为清理缓存。

时间点主要有  commit ()   flush() 加上查询的时候,如果存在脏数据也会先清理缓存。

2.1 java对象在session声明周期中的三种形态

new 一个对象 是临时态, session.save()将其持久化,session.close()如果再用该对象该对象实际上是游离态,假如不是session.close()而是session.delete()就会变成删除状态

注意:

  临时态 对象OID为空,

  被删除对象 是计划要删除,执行了tx.xommit()就会被删除

2.2  session相关方法  

  session.save() :不会立即执行insert语句,只有当session清理缓存的时候才会执行insert语句。

        这个地方有个细节就是,session.save()之后在如果在修改值,会产生两条sql语句。一条insert一条update。所以应该先修改完值在save()

  session.update() 也有一个细节点

      session.update()只有在清理缓存的时候才会执行update,所以 下边的代码是一样的

  sesion.saveOrupdate():会根据传入参数是临时态还是游离对象还是持久化对象,选择是save还是update

批量处理数据

    当处理大量数据时,如果还是简单的在应用层一条条调用语句,会导致两个问题。第一个是内存占用过大,第二是效率低下

这种大数据就避免在应用层处理数据,而是直接采用数据库层处理数据。例如直接在数据库层执行批量操作,如果批量操作逻辑复杂,

可以写存储过程(),但是mysql不支持

当然,也可以在应用层做批量处理:
  session:比如每处理20条就手动flush,再session.clear()
  StatelessSession:无状态的session,不会加载到内存
  HQL:根据条件
  JDBC API(我开发中用此方法):涉及数据不会加载到内存,可以实现Work接口

  

【hibernate初探】之接口说明,session使用的更多相关文章

  1. hibernate的五大接口

    Hibernate有五大核心接口,分别是:Session Transaction Query SessionFactoryConfiguration .这五个接口构成了Hibernate运行的基本要素 ...

  2. Hibernate的核心接口

    Hibernate5个核心接口 所有Hibernate应用中都会访问Hibernate的5个核心接口 Configuration接口:配置Hibernate,根启动Hibernate,创建Sessio ...

  3. Hibernate五大核心接口简介

    所有的Hibernate应用中都会访问Hibernate的5个核心接口. Configuration接口:配置Hibernate,根启动Hibernate,创建SessionFactory对象. Se ...

  4. 慕课网Hibernate初探之一对多映射实验及总结

    慕课网Hibernate初探之一对多映射实验及总结 一.本课核心 * 1.如何在MyEclipse中使用Hibernate * 2.如何实现Hibernate中一对多的映射 * 3.如何创建Sessi ...

  5. Hibernate二次学习二----------session.flush、session.doWork

    目录 1. session 2. session.flush 3. session.doWork 4. 完整代码 5. 总结 © 版权声明:本文为博主原创文章,转载请注明出处 1. session H ...

  6. 写出Hibernate中核心接口/类的名称,并描述他们各自的责任?

    Hibernate的核心接口一共有5个,分别为:Session.SessionFactory.Transaction.Query和 Configuration.这5个核心接口在任何开发中都会用到.通过 ...

  7. Hibernate的懒加载session丢失解决方法

    在web.xml加入spring提供的过滤器,延长session的生命周期 <!--Hibernate的懒加载session丢失解决方法 --> <filter> <fi ...

  8. Hibernate Could not obtain transaction-synchronized Session for current thread问题处理

    项目通过Hibernate查询时报出如下错误: Hibernate Could not obtain transaction-synchronized Session for current thre ...

  9. 07.Hibernate常用的接口和类---Session接口☆☆☆☆☆

    一.特点 Session是在Hibernate中使用最频繁的接口.也被称之为持久化管理器.它提供了和持久化有关的操作,比如添加.修改.删除.加载和查询实体对象 Session 是应用程序与数据库之间交 ...

随机推荐

  1. 关于蓝桥杯嵌入式STM32的一点收获

    各社团成员培训时自己总结的一点材料,直接粘过来的,可能有些朋友看不明白,总之这个比赛吧:有很多技巧,掌握到技巧能省我们半个月时间,我说的是针对这个比赛,对于STM32还是要多多练习,总之STM32还是 ...

  2. java中几种获取项目路径方式

    转自http://caodaoxi.iteye.com/blog/1234805     在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是WebRoot 在class文件中,根目录 ...

  3. Sqoop简介及安装

    Hadoop业务的大致开发流程以及Sqoop在业务中的地位: Sqoop概念 Sqoop可以理解为[SQL–to–Hadoop],正如名字所示,Sqoop是一个用来将关系型数据库和Hadoop中的数据 ...

  4. Customer segmentation – LifeCycle Grids with R(转)

    I want to share a very powerful approach for customer segmentation in this post. It is based on cust ...

  5. Redis中的数据结构与常用命令

    开发系统:Ubuntu 17.04Redis驱动:StackExchange.Redis 1.2.3Redis版本:3.2.1开发平台:.NET Core 对于Redis的介绍这里只写一句:Redis ...

  6. JavaSE教程-04Java中循环语句for,while,do···while-练习2

    1.编写一个剪子石头布对战小程序 该法是穷举法:将所有情况列出来 import java.util.*; public class Game{ public static void main(Stri ...

  7. openvpn实现内网 映射到 外网

    openvpn实现内网 映射到 外网 场景介绍: 机器介绍 本地一台Ubuntu服务器A , 处于内网中 , 无外网IP 外网一台Ubuntu服务器B , 外网地址139.199.4.205 目标 : ...

  8. 转发:Ubuntu软件卸载安装的命令

    说明:由于图形化界面方法(如Add/Remove... 和Synaptic Package Manageer)比较简单,所以这里主要总结在终端通过命令行方式进行的软件包安装.卸载和删除的方法. 一.U ...

  9. js事件循环

    之前有看过一些事件循环的博客,不过一阵子没看就发现自己忘光了,所以决定来自己写一个博客总结下! 首先,我们来解释下事件循环是个什么东西: 就我们所知,浏览器的js是单线程的,也就是说,在同一时刻,最多 ...

  10. POJ 1459-Power Network(网络流-最大流-ISAP)C++

    Power Network 时间限制: 1 Sec  内存限制: 128 MB 题目描述 A power network consists of nodes (power stations, cons ...