`

Hibernate获得Session的两个方法

阅读更多
Hibernate获得Session的两个方法
大家都知道,使用Hibernate对数据进行操作最重要的是获得一个Session。



首先获得一个SessionFactory,通过.config().buildSessionFactory(),获得一个SessionFactory



进而取得Session的方法在Hibernate里有两种:



1:Session session = sessionFactory.openSession();

    该种方法是创建一个新的session,不论当前的环境中是否已经创建,都会创建;

    且当session提交成功后,需要手动关闭这个session;



2:Session session = sessionFactory.getCurrentSession();

    该方法是获取当前环境中的session,若环境中已经存在session,则取出当前的;若无session则创建一个新的,

    只要当前的session提交后,该session会自动关闭,其后再使用getCurrentSession()方法,则是创建一个新的session;





      使用以上两种方式还需要注意的是事务控制,如果使用第一种方法,openSession()也许会导致数据的不一致,

      例如在用户管理功能模块中,我们对用户的各种操作都需要做日志记录,此时要两张数据表同时提交成功,否则都不进行数据的写入;所以我们要使用第二种方式来取得session。



特别强调:这两种取得Session的方法不能混用。原因很简单,在Hibernate中,Session是一个接口。两个获取session的方法并非是同一个实现,故不可混用!
分享到:
评论

相关推荐

    Hibernate_Session_Transaction

    在Java的持久化框架Hibernate中,`Session`和`Transaction`是两个至关重要的概念,它们在数据管理和事务处理中起到核心作用。这篇文章将深入解析这两个概念及其相关知识点。 `Session`是Hibernate提供的一种与...

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

    Hibernate中获取Session的两种方式代码示例 Hibernate 是一个流行的基于Java的持久层框架,提供了对数据库的访问和操作。Session 是 Hibernate 中一个核心概念,负责管理应用程序与数据库之间的交互。获取 Session ...

    hibernate session详细方法,值得珍藏

    - **`createQuery(String queryString)`** 和 **`createSQLQuery(String queryString)`**:这两个方法分别用于创建基于HQL(Hibernate查询语言)和原生SQL的查询。HQL提供了一种面向对象的查询方式,而原生SQL则直接...

    hibernate关于session的关闭实例解析

    在 Hibernate 中,有两个方法可以获取 Session:getSession() 和 openSession()。这两个方法都可以用于获取 Session,但是它们之间存在一些关键的区别。 getCurrentSession() 方法会将 Session 绑定到当前线程中,...

    Hibernate_11session

    Hibernate有两级缓存:一级缓存(Session级缓存)和二级缓存(SessionFactory级缓存)。一级缓存默认开启,它是自动的,当对象在Session中被修改并提交后,这些变化会被立即写入数据库。二级缓存则需要手动配置和...

    HibernateSession , Transaction 研究

    本文将深入研究Hibernate中的`Session`和`Transaction`,这两个概念是理解Hibernate工作原理的关键。 首先,让我们了解`Session`。在Hibernate中,`Session`充当了应用程序与数据库之间的桥梁,它是持久化操作的...

    hibernate常用方法集合

    在类中,`currentSession()`方法用于获取或创建当前线程的Session。 ```java public static Session currentSession() throws HibernateException { Session session = (Session) threadLocal.get(); if ...

    使用hibernate封装方法

    - 如果涉及到两个表的操作,例如用户(User)和角色(Role),可以通过@ManyToOne, @OneToOne, @OneToMany, @ManyToMany等注解定义关联关系。 - 在Service中,可以一次操作多个实体,比如添加用户时同时为其分配...

    Hibernate对BLOB CLOB操作

    这两个类型常用于存储图像、视频、大文本等数据,因为它们可以容纳超过数据库标准列大小限制的数据。下面我们将深入探讨Hibernate对BLOB和CLOB的操作。 首先,我们来看一下如何在数据库中创建包含BLOB和CLOB字段的...

    hibernate第一个hibernate

    - 读取(Read):`Session.get()`或`Session.load()`用于根据主键获取对象,而`Query`或`Criteria`接口则支持更复杂的查询。 - 更新(Update):通过`Session.update()`或`Session.saveOrUpdate()`更新已存在的...

    Spring与Hibernate集成中的session

    在Java Web开发中,Spring和Hibernate是两个非常重要的框架,它们分别处理依赖注入和对象关系映射(ORM)。本文将详细探讨Spring与Hibernate的集成,特别是如何在集成环境中使用和管理`Session`。 首先,Spring作为...

    Hibernate方法总结

    这两个方法都是用于从数据库中获取单个对象。`get`方法直接返回一个实体对象,如果数据库中没有找到对应ID的数据,则返回null。而`load`方法返回的是一个代理对象,即使数据库中没有对应的记录,它也会返回一个空的...

    hibernate的缓存机制和session对象的产生方式案例

    本文将深入探讨这两个主题,以帮助开发者更好地理解和利用Hibernate。 首先,让我们聚焦于Hibernate的缓存机制。缓存的存在是为了减少对数据库的直接访问,从而提高应用程序的性能。在Hibernate中,缓存分为一级...

    struts2+hibernate的两个小工程

    通过实践"STRUTS+HIBERNATE 小例子"这个项目,你可以深入理解这两个框架的使用方法和它们之间的协作机制,进一步提升你的Java Web开发能力。这个小工程将提供一个实际的应用场景,帮助你更好地消化理论知识,并为...

    Hibernate入门案例源码

    在本案例中,你会看到如何在MyEclipse和Eclipse两个集成开发环境中配置和使用Hibernate。这两个IDE都是Java开发者常用的工具,它们提供了丰富的功能,包括项目管理、代码编辑、调试以及对各种框架的支持。 首先,你...

    struts2+hibernate3 open session in view

    1. 配置拦截器:在Struts2的配置文件中,我们需要添加一个专门处理Hibernate Session的拦截器,如`OpenSessionInViewInterceptor`。这个拦截器会在请求开始时打开Session,在请求结束时关闭Session,确保Session在...

    spring hibernate整合的底层数据操作方法

    在IT行业中,Spring和Hibernate是两个非常重要的框架,Spring是一个全面的后端开发框架,而Hibernate则是一个对象关系映射(ORM)工具,主要用于数据库操作。当我们将它们整合在一起时,可以实现强大的数据访问能力...

    Hibernate源代码分析

    在 Hibernate 框架中,SessionFactory 和 ConnectionProvider 是两个非常重要的组件,了解它们的实现机制对于深入了解 Hibernate 的工作原理具有重要意义。本文将通过分析 Hibernate 的源代码,来了解 ...

    hibernate数据库通用SQL代码

    删除数据的方法涉及到两个参数:待删除的对象类型`o.class`和对象的主键`id`。首先,同样获取Session并开始事务,然后通过`session.get()`根据类名和主键获取数据库中的对象。如果对象存在,则调用`session.delete(o...

    Hibernate常用的jar包和两个配置文件

    本篇文章将深入探讨Hibernate框架中常用的jar包以及两个核心配置文件。 一、Hibernate常用jar包 1. **hibernate-core.jar**:这是Hibernate的核心库,包含了所有必要的API和实现,包括Entity管理、Session接口、...

Global site tag (gtag.js) - Google Analytics