根据请求创建 Hibernate-Session

2024-04-24

我刚刚启动了一个简单的 Java 测试项目,它使用 Hibernate 管理一些实体,并提供 REST 接口来操作这些对象并提供一些额外的业务逻辑。 REST 接口是使用 RESTEasy 和 Jetty 创建的。

到目前为止,一切工作正常,但我感觉我实际上编写了太多的样板代码。由于我对这些 Java 框架没有太多经验,我只是想知道是否有人可以给我一些关于如何改善这种情况的提示。

  1. 根据请求创建 Hibernate 会话

好吧,据我所知,我必须为每个请求创建一个 Hibernate 会话,最后我必须关闭它。所以目前我所有的服务方法都是这样的:

Session session = HibernateUtil.getInstance().getSessionFactory().openSession();
...
...
...
session.close();

有没有办法删除这两行以便以某种方式自动执行此操作? 目前我的服务已注册为 RestEASY 单例。更改为 RESTeasy 资源并在构造函数中创建会话可以解决问题吗?我认为这将解决创建会话的问题。但是去哪里关闭呢?

在 C++ 中,这可以通过创建一个在最后关闭会话的作用域对象来轻松完成。但在Java 中呢?

  1. 每当发出此类 REST 请求时,我都必须检查有效会话(用户必须事先登录)。 ServletFilter 是执行此操作的正确方法吗?

一般:我应该考虑使用其他模式或框架吗?我的意思是我想让它尽可能简单,特别是因为我没有太多经验,所以我不想最终使用 Spring 或任何重量级框架。似乎我已经习惯了 Python 和 Django 的简单性,但对于这个小项目我必须使用 Java。

到目前为止谢谢!


Hibernate 目前推荐的管理 Session 的方法在此有详细介绍维基页面 https://community.jboss.org/wiki/SessionsAndTransactions。特别是,我认为您需要阅读最后一段:这一切都非常困难,难道不​​能更容易做到吗? https://community.jboss.org/wiki/SessionsAndTransactions#This_is_all_very_difficult_cant_this_be_done_easier

最后,您确实需要告诉持久层“我要做某事”(通常也会让会话来做这件事)和“我已经完成了”。你可以这样做注释 https://community.jboss.org/wiki/SessionsAndTransactions#Transaction_demarcation_with_EJBCMT, or JTA交易 https://community.jboss.org/wiki/SessionsAndTransactions#Transaction_demarcation_with_JTA,但这些信息仍然需要传达!

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

