Web 项目中的 DAO、Hibernate 和会话

2024-02-19

我读过很多关于 DAO 和会话的问题,但不明白问题所在。现在我用这样的东西:core DAO http://techtracer.com/wp-content/uploads/2008/12/daojava.txt(我在核心 DAO 中添加了一些额外的检查)并且DAO 实施 http://techtracer.com/wp-content/uploads/2008/12/admindaohibernateimpljava.txt基于wicket框架的网络项目。一般来说,这种模式可以描述如下:

1)每1个线程使用1个会话;

2)永不关闭会话;

3) 始终在操作后提交事务。

我使用 DDoS 实用程序对其进行测试,并且该实现工作正常(每秒 100 个连接)。但是当我增加连接数时,我会遇到很多关于关闭会话和未启动事务的异常。我如何理解我应该使用 getCurrentSession() 而不是 openSession() 但当我使用 getCurrentSession() 修改核心 DAO 中的方法 getSession() 时,我没有修复错误:(。然后我尝试使用 c3p0 和 Boncp。但是那些强大的工具对我没有帮助。也许你能解释一下我的错误:(除了 DNA 中的错误


您从任何地方复制的 DAO 将 hibernate 会话存储在 ThreadLocal 对象中,即。 e.正如您所提到的,一个休眠会话绑定到一个线程。

但你正在做一个网络项目。您应该将一个 Hibernate 会话绑定到一个用户(或浏览器),即。 e.到一个 Http 会话。但您不知道来自一个 http 会话的请求是在哪个线程中处理的。因此,在您的解决方案中,相同的 Http 会话可能会获得不同的 Hibernate 会话,或者不同的 Http 会话可能会获得相同的 Hibernate 会话。这取决于您的 Http 服务器。

解决方案:将 Hibernate 会话放入 Http 会话中(并执行not使用 ThreadLocal 对象)。您可以使用以下命令获取 Http 会话对象HttpServletRequest.getSession()HttpSession.getAttribute()/HttpSession.setAttribute()您可以设置Hibernate会话和其他Http会话相关的数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web 项目中的 DAO、Hibernate 和会话 的相关文章

随机推荐

  • Laravel:PDO异常,即使安装并测试了驱动程序也找不到驱动程序[重复]

    这个问题在这里已经有答案了 我正在开发一个 Laravel 5 1 项目 该项目必须连接到现有的 MS SQL Server 数据库 我的项目当前位于使用 Apache 2 4 18 的 Ubuntu 16 04 LTS 服务器上 我已在计
  • 什么时候发送HTTP状态码?

    目前 在我的 PHP 脚本中 当用户尝试访问不存在或不属于该用户的内容时 我会将用户重定向到自定义 404 未找到错误页面 就像这样 header Location http www mydomain com error notfound
  • 文件引用与文件?

    我想制作一个 Flash 应用程序 用户可以在其中从本地硬盘驱动器加载文件并将文件保存到本地硬盘驱动器 虽然我经常在 AIR 应用程序中使用File and FileStream类 我以前没有在 SWF 中这样做过 据我所知FileRefe
  • 使用“get”来访问地图有什么好处

    从这个问题跟进 按关键字进行惯用的 clojure 映射查找 https stackoverflow com questions 7034803 idiomatic clojure map lookup by keyword 使用 cloj
  • Spring Rest 和 jQuery Ajax 文件下载

    我目前正在使用 jQuery 和 Spring Rest jQuery 用于向服务器上传和下载文件 上传过程工作正常 但下载文件时没有什么问题 所以场景是 在视图中 用户将选择n个要下载的文件并单击下载按钮 一旦用户单击该按钮 文件就会被下
  • angular.js 选择输入框的过滤类型

    我使用 angular js 的时间很短 有时我有一种感觉 我对 html 和 javascript 一无所知 因为 Angular 在遇到我想象中应该的东西时 可能非常简单 这是我头痛的地方 我的电流控制器scope persons是工厂
  • 为动态加载的新元素添加tinymce

    我的页面包含 5 个 div 可以通过 Tinymce 内联编辑器进行编辑 我可以通过单击按钮 如此动态 来轻松地使用 Jquery 加载 5 个新的 但当然 新的 div 不会受到 Tinymce 的影响 因为 init 已经加载了 我怎
  • 如何在 wpf 中将 List 转换为 ObservableCollection

    我在 wpf 中 有一个通用列表 List 现在我希望将其转换为通用的可观察集合 ObservableCollection 我知道我可以迭代列表并将每个单独的项目添加到 Observable 集合中 然而 在我看来 必须有一种内置的方法来做
  • 如何自定义 JAXB 生成复数方法名称的方式?

    我们使用 JAXB 生成 Java 类 遇到了一些生成的复数方法名称不正确的情况 例如 我们期望的地方getPhysicians我们正在得到getPhysicien 我们如何自定义 JAXB 复数特定方法的方式 架构
  • 如何在SQL Server 2012中解析json数据?

    我正在使用 SQL Server 2012 我被分配了一项任务 其中我的专栏之一 JsonText 的表Sample包含 json 数据 我想通过解析该数据并将其插入到另一个表的列中 Test 我在网上搜索 openjson 在 SQL S
  • Google 地图 API 多个标记

    我正在使用以下代码来显示谷歌地图 并在地图上创建一个标记 它运作良好 我只需要在同一张地图上放置多个标记即可
  • Onclick 事件删除文本输入字段中的默认值

    我有一个输入字段
  • 强制客户端或服务器重新启动 SSL 握手(或使 SSL 会话过期)

    我有一个客户端 用 Java 编写 连接到 HTTPS 服务器 该服务器也是用 Java 编写的 客户端证书和可信证书存储在 PKI 令牌中 客户端不断地向服务器发送一些HTTP请求 一切都很好 现在我想强制客户端 或服务器 重新启动握手
  • Sublime Text 2控制台输入[重复]

    这个问题在这里已经有答案了 我使用 Sublime Text 2 但当我的代码要求用户输入时 它不会让我输入任何值 换句话说 input 在Python和gets在 Ruby 中无法正确提示我输入 Python 抛出一个EOFError错误
  • 实现Python异常

    我在程序中实现异常系统时遇到一些问题 我在某处发现了以下一段代码 我试图将其用于我的程序 class InvalidProgramStateException Exception def init self expr msg self ex
  • 在 AS3 中加载嵌入图像

    好吧 我觉得问这个问题很愚蠢 但我花了整个下午试图弄清楚 但没有成功 在 AS3 中 我想向库添加一个图像 我们称之为 image png 并仅使用代码实例化它 我以这种方式成功实例化了外部图像 var pLoad Loader new L
  • 清除 Web 浏览器控制所有站点的 cookie,而不清除 IE 本身

    编辑 据我所知 这个问题没有解决方案 这又证明了一个事实 不应该使用 C 的 WebBrowser 我们最终在程序开始时出现了一个警告标志 通知用户将为 IE 清除 cookie 我想做的事情的简短版本就在标题中 这是长版本 我有一个复杂的
  • 在greasemonkey中使用javascript创建一个cookie

    我正在尝试用greasemonkey创建一个cookie 以阻止窗口弹出 在窗口弹出后 创建cookie后 窗口不会弹出多次 这是代码 function setCookie c name value expiredays var exdat
  • 如何使用 StandardScaler 标准化 Spark 中的一列?

    我正在尝试标准化 平均值 0 标准 1 我的数据框中的一列 年龄 下面是我在 Spark Python 中的代码 from pyspark ml feature import StandardScaler from pyspark ml f
  • Web 项目中的 DAO、Hibernate 和会话

    我读过很多关于 DAO 和会话的问题 但不明白问题所在 现在我用这样的东西 core DAO http techtracer com wp content uploads 2008 12 daojava txt 我在核心 DAO 中添加了一