您的位置:首页 > 理论基础 > 计算机网络

ssh中难理解的问题总结(一)-关于hibernate中的sessionFactory与http中的session

2017-09-25 01:33 399 查看
在回顾sturts2,spring,hibernate框架的时候,注意到其中在进行spring整合hibernate时有一个sessionFactory实例,对这块知识突然有点模糊,所以就写下一些东西(结合百度)来总结记录一下。如有不对,欢迎指出讨论。

首先需要理解的几个概念:

一、Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。----百度百科

我自己的理解是:hibernate可以利用其orm机制,把传统的关系型数据库操作,转变成面向对象的方式来操作。把数据库对应的表映射成一个对象。生成其属性对应的set/get方法,在表单提交到action中时 只要建立一个对象实例即可。对其进行操作。

二、sessionFactory

SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。----百度百科

自己的理解:顾名思义,sessionfactory,就是用来创建session会话(具体接下来讲)的工厂。创建一个sessionfactory,一般有两种创建方式,1.从XML文件读取配置信息构建SessionFactory,2.从Java属性文件读取配置信息构建SessionFactory(这个不熟悉,没怎用,不好意思)。

三、session

首先,http是一个无状态协议(stateless protocol),在一个用户发送多个请求期间,不要求网站服务器保存该用户的识别标识,请求与相应序列等。一个HTTP会话(session)是一个请求响应对,下一个请求是新的会话,在服务器端,两个请求独立。服务器端要想跟踪访问进程需要用其他手段,如HTTP
cookie或在超级链接的URL中植入跟踪代码。--知乎某答主的解释

然而hibernate中的session(线程不安全的)和http中的session不一样(http中称为用户会话)
而hibernate中的Session是用来表示,应用程序和数据库的一次交互(会话)。在这个Session中,包含了一般的持久化方法(CRUD)通常将每个Session实例和一个数据库事务绑定,也就是每执行一个数据库事务,都应该先创建一个新的Session实例,在使用Session后,还需要关闭Session。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: