- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是hibernate新手,在阅读了hibernate api和教程后,似乎 session 在不使用时应该关闭。
像这样:
Session sess=getSession();
Transcration tx=sess.beginTranscration();
//do something using teh session
sess.save(obj);
tx.commit();
sess.close;
在独立应用程序中使用它时我没有任何疑问。但是我不确定何时在网络应用程序中使用。
例如,我有一个servlet:TestServlet
来接收客户端的参数,然后我调用一个Manager根据参数查询一些东西,就像这样:
class TestServlet{
doGet(HttpServletRequset,httpServletResponse){
String para1=request.getParam...();
String para2=.....
new Manager().query(para1,para2);
}
}
class Manager{
public String query(String pa1,String pa2){
Session=....// get the session
//do query using para1 and 1
session.close() //Here, I wonder if I should close it.
}
}
我应该在查询方法中关闭 session 吗?
因为有人告诉我hibernate中的session就像jdbc中的连接一样。那么频繁地打开和关闭它是正确的方法吗?
顺便问一下,每次都需要tx.commit()吗?
另外,在 servlet 中使用 session 的线程问题是什么,因为我看到 api 中的 session 不是线程安全的。
最佳答案
I am new in hibernate,after read the hibernate api and tutorial,it seems that the session should cloesd when not used.
完成后应该将其关闭(但正如我们将看到的,这可以自动为您完成)。
I have no question when using it in a standalone application. However I am not sure when using in the web app.
嗯,如 11.1.1. Unit of work 部分所述在文档中,多用户客户端/服务器应用程序中最常见模式是每个请求 session 。
For example, I have a servlet:TestServlet to recieve the parameters from the client,then I call a Manager to query something according to the parameters: just like this (...) Should I close the session in the query method?
这完全取决于您如何获取 session 。
sessionFactory.getCurrentSession()
,您将获得一个“当前 session ”,该 session 与事务的生命周期绑定(bind),并且会在事务结束时自动刷新并关闭(提交或回滚)。sessionFactory.openSession()
,您必须自己管理 session 并“手动”刷新和关闭它。要实现每个请求 session 模式,首选第一种方法(更简单且更简洁)。使用第二种方法来实现long conversations 。
维基页面Sessions and transactions是对此主题文档的一个很好的补充。
BTW, does the tx.commit() is required each time?
您可能想阅读Non-transactional data access and the auto-commit mode澄清一些事情,但简单地说,您的 Hibernate 代码必须在事务内执行,我建议使用显式事务边界(即显式 beginTransaction
和 commit
).
Also what's the thread problem about using session in servlet, since I saw the session is not thread safe in api.
只要不将其设为 Servlet 的实例变量,就不会有任何问题。
关于hibernate - 控制 hibernate session (何时手动关闭它),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4040761/
什么是 hibernate 和n- hibernate ?我可以在 Visual Studio 2008 中使用它进行 C# Web 应用程序开发吗?请给我建议...我是 asp.net Web 应用
我有一个不系统地发生的异常(exception)。 我试图通过在每次迭代中刷新和清理 session 来解决此问题,但没有成功。 [quartzScheduler_Worker-7] ERROR jd
使用 Hibernate 在数据库中存储 IP 地址的最佳类型是什么? 我虽然是 Byte[] 或 String,但有没有更好的方法,或者你用什么? @Column(name = "range_fr
我正在尝试制定一个公式来选择用户个人资料的用户友好名称。它选择名字 + ' ' + 姓氏 如果其中至少有一个不为空且不为空(包含非空白字符),否则选择 短名称 (条件相同),最后,如果 短名称 为空或
在hibernate中,是否可以将鉴别器作为一个实体?例如,如果我将 Department 作为基类,将 AdminDepartment 和 ProcessingDepartment 作为子类。 De
我只想从表中获取一些列值。因此,我已经使用投影来实现这一目标。该代码有效,但我认为它无效。 我的问题是当我使用ProjectionsList并将标准条件列表设置为ArrayList时-Bulletin
你好: 我对 hibernate 缓存缓存的内容感到困惑。 从文档中,我知道 hibernate 中有缓存类型。 一级 :交易级别。 似乎要被 session 持久化的实体被缓存在这里。 二级缓存 :
我遇到了一个情况: save或update hibernate 的目标表中的某些数据 在目标表上有一个触发器,该触发器将在目标表的insert或update操作之前执行 由 hibernate 将此记
我有一个名为 Master_Info_tbl 的表。它是一个查询表: 这是该表的代码: @Entity @Table(name="MASTER_INFO_T") public class Code
我想知道如何在 Hibernate 查询语言中使用日期文字。我在我的 JPA 项目中做了如下操作(作为 Eclipselink 提供者)并且它工作正常。 SELECT m FROM Me m WHER
@Entity public class Troop { @OneToMany(mappedBy="troop") public Set getSoldiers() { ...
我正在尝试使用 hibernate 查询删除表 'user_role' 中的所有行。但每次我都会出错。有人可以帮我吗。 DaoImpl @Override public void deleteAll(
不是将数据库操作分散在四个 (osgi) 包中,而是在那里做略有不同的事情。我想创建一个负责所有持久性问题的(简单的)OSGi 包。我觉得这并不像听起来那么简单,因为“每个包都有独特的类加载器”。 因
这就是我使用生成器的方式: private Integer id; 我看到的行为是: 创建第一个对象 hibernate 分配 id = 1 删除该对象 关闭服务
对象级别的实体和值类型有什么区别。我知道实体将有一个 id 但值不会,但为什么我们需要不同的方法来映射实体与值类型? 这样做是为了让hibernate可以对值类型应用任何优化吗? 最佳答案 一个实体已
我正在使用 HibernateTemplate.findByCriteria 方法进行一些查询。现在我想在标准上创建一些 SQL 限制,比如 criteria.add(Restrictions.sql
所以我有以下代码: Query query = session.createQuery("from Weather"); List list = query.list();
如何使用Hibernate映射具有多个实体的 View ? 问候, 混沌 最佳答案 请参见Hibernate文档中第5.1.3节“类”,紧接在“Id”节之前: There is no differen
据我所知,Hibernate 有两种类型的实现 JPA的实现(2)(@Entity,@Table注解) 扩展到旧的(传统的) hibernate (没有 JPA),使用 HSQL 查询,没有注释 如果
我需要一个将条目存储为键值对的集合(因此我可以通过键查找值),但我需要一个允许多个值使用 hibernate 共享同一个键的集合 最佳答案 一个键具有多个值的映射称为多映射 - 在 Apache 公共
我是一名优秀的程序员,十分优秀!