- 浏览: 259696 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (87)
- Java (6)
- Frameworks (1)
- JavaWeb (3)
- Spring (6)
- Hibernate (26)
- Maven (2)
- Plugin (1)
- Velocity (1)
- Freemarker (1)
- Spring security (18)
- Google (5)
- Guice (5)
- rmi (1)
- Annotation (1)
- Binding (1)
- commons-fileupload (3)
- fileupload (3)
- ehcache (1)
- ApplicationContext (1)
- Resource (1)
- Validator (1)
- PropertyEditor (1)
- one-to-many (5)
- cascade (2)
- MessageSource (1)
- Serialize (1)
- Serializable (1)
- delete (1)
- delete-orphan (1)
- fetch (1)
- one-to-one (1)
- join (4)
- DomainObject (1)
- CRUD (1)
- composite-element (1)
- Hibernate ORM (14)
- dynamic-insert (1)
- dynamic-update (1)
- Search (1)
- DDD (0)
- Job (0)
- element (1)
- Unique (1)
- Group (1)
- tomcat (1)
- https (1)
- mysql (1)
最新评论
-
xurunchengof:
[url][url][url][img][img][img][ ...
Spring Security 3多用户登录实现之三 验证过滤器 -
Wind_ZhongGang:
<div class="quote_title ...
Spring集成Commons fileupload,文件上传 -
yo8237233:
你这样的话如果上传文件超过了50000000就会报异常
Spring集成Commons fileupload,文件上传 -
zhuzhiguosnail:
Wind_ZhongGang 写道lianglaiyang 写 ...
Spring Security 3多用户登录实现一 -
曾老师:
?????
Spring Security 3用户登录实现之十 用户切换
先来看看hibernate-reference.pdf上对persist和save的说明吧
从上面得知persist和save方法都可以对持久化实体进行保存,但它们的作用范围却是有着明显的区别,当你调用persist方法对持久化实体进行保存时,它必须在事务的包裹下,如果脱离事务,那么是不会向数据库发送插入语句的,也就是说当你调用persist方法时,必须首先开启事务,而对于save方法来说不论在事务内外,它都会向数据库发送插入语句,不需要事务的包裹执行。
这里有这样两个持久化实体,person和book,两者有一对多的双向关联关系,来看看我写的一个测试类吧
package com.aaxis; import com.aaxis.model.Book; import com.aaxis.model.Person; import junit.framework.TestCase; import org.hibernate.*; import org.hibernate.cfg.Configuration; import java.util.ArrayList; import java.util.List; /** * Created by IntelliJ IDEA. * User: Zhong Gang * Date: 10/24/11 * Time: 11:50 AM */ public class HibernateCoreTest extends TestCase { public void testBook() throws Exception { Book book1 = new Book("book1", "booksssssss"); Book book2 = new Book("book2", "booksssssss"); List<Book> books = new ArrayList<Book>(); books.add(book1); books.add(book2); Person person = new Person("person1", "personsssss", books); SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); session.save(person); System.out.println("person's id is " + person.id());Person personAfterFound = (Person) session.get(Person.class, person.id()); System.out.println("person's name is " + personAfterFound.name()); transaction.commit(); session.close(); } }
这里首先使用的是save方法,打印出来了person的id,如果将这里的save方法换成persist,同样的结果,也打印出来了person的id,并且当我们再在这个session里根据person的id去查找person时,并没有发出任何查询语句,所以从这里得知,当我们调用persist或save方法时,会将一个持久化实体状态由瞬时态转化为持久态,并且将该对象缓存在session当中。但是如果将这里的保存方法换成merge,那么这时输出的id就是空的,也就查找不到任何person对象了,研究源码发现merge方法还返回了一个Object,查看该方法的注释@return an updated persistent instance,返回了一个持久化对象,这个对象就是当我们保存时向该方法传递进去的对象,所以说当在调用merge方法,如果想使用该对象的持久化对象,需要使用的是merge返回的对象。
发表评论
-
Hibernate unique使用
2011-11-28 22:16 1106在Hibernate中对于一对一的关联关系配置 ... -
Hibernate cascade在不同关联关系中的具体表现
2011-11-22 21:47 3080在Hibernate中,针对持久化实体的配置文件中有 ... -
Hibernate element使用
2011-11-20 20:43 1537一.Person package co ... -
Hibernate 单表实现树结构
2011-11-13 21:10 2791来看看通过单表来实现一个树形结构的方式。这里假设有这样 ... -
Hibernate Search配置及简单应用
2011-10-25 16:06 2534Hibernate Search是一款集成Apach ... -
Hibernate的三种配置方式
2011-10-24 16:58 1769对于Hibernate的配置方式,有三种,一种是通过 ... -
dynamic-insert,dynamic-update 我有话要说
2011-10-21 17:39 12918在之前的一个项目中,Team leader说在每一个 ... -
Hibernate one-to-many composite-element实现
2011-10-17 16:55 2609Hibernate中持久化实体间一对多关联关系的compo ... -
基于DomainObject的通用数据库CRUD操作
2011-10-17 15:09 1554对于项目中的持久化实体,持久化实体虽然对应着不同的业务对象 ... -
Hibernate one-to-many 双方双向连接表关联
2011-10-17 14:24 1697Hibernate中持久化实体间一对多关联,具体关联关 ... -
Hibernate one-to-many 多方单向连接表关联
2011-10-15 23:37 1248Hibernate中持久化实体间一对多 ... -
Hibernate one-to-many 一方单向连接表关联
2011-10-15 23:17 1643Hibernate中对于持久化实体间的关联关系有 ... -
Hibernate one-to-one 两方双向连接表关联
2011-10-15 17:38 2712Hibernate中对于持久化实体间的关联关系有三种分类, ... -
Hibernate fetch 抓取策略
2011-09-27 18:20 1312Hibernate fetch抓取策略定义了当抓 ... -
Hibernate 关联关系解除
2011-09-27 13:46 1502Hibernate对于持久化实体间的关联关系解 ... -
Hibernate one-to-many cascade探究
2011-09-08 13:20 1114对于Hibernate的one-to-many关联关系中, ... -
Hibernate inverse 深度解析
2011-08-09 22:55 1227inverse 英文意思为反向,倒转的。 Hi ... -
Hibernate ORM one-to-one主键关联关系映射
2011-08-01 22:08 1344Hibernate ORM one-to-one映射主要有 ... -
Hibernate ORM Inheritance
2011-07-31 22:56 1312Hibernate ORM提供了三 ... -
Hibernate many-to-many
2011-07-30 17:20 1850对于持久化实体间多对多的关联关系,在数据库中的反映 ...
相关推荐
hibernate save()方法能够保存实体到数据库,正如方法名称save这个单词所表明的意思。我们能够在事务之外调用这个方法,这也是我不喜欢使用这个方法保存数据的原因。 假如两个实体之间有关系(例如employee表和...
8.4.1 Session的save()和persist()方法 8.4.2 Session的load()和get()方法 8.4.3 Session的update()方法 8.4.4 Session的saveOrUpdate()方法 8.4.5 Session的merge()方法 8.4.6 Session的delete()方法 ...
8.4.1 Session的save()和persist()方法 191 8.4.2 Session的load()和get()方法 194 8.4.3 Session的update()方法 195 8.4.4 Session的saveOrUpdate()方法 197 8.4.5 Session的merge()方法 198 8.4.6 Session的...
8.4.1 Session的save()和persist()方法 191 8.4.2 Session的load()和get()方法 194 8.4.3 Session的update()方法 195 8.4.4 Session的saveOrUpdate()方法 197 8.4.5 Session的merge()方法 198 8.4.6 Session的...
8.4.1 Session的save()和persist()方法 8.4.2 Session的load()和get()方法 8.4.3 Session的update()方法 8.4.4 Session的saveOrUpdate()方法 8.4.5 Session的merge()方法 8.4.6 Session的delete()方法 ...
8.4.1 Session的save()和persist()方法 8.4.2 Session的load()和get()方法 8.4.3 Session的update()方法 8.4.4 Session的saveOrUpdate()方法 8.4.5 Session的merge()方法 8.4.6 Session的delete()方法 ...
8.4.1 Session的save()和persist()方法 8.4.2 Session的load()和get()方法 8.4.3 Session的update()方法 8.4.4 Session的saveOrUpdate()方法 8.4.5 Session的merge()方法 8.4.6 Session的delete()方法 ...
事实上针对单个对象的get/load/persist/save/update/merge/saveOrUpdate API和Criteria API本来就为一体,只不过是历史的原因被人为割裂成为两套数据库操作API罢了。 因此,对于关系型数据库而言——Entity和...