`
zcw_java
  • 浏览: 305716 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate中增删查改与session周期

 
阅读更多
Hibernate中的增删查改操作都是通过session的方法进行
一、查询
session中查询有两种方法:get和load
这两种方法都是返回实体对象,不同的是!如果未发现符合条件的记录,get会返回null而load会抛出一个ObjectNotFoundException异常。
load方法可返回实体的代理类实例,而get方法永远直接返回实体类
load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如果没有发现数据,将越过二级缓存,直接调用sql完成数据读取,有人称之为“懒加载”。

get方法首先查询session缓存,没有结果!在查询二级缓存,最后查询数据库!
load方法首先查询session缓存,没有结果!创建代理,实际使用数据的时候才查询二级缓存和数据库.

二、保存
首先理解实体对象的三种状态:
瞬时状态:new出来了,但没被session管理,数据库里不存在!
持久状态:对象有实例,session也管理,数据库有记录!
游离状态:脱离session的管理,但数据库有记录!
其实子要理解为:Hibernate三个阶段
1>未被hibernate处理
2>正在被hibernate处理
3>处理之后
save和persist方法:
都是用来保存数据,区别在没开启事务时,persist方法不向数据库插入数据,不会产生insert语句;save方法在没有开启事务时会向数据库插入数据,但会回滚,所以数据库里没有数据。

有人会说obj.save();  obj.setName("aaa");  t.commit();这种hibernate会自动检测到对象发生变化,没错!因为hibernate为提高效率,减少与数据库交互,commit的时候才会对持久化对象检测!

通过evict()/close()/clear()把持久化状态变成脱管状态
通过get()或者load()或者find()或者iterate()等都能取得持久化状态的对象
分享到:
评论

相关推荐

    jsf+hibernate+javabean完成对表的增删查改

    综上所述,"jsf+hibernate+javabean完成对表的增删查改"项目涵盖了前端与后端的集成,涉及了JavaWeb开发的核心技术和最佳实践。通过这样的组合,开发者能够高效地构建出功能完善的数据库驱动的应用程序。在实际项目...

    SSH实现增删查改

    在SSH实现增删查改的过程中,Hibernate通过配置XML文件或注解,将Java对象映射到数据库表,提供了一套简便的CRUD(Create、Read、Update、Delete)操作接口,使得数据库的插入、查询、更新和删除变得简单易行。...

    用Hibernian实现基本的增删查改

    **标题:** 使用Hibernate实现基本的增删查改 **正文:** 在Java开发中,ORM(Object-Relational Mapping)框架如Hibernate提供了一种方便的方式来处理数据库操作,避免了大量繁琐的SQL代码。本教程将详细介绍如何使用...

    SSH+Oracle增删查改

    在"SSH+Oracle增删查改"的主题中,我们将探讨如何在SSH框架下使用Oracle数据库进行数据的插入、更新、删除和查询操作。 **1. Struts2** Struts2是MVC(Model-View-Controller)架构的一部分,负责处理HTTP请求和...

    Hibernate入门-搭建框架实现基本的增删改查(源码)

    在本教程中,我们将深入理解Hibernate的基本概念,并通过实例演示如何搭建框架来实现数据的增删改查操作。 **一、Hibernate简介** Hibernate 提供了一种在Java应用中持久化对象的机制,它将对象模型与关系数据库...

    ssh实现增删查改的例子

    综上所述,这个SSH实现增删查改的例子展示了Java Web开发中的一种常见实践,通过整合Struts2、Spring和Hibernate,可以高效地处理数据库操作,并提供友好的用户界面。对于初学者来说,理解并动手实践这样的项目,有...

    Struts2.1+Hibernate3.1+Spring2.5 整合实现增,删,改,查

    在本项目中,Spring管理Bean的生命周期,协调Struts2和Hibernate的工作。 整合SSH的过程通常包括以下几个步骤: 1. **环境准备**:安装MyEclipse8.0或其他IDE,设置Java、JSP、Servlet和数据库环境。 2. **引入...

    ssh框架完成对oracle数据库的增删查改

    在实际应用中,增删查改操作通常通过Hibernate的Session接口完成。创建(Create)操作涉及实体的保存,通过Session的save()或saveOrUpdate()方法;读取(Read)操作通过Query或Criteria API实现,查询结果可以转换为...

    struts 用户信息管理 登录验证 增删查改例子 很适合初学者

    这个“struts 用户信息管理 登录验证 增删查改例子”是一个面向初学者的教学资源,通过实际操作,帮助学习者理解如何在Struts框架下实现用户信息的完整生命周期管理,包括用户登录验证、信息添加、删除、查询和修改...

    SSH整合增删查改源代码(有分页,项目可运行)

    在这个"SSH整合增删查改源代码(有分页,项目可运行)"中,开发者提供了一套完整的实现基础CRUD操作(创建、读取、更新、删除)的示例代码,同时包含了分页功能,这对于初学者理解和掌握SSH整合非常有帮助。...

    Struts+Spring+Hibernate实现的增删查该Demo(不带jar包)

    这个Demo展示了如何将这三个框架整合在一起,实现一个完整的增删查改(CRUD)应用,但请注意,这个Demo不包含必要的库文件(jar包),因此在实际运行前需要自行添加依赖。 首先,让我们深入理解每个框架在项目中的...

    增删改查例子

    例如,可以通过Hibernate提供的`Session`对象来执行增删改查等操作。 ```java package com.fejd.companyrm.dao; import java.util.List; import com.fejd.companyrm.model.Employee; public interface ...

    Struts+Spring+Hibernate实现的增删查(该Demo不带jar包)

    5. **编写DAO接口和实现**: 定义DAO接口,包含增删查改的方法,然后实现这些方法,使用Hibernate的Session对象来操作数据库。 6. **编写Service接口和实现**: 定义业务逻辑接口,调用DAO层的方法,处理业务逻辑。...

    Hibernate中文参考文档 V3.2.chm

    2. **Session接口**:作为数据库操作的主要入口,Session提供了增删查改(CRUD)的基本方法,同时管理着对象的状态,确保数据的一致性。 3. **Query和Criteria API**:提供强大的查询能力,允许开发者用面向对象的...

    Hibernate开发指南01

    5. **CRUD操作**:通过实例演示如何使用Hibernate进行增删查改操作,包括保存(save()、persist())、更新(update())、删除(delete())和查询(find()、load()、Criteria API、HQL)。 6. **缓存机制**:介绍Hibernate...

    hibernate源码 直接使用

    5. **CRUD操作**: 使用Session进行增删查改操作,如session.save()、session.get()、session.update()和session.delete()。 6. **查询**: 使用HQL或Criteria API编写查询语句,获取结果集。 7. **事务管理**: 由于...

    eclipse_struts_hibernate_spring集成开发宝典 hibernate

    5. **CRUD操作**:使用Hibernate进行基本的增删查改操作非常直观。例如,通过`Session.save()`或`Session.persist()`方法保存新对象,`Session.update()`更新已存在的对象,`Session.delete()`删除对象,`Session....

    hibernate3.3.2中文帮助文档

    4. **持久化操作**:包括增删查改(CRUD)的基本API使用,如Session的save()、update()、delete()和load()、get()方法。此外,还会有Transaction管理,确保数据的原子性和一致性。 5. **查询语言(HQL)**:...

Global site tag (gtag.js) - Google Analytics