`
mistapostle
  • 浏览: 17987 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

getCurrentSession 获得的session 什么时候关闭

 
阅读更多
最近在看Hibernate3.2,留意到又这样的代码:
try{
  factory.getCurrentSession().beginTransation();
  //do some work
  ...
    factory.getCurrentSession().getTransation.rollback()
}catch(RuntimeException){
  factory.getCurrentSession().getTransation.rollback()
}


没有关闭session的代码,不会是不需要吧?
分享到:
评论
3 楼 robbin 2007-01-17  
mistapostle 写道
先谢谢robbin
另外再请教一下大家,
session在commit的时候关闭,
那一个session是不是就只能提交一次了?
如果servcie里面包括了多个事务,
那是不是就不能保持一个Request一个session了,
这样以来openSessionInView岂不是没有意义?



openSessionInView会保证事务跨越整个请求。
2 楼 mistapostle 2007-01-17  
先谢谢robbin
另外再请教一下大家,
session在commit的时候关闭,
那一个session是不是就只能提交一次了?
如果servcie里面包括了多个事务,
那是不是就不能保持一个Request一个session了,
这样以来openSessionInView岂不是没有意义?
1 楼 robbin 2007-01-12  
在事务提交的时候,会自动关闭掉。

相关推荐

    ssh中getCurrentSession的使用

    2. **为什么使用getCurrentSession()**:与直接调用`openSession()`创建新的Session相比,`getCurrentSession()`有以下优势: - 它能够自动管理Session的生命周期,比如在请求结束时关闭Session,避免资源泄露。 -...

    新Hibernate SessionFactory().getCurrentSession()猫腻

    `getCurrentSession()`方法旨在支持线程绑定的Session管理,它会在合适的上下文中自动打开、关闭或重新连接Session,简化了事务管理和并发控制。 描述中的链接虽然没有提供具体内容,但通常会详细解析`...

    getCurrentSession 与 openSession() 的区别

    2. **Session生命周期**:`openSession()` 创建的Session通常一次性的,操作完成后需要关闭,而`getCurrentSession()` 返回的Session可以跨多个方法调用,直到事务结束。 3. **性能影响**:`getCurrentSession()` ...

    SessionFactory.getCurrentSession与openSession的区别

    - 使用 `getCurrentSession()` 需要配置合适的监听器或者拦截器,以便在适当的时候开始和结束 `Session`,并且处理事务。 2. **`Session.openSession()`**: - 这是传统的创建 `Session` 的方式,不涉及任何事务...

    hibernate关于session的关闭实例解析

    如果您使用 getCurrentSession() 方法获取 Session,并在 commit 或 rollback 时没有手动关闭 Session,那么 Session 将自动关闭。但是,如果您使用 openSession() 方法获取 Session,那么您需要手动关闭 Session。 ...

    Spring与Hibernate集成中的session

    - 创建`Session`:`SessionFactory.openSession()`或`SessionFactory.getCurrentSession()`(在已配置的事务环境下)。 - 事务开始:`Session.beginTransaction()`。 - 数据操作:如`Session.save()`, `Session....

    Hibernate中获取Session的两种方式代码示例

    我们需要在适当的时候关闭 Session,以避免资源的浪费。下面是关闭 Session 的代码示例: ```java public static void closeSession(Session session) { if (session != null) { if (session.isOpen()) { ...

    hibernate通过session实现增删改查操作实例解析

    Session session = sf.getCurrentSession(); session.beginTransaction(); session.save(t); session.getTransaction().commit(); } ``` 删 接下来,我们使用 Session 的 delete() 方法来删除一个实体对象。在...

    Hibernate管理Session和批量操作分析

    当线程首次调用SessionFactory的`getCurrentSession()`,会创建并绑定新的Session,后续调用则返回已绑定的Session。提交或回滚事务时,Session会关闭。再次调用`getCurrentSession()`时,会创建新的Session。 2. *...

    Hibernate常用总结

    } // 添加方法 public void addJob(JobsDemo job) { // 获得连接对象 session = HibernateSessionFactory.getCurrentSession(); // 开始事务 tr = session.beginTransaction(); // 保存对象 session.save(job); // ...

    Hibernate三种状态和Session常用的方法

    在测试类中,我们可以使用 getCurrentSession() 方法获取当前的 Session 对象,然后使用 Session 对象来执行各种方法。 例如,我们可以使用如下代码来测试 get() 方法: ```java @Test public void testGetOrLoad...

    在hibernate中的数据库操作

    - **生命周期**: 每个 `Session` 实例都有自己的生命周期,通常在一个事务或业务逻辑单元内创建并使用,然后关闭。 - **缓存**: `Session` 维护了一个缓存,用于存储已加载的对象实例,这有助于提高性能并减少不必要...

    Hibernate源代码分析(一)

    从上面的代码可以看到,getCurrentSession 方法将获得 Session 对象的工作委托给了 currentSessionContext 对象。currentSessionContext 对象是当前 Session 的上下文环境,它负责管理当前 Session 对象的创建和管理...

    hibernate笔记

    - **游离(Detached)**:当一个对象之前是持久状态的,但在Session关闭或清理后不再与任何Session关联时的状态。 - **移除(Removed)**:当一个持久状态的对象被Session删除后,它会变成移除状态。 下面通过具体的...

    SpringMVC增删改查

    Session session = sessionFactory.getCurrentSession(); session.save(user); } public void updateUser(User user) { Session session = sessionFactory.getCurrentSession(); session.update(user); } ...

    Spring整合hibernate

    在事务开始时打开Session,在事务结束时关闭或回滚Session。虽然比前两种方式更底层,但提供了更大的灵活性和控制权。 在实际应用中,选择哪种方式取决于项目的需求和团队的偏好。对于新项目,通常推荐使用...

Global site tag (gtag.js) - Google Analytics