• 关于HttpSession 和 Hibernate框架中 session异同点的简单解析


     快速理解:
    HttpSession中的session是一个容器用来盛基于会话机制的信息。
    比喻:我把钱放进银行的保险柜里。
    解析:我的钱就是我的信息,ID等 银行的保险柜就是session容器。

    Hibernate中的session是一个工具,用来操作数据库增删改查等,可以认为是一个持久化管理器。
    比喻:我从东风货车生产商买了一辆货车,用这辆车操作张三家的钱,对钱进行操作,移除、添加等。
    解析:货车生产商比喻为hibernate框架,货车是session ,张三家为数据库,钱便是信息,session对数据库中的信息进行增删改查等对数据持久化操作。

        简单介绍

    1、HttpSession( Javax.Servlet.http.HttpSession)

    1、概念HttpSession是Java平台session机制的实现规范,所谓规范指接口,用来规范会话机制,Session本质是一个容器,用来装需要装的数据。

    2、产生背景HttpSession,见名知意 肯定和Http有关,Http是一种超文本传输协议,是用来约束两台计算机之间通信需要遵守的规范,那么Http有个缺点,无状态,所谓无状态是指不具备记忆功能,但是,各位 在J2EE开发中我们有很多需求需要web程序保持一种状态,或者说可以记录某些信息,进而带来更加高级的用户体验,所以,   产生了Cookie,是用来在客户浏览器上存储一些数据,但是 有很多信息我们不能保存在本地,很不安全,所以产生了Session保存在服务器端,当用户进行某种针对      cookie  和Session的操作时,服务器端会根据一种标识查到相对应的Session,这是Session的产生背景

    3、作用记录或者存储一些用户信息在服务器端内存,由服务器端使web程序维护或者保持一种状态,在用户使用时会根据对应的信息和Cookie内容查找到对应的  Session,提高用户体验。

    4、使用场景:J2EE的web程序开发中,即Jsp、Servlet中。

    5、创建方法

    注意一点,session是由具体的容器自动产生的,容器像(Tomact等)

     HttpSession session = request.getSession( ); 

     常用方法:session.setAttribute(key,value) 存储数据,在另一个Jsp和Sevlet中通过 session.getAttribute(key);可以得到对应的Value值。

    生命周期长时间不操作,自动结束或者销毁,操作其销毁的大部分取决于对应的容器。

     2、Hibernate框架中的Session(Org.hibernate.Session)

    1、概念 此session可以理解为基于JDBC的connection 用来连接数据库的一个句柄对象(对象变量),也可以认为此Session为持久化管理器的一个类,它在整个框架中是一个核心。

     1.1抽象概念简单分析:各位,我们考虑一下所谓的持久化,是不是指把数据存储起来,序列化到指定的文件或者数据库中不会随着各种周期消亡而消亡。简单讲,持久化管理器,指利用Session将数据进行增、删、改、查。Session恰恰有这些实例。

    2、作用主要功能是为映射实体类的实例提供创建,读取和删除操作,替代JDBC的繁琐操作实例可能存在以下三种状态之一:Transient 瞬时态、Persistent 持久态、Detached 游离态。

    3、举例我从东风货车生产商(货车生产商为hibernate框架)买了一辆货车(Session),用这辆车操作张三家(张三家是数据库)的钱(钱是数据库中的信息),对钱进行操作,移除、添加等。

    4、使用场景:Hibernate框架中用来操作数据库时

    5、常用操作

    1、//由 Configuration对象读取映射文件中的配置信息
    Configuration configuration = new Configuration().configure();  
    2、//由 Configuration对象创建一个SessionFactory对象
    SessionFactory sessionFactory = configuration .buildSessionFactory(); 	  
    3、//由SessionFactory打开一个Session会话
    Session session = sessionFactory .openSession();  
    4、具体方法示例
    (1)session.save();//保存,通过commit()提交事务后会执行 insert语句
    (2)session.update()//修改 执行 update语句
    (3)session.delete()//删除 执行 delete语句
    (4)session.saveOrUpdate()//保存或者修改 如果该该条数据存在数据库中则进行修改,如果不存在则进行添加。
    等等

    总之:二者除了名字相同,没有其他关系。




  • 相关阅读:
    javascript 中检测数据类型的方法
    javascript 中的类数组和数组
    html5 构造网页的新方式
    关于 jQuery 中的 $.data() 方法和 jQuery 对象上的data 方法
    基于北洋PT站表结构分析以及ORM重写
    面试题准备
    sqlalchemy 外键
    sqlalchemy
    ansible roles
    ansible
  • 原文地址:https://www.cnblogs.com/XH09/p/8318555.html
Copyright © 2020-2023  润新知