StatelessSession (无状态session)接口
作为选择,Hibernate提供了基于命令的API,可以用detached object的形式把数据以流的方法加入到数据库,或从数据库输出。StatelessSession没有持久化上下文,也不提供多少高层的生命周期语义。特别是,无状态session不实现第一级cache,也不和第二级缓存,或者查询缓存交互。它不实现事务化写,也不实现脏数据检查。用stateless session进行的操作甚至不级联到关联实例。stateless session忽略集合类(Collections)。通过stateless session进行的操作不触发Hibernate的事件模型和拦截器。无状态session对数据的混淆现象免疫,因为它没有第一级缓存。无状态session是低层的抽象,和低层JDBC相当接近。
StatelessSession session = sessionFactory.openStatelessSession();
Transaction tx = session.beginTransaction();
ScrollableResults customers = session.getNamedQuery("GetCustomers")
.scroll(ScrollMode.FORWARD_ONLY);
while ( customers.next() ) {
Customer customer = (Customer) customers.get(0);
customer.updateStuff(...);
session.update(customer);
}
tx.commit();
session.close();
注意在上面的例子中,查询返回的Customer实例立即被脱管(detach)。它们与任何持久化上下文都没有关系。
StatelessSession 接口定义的insert(), update() 和 delete()操作是直接的数据库行级别操作,其结果是立刻执行一条INSERT, UPDATE 或 DELETE 语句。因此,它们的语义和Session 接口定义的save(), saveOrUpdate() 和delete() 操作有很大的不同。
分享到:
相关推荐
- StatelessSession 不维护任何会话状态,不支持缓存,适用于只读或大量插入、更新等无状态操作,性能优于常规Session。 - 通过`SessionFactory.openStatelessSession()`创建StatelessSession,使用`batchSize`...
10. **StatelessSession**: 虽然Session是主要的工作接口,但Hibernate也提供了无状态的Session(StatelessSession),不跟踪对象状态,适合进行大量数据的批量操作,性能更优,但不支持缓存和事务。 了解和熟练...
- **无状态Session Bean (Stateless Session Bean)**:每个客户端请求都会创建一个新的实例,不保存任何客户端状态,适合执行计算任务或事务操作。 - **有状态Session Bean (Stateful Session Bean)**:每个客户端...
7. **StatelessSession**: 对于仅需插入或更新大量数据的场景,StatelessSession比普通Session更合适,因为它不维护任何实体状态,没有缓存,效率更高。 8. **Batch fetching**: Hibernate的批处理加载机制(批获取...
- **STATELESS SESSION(无状态SESSION)接口**: 适用于只读操作。 #### 13. HQL - **HQL (Hibernate Query Language)**: 类似于SQL的语言,用于查询持久化对象。 #### 14. 条件查询 - **条件查询**: 在HQL或SQL中...
源码中,Session的实现类`StatelessSession`和`SessionImpl`分别对应无状态和有状态的会话。 3. Entity Manager:在JPA支持下,`EntityManager`是操作实体的主要接口,源码中通过`EntityManagerFactory`创建,与...
StatelessSession用于执行简单的读写操作,不会维护持久性上下文。 ##### 4.4 Hibernate查询语言DML **4.1.1 HQL的更新和删除** Hibernate Query Language (HQL)支持执行更新和删除操作。 **10/24/11. HQL语法...
3.5.2 访问Hibernate的Session接口 3.6 运行helloapp应用 3.6.1 创建运行本书范例的系统环境 3.6.2 创建helloapp应用的目录结构 3.6.3 把helloapp应用作为独立应用程序运行 3.6.4 把helloapp应用作为...
13.3. StatelessSession (无状态session)接口 13.4. DML(数据操作语言)风格的操作(DML-style operations) 14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接...
- **StatelessSession**: 不维护对象状态,适合大量读取或更新操作。 - **Native SQL**: 直接执行SQL,当HQL或Criteria API不能满足需求时使用。 - **Custom Types**: 自定义类型处理,扩展Hibernate对特殊数据类型...
此外,无状态会话Bean(Stateless Session Bean)和有状态会话Bean(Stateful Session Bean)的管理也变得更加简单。 **二、远程调用EJB** 远程调用EJB通常涉及到以下几个步骤: 1. **创建EJB接口**:定义EJB的...
- Stateless Session Bean(无状态会话Bean)不保存任何客户端状态,每次调用都是独立的,适合处理无状态的事务。 5. 其他Java EE面试可能涉及的主题: - MVC设计模式:Model-View-Controller架构,用于分离应用...
13.3. StatelessSession (无状态session)接口 13.4. DML(数据操作语言)风格的操作(DML-style operations) 14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接...
13.3. StatelessSession (无状态session)接口 13.4. DML(数据操作语言)风格的操作(DML-style operations) 14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接...
3.5.2 访问Hibernate的Session接口 3.6 运行helloapp应用 3.6.1 创建运行本书范例的系统环境 3.6.2 创建helloapp应用的目录结构 3.6.3 把helloapp应用作为独立应用程序运行 3.6.4 把helloapp应用作为...
3.5.2 访问Hibernate的Session接口 3.6 运行helloapp应用 3.6.1 创建运行本书范例的系统环境 3.6.2 创建helloapp应用的目录结构 3.6.3 把helloapp应用作为独立应用程序运行 3.6.4 把helloapp应用作为...
13.3. StatelessSession (无状态session)接口 13.4. DML(数据操作语言)风格的操作(DML-style operations) 14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接...
3.5.2 访问Hibernate的Session接口 3.6 运行helloapp应用 3.6.1 创建运行本书范例的系统环境 3.6.2 创建helloapp应用的目录结构 3.6.3 把helloapp应用作为独立应用程序运行 3.6.4 把helloapp应用作为...
13.3. StatelessSession (无状态session)接口 13.4. DML(数据操作语言)风格的操作(DML-style operations) 14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) ...