根据请求创建 Hibernate-Session 的相关文章

  • 在多个不同线程之间共享变量

    我想在多个线程之间共享一个变量 如下所示 boolean flag true T1 main new T1 T2 help new T2 main start help start 我想分享flag在主线程和帮助线程之间 这是我创建的两个不
  • Maven 管理的 Java EE 应用程序中 JBoss 提供的库

    这对我来说实际上不太可能 但网上似乎没有关于将 JBoss 提供的依赖项导入 Maven 管理的 Java EE 应用程序以在其中部署的直接答案 据我所知 有两件事与这个问题有关 那就是jboss as client外部 就 JVM 而言
  • 是否值得清理 Filter 中的 ThreadLocals 来解决线程池相关问题?

    简而言之 tomcat 使用线程池 因此线程被重用 一些图书馆使用ThreadLocal变量 但不要清理它们 使用 remove 所以实际上它们将 脏 线程返回到池中 Tomcat 具有在关闭时检测这些事情并清理线程局部变量的新功能 但这意
  • MySQL 中电话号码的最佳数据类型是什么?它的 Java 类型映射应该是什么?

    我正在将 MySQL 与 Spring JDBC 模板一起用于我的 Web 应用程序 我需要存储仅包含数字的电话号码 10 我对使用数据类型的数据类型有点困惑 MySQL 中最适合它的数据类型是什么 为此 Bean POJO 类中的 Jav
  • Java中的String为什么是不可变的对象,但我在创建一个对象后仍然可以更改它的值? [复制]

    这个问题在这里已经有答案了 如果我可以创建一个字符串并给它一个值 这怎么可能呢 然后 我可以像这样简单地覆盖它的值 String a abc a def 我怎么可能改变的值a 我一定在这里遗漏了一些东西 我知道每当创建 String 对象时
  • 如何使用 apache commons cli 指定多个选项?

    我想要这样的东西 java programName jobs1 C 10 W 20 java programName job2 java programName job3 含内容 Option o1 new Option job2 some
  • Postgres UUID 和休眠

    我有一个具有 UUID 列的实体 它不是主键 我正在使用 Postgres 和 hibernate 我对此专栏的类型是https www postgresql org docs 9 1 static datatype uuid html h
  • 获取运行时提供的类名的 n 维数组的类

    给定一个完全限定的类名和多个维度 我想获取该类的类名 我相信我可以这样做 public Class elementType Class forName className return Array newInstance elementTy
  • 关于 mongodb java 驱动程序的困惑[重复]

    这个问题在这里已经有答案了 我是 MongoDB 的初学者 我正在使用 JAVA 驱动程序来使用它 我有以下代码 MongoClient client new MongoClient DB d client getDB world DBCo
  • 如何为我的数独游戏制作 GUI? (摇摆)

    到目前为止 我已经编写了生成随机 9x9 数独网格的代码 我是Java的初学者 所以我有一些关于如何做UI的问题 显示数字的最佳方式是什么 我尝试创建 81 个 JTextFields 这非常乏味 而且我确信有一种有效的方法可以做到这一点
  • 将 JAR 文件打包为 WAR 文件

    我有一系列依赖的Java项目 我想将它们打包成一个 JAR 文件 以便在我的 WAR 文件中使用 这些项目依赖于大量的外部库和项目 如log4j apache commons等 我选择 Eclipse 中的所有项目并导出为 JAR 文件 然
  • java POI XSSF 公式评估器

    我在保存新的 Excel 文件时遇到问题 我希望当它被保存时 公式会自行计算 但目前它只是返回 Excel 文件中的一个字符串 公式是正确的 我不知道到底要得到FormulaEvaluator上班 这是我输入返回字符串的公式的地方 data
  • 在 init 之外在 java 中创建对象

    因此 对于我正在创建的游戏 我有一些扩展 GameDriver 的类 到目前为止 在所有其他类上我都能够扩展 GameDriver 然后在 GameDriver 中我可以执行以下操作 ArrayList
  • 使用服务器 java api 从 jasperserver 存储库检索资源

    我正在尝试使用其 java API 从 Jasperserver 存储库检索资源 根据jasper 报表服务器终极指南 https community jaspersoft com documentation jasperreports s
  • 如何提高QNX6下Eclipse IDE的性能

    我们在 VMWare 环境中通过 QNX6 运行 Eclipse 速度非常慢 Eclipse 是这样启动的 usr qnx630 host qnx6 x86 usr qde eclipse eclipse data root workspa
  • OkHttp javax.net.ssl.SSLPeerUnverifiedException:主机名domain.com未验证

    我几天来一直在努力让它发挥作用 我正在尝试通过以下方式连接到我的服务器https带有自签名证书 我认为现在没有任何页面或示例是我未读过的 我做了什么 按照本教程创建了 bks 密钥库 http blog crazybob org 2010
  • STL(标准模板库)中使用的设计模式

    我正在学习STL和设计模式 我想知道是否有任何文档或链接可以解释如何在 STL 中实现设计模式 我做了谷歌但无法获得太多数据 我希望你的意思是 哪些设计模式可以在STL中识别 STL 堆栈是一个容器适配器 适配器是一种设计模式 迭代器也是一
  • 如何为 Weblogic 10.3.6 启用 Java 持久性 2.0

    我正在使用 eclipse 和 weblogic 服务器 为了将项目添加到 weblogic 服务器 它需要支持 Java Persistance 2 0 但是当尝试安装它时 我不断收到此消息 在 Weblogic Server 安装中启用
  • hibernate通过主键查询

    我想通过主键创建查询 假设我有类主键 PersonKey 属性是 name 和 id 我有 Person 类 属性是 PersonKey 地址 DOB 现在 我想通过主键搜索人员 首先 我创建 PersonKey 的实例 并将名称设置为 j
  • 我可以在方法体内使用注释吗?

    允许 Java 注释的语义将它们放置在某处在函数体内 例如注释特定的函数调用 语句或表达式 例如 class MyClass void theFunc Thing thing String s null Catching NullPoint

随机推荐

  • Docker 卷和主机权限

    当我运行 docker 镜像时 例如 docker run v home n1 workspace root workspace it rust latest bash 我在容器中创建一个目录 例如 mkdir root workspace
  • Servlet 过滤器在 AWS 上返回“代理错误”

    我已经设置了一个Filter为我的 GWT Web 应用程序添加爬网程序支持 这个想法是捕获所有包含 escaped fragment 并为爬虫提供快照 我已经设置了Filter使用 Guice 如下 filter through Craw
  • 如何将文件上传到 SharePoint 文件夹

    我一直在尝试将文件上传到我的 SharePoint 2013 服务器 我正在使用 REST API 从 Android 应用程序执行此操作 我只能上传文本文件 即 txt rtf 我就是这样做的 我点击的网址 https mysite co
  • 如何从 Android 手机获取 GPS 数据?

    有没有办法将 Android 手机的 GPS 数据连接 USB 有线 到 PC 我目前正在使用基于 gpsd 项目的 GPSTether 应用程序 我正在寻找比该应用程序提供更多控制且错误更少的替代方案 另外 是否有另一种方法可以在不使用任
  • 如何将 xsl 变量值传递给 javascript 函数

    我正在尝试将 xsl 变量值传递给 javascript 函数 我的 xsl 变量
  • 如何使用 python 在 mongoengine 中对 dict 中包含的嵌套字典或数组执行此类过滤查询?

    假设我有以下 dict 对象 a value of a somedict someinfo name Jordan food fries coke drink 如果我想使用 mongoengine 在 python 中应用查询过滤器 我该怎
  • 为 pandas 创建自定义插值函数

    我目前正在尝试使用 pandas 清理和填充一些缺失的时间序列数据 插值函数工作得很好 但是它没有我的数据集所需的一些 不太广泛使用的 插值函数 几个例子是一个简单的 最后 有效数据点 它会创建类似于阶跃函数的东西 或者类似对数或几何插值的
  • 为什么没有用户代理为视频元素实现 CSS 光标样式

    我想知道是否可以更改 CSS 属性cursor在默认 HTML5 上video元素 到目前为止 我的测试已经得出结论 没有用户代理 浏览器 实现cursor pointer默认情况下 所以你只剩下正常的操作系统箭头 控制指示器 当您尝试设置
  • “未捕获的引用错误:窗口未定义”p5.js Web Worker

    我有一个 javascript 代码 我将网络工作者与 p5 js 库一起使用 它不允许我使用 p5 的任何功能 所以我必须使用importScripts p5 js 在使用 p5 的任何函数之前导入 p5 js 库的函数 onmessag
  • Swift 泛型类作为委托

    我在 swift 中使用泛型类作为委托时遇到了问题 例如我尝试使用通用 NSFetchedResultsDelegate 定义为 class FetchedTableController
  • 使用 React 和 webpack 4 拆分项目; html 标签是意外的标记

    背景 我正在使用 React babel webpack4 和 es6 或者可能是 es7 我有一些模块被多个反应项目重用 因此 我创建了一个包含这些模块的 标准 文件夹 以便它们与任何特定项目分开 Problem 在我的 React 项目
  • 为 WinSocks 和 *nix 制作非阻塞套接字

    在 C C 中 如何将 WinSocks 和 nix 中的阻塞套接字转换为非阻塞套接字 这样 select 就能正常工作 您可以将预处理器用于特定于平台的代码 在Linux上 fcntl fd F SETFL O NONBLOCK Wind
  • Java 中的合成字段是什么? [复制]

    这个问题在这里已经有答案了 有人可以用一种易于理解的方式解释 Java 中合成字段的重要性吗 我记得在非静态内部类的上下文中阅读它 其中每个此类内部类实例都维护对封闭类的引用 为什么这样的引用 字段被称为合成字段 合成字段是编译器创建的字段
  • Xcode 永远快速索引

    我目前正在使用 swift 和 Xcode 6 Beta 3 开发一个 iOS 应用程序 到目前为止一切都很顺利 但现在随着我的项目的增长 Xcode 突然开始索引 并且一次又一次地这样做 使得 Xcode 几乎无法使用 我在网上搜索了类似
  • aws CLI 比使用 boto3 更快吗?

    我有存储在 s3 存储桶中的包 我需要读取每个包的元数据文件并将元数据传递给程序 我用了boto3 resource s3 在 python 中读取这些文件 该代码需要几分钟才能运行 如果我使用 aws clisync 它下载这些图元文件的
  • 更好的 boost asio Deadline_timer 示例

    我正在寻找一个更好的例子boost asio deadline timer 给出的例子总是会超时并调用close方法 我尝试打电话cancel 在计时器上但这会导致函数传递到async wait立即被呼叫 在异步 tcp 客户端中使用计时器
  • 使用 Ant 遍历目录

    假设我有一个包含以下路径的 PDF 文件集合 some path pdfs birds duck pdf some path pdfs birds goose pdf some path pdfs insects fly pdf some
  • 异步 REST API 生成警告

    我正在使用 Spring boot 应用程序 我有一个返回 Callable 的休息控制器 GetMapping fb roles Timed public Callable
  • 在 UIView 子类中调用drawRect

    我已经对 UIView 进行了子类化 并且实现了一个 drawRect 我基本上希望在设置 CGPoint 这是此 UIView 的一个属性 之后调用此 drawRect 我该怎么做呢 这是我的代码 id initWithCoder NSC
  • 根据请求创建 Hibernate-Session

    我刚刚启动了一个简单的 Java 测试项目 它使用 Hibernate 管理一些实体 并提供 REST 接口来操作这些对象并提供一些额外的业务逻辑 REST 接口是使用 RESTEasy 和 Jetty 创建的 到目前为止 一切工作正常 但