日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate主键生成策略与save()方法是否发sql语句的研究

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate主键生成策略与save()方法是否发sql语句的研究 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
public class SessionFlushTest extends TestCase { ?
???? ?
??? /**
??? * 測試uuid主鍵生成策略
??? */ ?
??? public void testSave1() { ?
?????? Session session = null; ?
?????? Transaction tx = null; ?
?????? try { ?
??????? session = HibernateUtils.getSession(); ?
??????? tx = session.beginTransaction(); ?
???? ?
??????? User1 user = new User1(); ?
??????? user.setName("李四"); ?
??????? user.setPassword("123"); ?
??????? user.setCreateTime(new Date()); ?
??????? user.setExpireTime(new Date()); ?
??????? ?
??????? //因為user的主鍵生成側路采用的是uuid,所以調用完成save后,只是將user納入到了session的管理 ?
??????? //不會發出insert語句,但是id已經生成,session中existsInDatebase狀態為false ?
??????? session.save(user); ?
??????? ?
??????? //調用flush,hibernate會清理緩存,執行sql ?
??????? //如果數據庫的隔離級別設置為為提交讀,那么我們可以看到flush過的數據 ?
??????? //并且session中existsInDatebase狀態為true ?
??????? session.flush(); ?
??????? ?
??????? //提交事務 ?
??????? //默認情況下commit操作會先執行flush清理緩存,所以不用顯示的調用flush ?
??????? //commit后數據是無法回滾的 ?
??????? tx.commit(); ?
?????? }catch(Exception e) { ?
??????? e.printStackTrace(); ?
??????? tx.rollback(); ?
?????? }finally { ?
??????? HibernateUtils.closeSession(session); ?
?????? } ?
??? } ?
???? ?
??? /**
??? * 測試native主鍵生成策略
??? */ ?
??? public void testSave2() { ?
?????? Session session = null; ?
?????? Transaction tx = null; ?
?????? try { ?
??????? session = HibernateUtils.getSession(); ?
??????? tx = session.beginTransaction(); ?
???? ?
??????? User2 user = new User2(); ?
??????? user.setName("張三1"); ?
??????? user.setPassword("123"); ?
??????? user.setCreateTime(new Date()); ?
??????? user.setExpireTime(new Date()); ?
??????? ?
??????? //因為user的主鍵生成策略為native,所以調用session.save后,將執行insert語句,返回有數據庫生成的id ?
??????? //納入了session的管理,修改了session中existsInDatebase狀態為true ?
??????? //如果數據庫的隔離級別設置為為提交讀,那么我們可以看到save過的數據 ?
??????? session.save(user); ?
??????? tx.commit(); ?
?????? }catch(Exception e) { ?
??????? e.printStackTrace(); ?
??????? tx.rollback(); ?
?????? }finally { ?
??????? HibernateUtils.closeSession(session); ?
?????? } ?
??? }?

轉載于:https://www.cnblogs.com/hainange/archive/2012/03/16/6153653.html

總結

以上是生活随笔為你收集整理的Hibernate主键生成策略与save()方法是否发sql语句的研究的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。