首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate——关于save跟persist

2012-09-18 
Hibernate——关于save和persist?@Testpublic void testSave(){DomesticCat cat new DomesticCat()cat.se

Hibernate——关于save和persist

?

@Test    public void testSave(){        DomesticCat cat = new DomesticCat();        cat.setId(101);        cat.setName("Hello kitty");        cat.setSex('M');        cat.setBirthday(new Date());        Transaction tx = session.beginTransaction();        session.save(cat);        System.out.println(cat.getId());        tx.commit();    }        @Test    public void testPersist(){        DomesticCat cat = new DomesticCat();        cat.setId(100);        cat.setName("Jscis");        cat.setSex('F');        cat.setBirthday(new Date());        Transaction tx = session.beginTransaction();        session.persist(cat);        System.out.println(cat.getId());        tx.commit();    }

1.?如上的测试代码,其实id是数据库自动生成的,使用save方法保存时,id并不是程序中设置的值,而是数据库自动生成的。而persist方法则认为要保存的是Detached状态的对象,会抛出异常PersistentObjectException

?

2.save方法保证马上返回标识符,而persist方法并不保证,但是在测试中persist好像也是马上返回标识符的,可能是我不知道如何测试,还望高手指教

?

3.当代码中去掉Transaction tx = session.beginTransaction();和tx.commit();时,persist不会执行insert语句,而save会执行。

热点排行