`
1028826685
  • 浏览: 938743 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

get() load() persist() 等方法的区别

阅读更多
Session的几个主要方法
1.save,persist保存数据,persist在事务外不会产生insert语句。
save()方法和persist()方法在没有开启事务情况下save()会先向数据库中插入一条数据,然后回滚事务删除该数据 .persist()方法则不会向数据库中插入数据而是抛出异常
2.delete,删除对象
3.update,更新对象,如果数据库中没有记录,会出现异常。对象处于脱管状态使用
4.get,根据ID查,会立刻访问数据库。类似JPA中的find()方法
5.Load,根据ID查,(返回的是代理,不会立即访问数据库)。和JPA中的getReference()方法类似得到代理对象
6.saveOrUpdate,merge(根据ID和version的值来确定是save或update),调用merge你的对象是脱管的。使用这个方法数据库中要有ID字段
7.lock(把对象变成持久对象,但不会同步对象的状态)。
           8.merge()是把处于游离状态对象同步到数据库中
分享到:
评论

相关推荐

    04_传智播客hibernate教程_Session接口及getloadpersist方法

    本教程聚焦于Hibernate中的Session接口以及get、load、persist这三个常用的方法,它们是 Hibernate 实现对象-关系映射(ORM)的核心组件。 首先,我们来理解Session接口。Session在Hibernate中扮演着数据库连接的...

    persist:Persist 加载 Go 对象并将其保存到文件中

    坚持 Persist 加载 Go 对象并将其保存到文件中 用法 首先得到它: go get github....if err := persist.Load("./project.conf", &conf); err != nil { log.Fatalln("failed to load config:", err) }

    java框架方面面试题

    接下来是关于Hibernate中Session的load和get方法的区别。load方法设计用来获取数据,如果没有找到符合条件的数据记录,会抛出异常;而get方法会返回null,表示没有找到数据。load方法返回的是一个代理对象,而get...

    传智播客李勇hibernate源码1-20课

    04_Session接口及get|load|persist方法 05_实体对象的三种状态与saveOrUpdate方法 06_完善HibernateUtil类及hql查询入门 07_实体类或属性名与数据库关键字冲突问题 10_使用Hibernate完成CRUD实验的步骤说明 11_...

    Java面试题全集(下)

    save()、update()、merge()、lock()、saveOrUpdate()和persist()等方法用于处理Hibernate对象的三种状态:瞬时态、持久态和游离态。这些方法决定了对象的状态转换以及是否执行SQL语句。 5. JavaEE框架:除了...

    java框架面试题

    #### 四、Hibernate中Session的load和get方法 **1. load与get的区别** - **load**方法假设指定ID的实体一定存在于数据库中,返回的是代理对象。如果没有找到对应的实体,则抛出异常。 - **get**方法直接返回实体...

    JAVA面试问题及标准答案.docx

    关于Session的load()和get()方法,两者都可以用于获取数据库中的对象。get()方法如果找不到匹配的记录会返回null,而load()则会抛出异常。load()返回的是对象的代理,get()直接返回对象。此外,load()默认会尝试从二...

    JAVA面试题(下).pdf

    5. Session的save、update、merge、lock、saveOrUpdate、persist等方法用于在Hibernate中进行CRUD操作,每个方法都有其特定的使用场景和区别。 6. Hibernate中的锁机制包括悲观锁和乐观锁。悲观锁通常通过版本号或...

    深入理解持久化对象

    这两个方法的主要区别在于,`save()`方法返回对象的标识符,而`persist()`方法则不返回任何值。 - **加载持久化对象**: - `load()`方法:根据主键加载持久化对象,支持延迟加载特性,即只有当真正访问对象属性时...

    JAVA面试问题及答案.docx

    此外,Session还提供了save()、update()、merge()、lock()、saveOrUpdate()和persist()等方法来管理对象的状态。save()和persist()用于将瞬时态对象转变为持久态,而update()和merge()则用于更新游离态对象。merge()...

    hibernate的各种保存方式的区别以及hibernate对象的三种状态[定义].pdf

    通过Session的save()、get()或load()方法可以将对象设置为持久化状态。 - Detached(游离):持久化对象在Session关闭后,就会变为游离状态。这时,对象与Session断开,但其仍然包含数据库中的数据副本。更新游离...

    hibernate实现增删改查

    3. **修改**:首先,通过Session的get或load方法获取要更新的对象,然后修改对象的属性,最后调用Session的update方法,如`session.update(user)`。这将同步数据库中的记录。 4. **查询**:使用Session的...

    hibernate学习笔记

    get 和 load 方法的区别在于对懒加载(lazy loading)的支持,get 直接加载数据,而 load 支持延迟加载。如果 get 无法找到数据,则返回 null;load 则会抛出异常。 transient 状态的特征是数据库中没有对应记录,...

    Hiberbate增删改查(分页)的例子简单的

    2. 读取(Read):使用 Session 的 get() 或 load() 方法获取数据库中的对象。get() 直接返回对象,而 load() 返回代理对象,延迟加载实体的属性。 3. 更新(Update):调用 Session 的 update() 或 merge() 方法可...

    hibernate 简单CRUD操作

    - 使用`Session`的`get()`或`load()`方法根据主键获取对象。 - `createQuery()`或`createNativeQuery()`方法可以执行HQL(Hibernate查询语言)或SQL,通过结果集获取对象。 - `list()`、`uniqueResult()`、`...

    Hibernate 映射关系! 基础封装

    通过`get()`或`load()`方法获取的对象是持久化的。 3. **脱管(detached)**:对象曾经是持久化的,但由于Session关闭或显式调用`delete()`,对象与Session的关联断开。脱管对象可以通过`save()`、`saveOrUpdate()`或...

    Hibernate 对象的三种状态和特点

    此外,即使在同一个Session内,多次调用`get()`或`load()`方法获取同一个持久对象,也会返回相同的实例,这是由于对象的缓存机制。 3) 脱管或游离状态(Detached State): 当Session关闭,或者使用`session.evict...

    hibernate整理

    4. **查询(Query)**:查询是通过`Session.get()`、`Session.load()`或`Criteria API`、`HQL(Hibernate Query Language)`等实现的。`Session.get()`根据主键直接获取对象,`Session.load()`则返回一个代理对象,...

    Spring-MVC-Hibernate-CRUD-源码.rar

    Hibernate的Session.load()或Session.get()方法用于根据ID加载实体。 - **更新(Update)**:PUT请求用于更新已有数据。在Spring MVC中,更新逻辑通常在方法中实现,更新后的实体通过Session.update()或Session....

    hibernate登录小例子

    - **Create**:创建新用户时,使用`Session.save()`或`Session.persist()`方法将实体持久化到数据库。 - **Read**:在登录时,使用`Session.get()`或`Session.load()`方法根据用户名查询用户对象。 - **Update**:...

Global site tag (gtag.js) - Google Analytics