save()方法: 立即分配数据库标识符。 persist()方法: 延迟分配数据库标识符,直到事务提交。 2. 异常处理 save()方法: 如果标识符生成失败,会立即抛出异常。 persist()方法: 如果没有活跃的事务,失败时会抛出异常;否则,依赖于事务的提交。 3. 事务依赖性 save()方法: 可以在没有活跃事务的情况下工
save : 在事务里执行到save,会向数据库插一条数据,如果事务里异常,会回滚,删除数据库中插入的数据。 persist:在事务里执行到persist,不会向数据库插数据,事务commit了才会插入数据。
Hibernate 之所以提供与save()功能几乎完全类似的persist()方法,一方面是为了照顾JPA的用法习惯。另一方面,save()和 persist()方法还有一个区别:使用 save() 方法保存持久化对象时,该方法返回该持久化对象的标识属性值(即对应记录的主键值);但使用 persist() 方法来保存持久化对象时,该方法没有任何返回值。因为 sav...
1,persist把一个瞬态的实例持久化,但是并"不保证"标识符(identifier主键对应的属性)被立刻填入到持久化实例中,标识符的填入可能被推迟到flush的时候。---不直接进数据库,多用于批量处理等 2,save, 把一个瞬态的实例持久化标识符,及时的产生,它要返回标识符,所以它会立即执行Sql insert,---直接进数据库...
transaction外的行为不同:如果在transaction之外调用,persist保证会立即执行INSERT语句;而save则不保证(save返回一个identifier,如果必须执行INSERT来获取该identifier,则就会立即执行INSERT,而不论是在transaction之内或之外) 使用场景:由于上述第三点区别,persist方法适用于被扩展的Session上下文的长期运行的会话中();而save...
脱管状态的实例可以通过调用 update()、0saveOrUpdate()、lock()或者replicate()进行持久化。 save()和persist()将会引发SQL的INSERT,delete()会引发SQLDELETE, 而update()或 merge()会引发SQLUPDATE。对持久化(persistent)实例的修改在刷新提交的时候会被检测到, 它也会引起 SQLUPDATE。saveOrUpdate()或者replica...
hibernate save()方法能够保存实体到数据库,正如方法名称save这个单词所表明的意思。我们能够在事务之外调用这个方法,这也是我不喜欢使用这个方法保存数据的原因。假如两个实体之间有关系(例如employee表和address表有一对一关系),如果在没有事务的情况下调用这个方法保存employee这个实体,除非调用flush()这个方法,否则仅仅...
2015-03-11 14:04 − 在Hibernate中,save()、saveOrUpdate()和persist()都是用于将对象保存到数据库中的方法,但其中有些细微的差别。例如,save()只能INSERT记录,但是saveOrUpdate()可以进行记录的INSERT和UPDATE。还有,save()的返回值是一个Seria... 凡尘里的一根葱 0 488 EntityFramework:我想我需要和 ...
1. 非事务性上下文:当主键生成策略为IDENTITY时,Hibernate的save()方法会立即发送INSERT语句,因为需要立刻获取数据库生成的主键值2. 常规操作: 由FlushMode决定,默认只在以下情况发送SQL: - 显式调用session.flush() - 事务提交时自动flush - 查询需要保证数据一致性时自动flush3. persist()方法特性: 严格遵循"对象...
save 因为需要返回一个主键值,因此会立即执行 insert 语句,而 persist 在事务外部调用时则不会立即执行 insert 语句,在事务内调用还是会立即执行 insert 语句的。 看persist 的注释会觉得其不会立即执行 insert 语句,为何 在事务内调用会立即执行 insert 语句,后面再分析。