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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

hibernate mysql autocommit_Hibernate4 中为什么我没有用commit()方法直接用save就存到数据库了?...

發(fā)布時間:2024/7/23 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hibernate mysql autocommit_Hibernate4 中为什么我没有用commit()方法直接用save就存到数据库了?... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

求大神講解下

Hibernate4?中為什么我沒有用commit()方法直接用save就存到數(shù)據(jù)庫了?

public?class?Main?{

public?static?void?main(String[]?args)?{

SessionFactory?sessionFactory?=?new?Configuration().configure().buildSessionFactory();

Student?student?=?new?Student();

student.setAge(11);

student.setName(“save”);

student.setSex(“男”);

student.setAcademicYear(“99999”);

Session?session?=?sessionFactory.getCurrentSession();

Transaction?ts?=?session.beginTransaction();

session.save(student);

}

}

貌似明白了???只要打印出?sql語句就?執(zhí)行到數(shù)據(jù)庫了?

Hibernate:?insert?into?student?(_name,?_age,?_sex,?_academicYear,?_id)?values?(?,??,??,??,??)

我把student.hbm.xml??中的

改為

再測試??只save()不commit()就不會對數(shù)據(jù)庫?操作了

1分

不配置主鍵生成策略會報錯吧???

1分

大家頂起來了啊

一直理解只是主鍵生成策略,為了便于移植底層數(shù)據(jù)庫才用native的嗎?怎么會和事務(wù)有關(guān)系

需要測試下

不會報錯呀????我怎么在你留言上回復(fù)?

1分

你是getCurrentSession的話自動提交

但是你后面說的那種情況很奇怪,照理說和主鍵木有關(guān)系啊

等大神解釋

我測試下?getCurrentSession?改成openSession?試試??謝謝

public?static?void?main(String[]?args)?{

SessionFactory?sessionFactory?=?new?Configuration().configure().buildSessionFactory();

Student?student?=?new?Student();

student.setAge(11);

student.setName(“save”);

student.setSex(“男”);

student.setAcademicYear(“99999”);

//Session?session?=?sessionFactory.getCurrentSession();

Session?session?=?sessionFactory.openSession();

Transaction?ts?=?session.beginTransaction();

//Student?student2?=?(Student)session.load(Student.class,?1);

//System.out.println(student2.getName());

session.save(student);

//ts.commit();

}

貌似不行

_id??_name??_age??_sex??_academicYear

1???save????11????男???99999

還是有數(shù)據(jù)

1分

Hibernate都到4了,是該學(xué)習(xí)了

1分

我前幾天用4.1.8??session不是你這樣取的啊!

Session?session?=?HibernateUtil.getSessionFactory().getCurrentSession();

session.beginTransaction();

Event?theEvent?=?new?Event();

theEvent.setTitle(title);

theEvent.setDate(theDate);

session.save(theEvent);

session.getTransaction().commit();

4.1.8?final??文檔里就是上面的寫法啊

怎么在用戶的留言回復(fù)呀

1分

去試試了,

43分

你會結(jié)貼不呢?

原因是數(shù)據(jù)源conn默認(rèn)的提交方式,hibernate封裝的jdbc,因為jdbc默認(rèn)是的conn提交方式是true

這樣?就應(yīng)該不能提交了

public?static?void?main(String[]?args)?throws?Exception?{

SessionFactory?sf=HibernateSessionFactory.getSessionFactory();

Session?session=sf.openSession();

System.out.println(session.connection().getAutoCommit());

session.connection().setAutoCommit(false);

User?u=new?User();

u.setName("aaa");

session.save(u);

}

1分

hibernate4?好像變動很大、

要看你hibernate文件是如何配置事務(wù)的、

getCurrentSession();這樣獲取的session是就可以不用手動關(guān)閉了、

其實跟session有關(guān)、

我的猜測是?getCurrentSession()?獲取到了你配置的事務(wù)、

最后將數(shù)據(jù)庫flush到了數(shù)據(jù)庫中、

以上也都是個人猜測而已、沒有看hibernate4的源碼、只曉得hibernate4相比hibernate3變動挺大的

該結(jié)貼?了

總結(jié)下??測試的程序

SessionFactory?sessionFactory?=?HibernateUtil.getAnnotationSessionFactory();

Session?session?=?sessionFactory.getCurrentSession();

Transaction?ts?=?session.beginTransaction();

Husband?h1?=?new?Husband();

h1.setName(“w1”);

Wife?w1?=?new?Wife();

w1.setName(“l(fā)l”);

h1.setMyWife(w1);

session.save(w1);

session.save(h1);

//session.clear()?在這調(diào)用?clear()commit后數(shù)據(jù)庫有內(nèi)容說明save?自動提交了

w1.setName(“wwww”);

w1.setName(“qqq”);

//session.clear()?在這里調(diào)用clear()不會訪問數(shù)據(jù)庫?緩存清空了

try{

ts.commit();

}catch(Exception?e){

System.out.println(“回滾”);

ts.rollback();

}

還有?我用了Annotation后??只save()不commit()?數(shù)據(jù)庫里沒有內(nèi)容。用xml會有內(nèi)容??可能是???scottxzj?說的吧???我在試試結(jié)貼

session.connection()???在??4.1.8?中已廢除了??郁悶

失誤??沒有結(jié)貼?????測試?失敗!

try?{

System.out.println(session.connection().getAutoCommit());

session.connection().setAutoCommit(false);

}?catch?(HibernateException?e1)?{

e1.printStackTrace();

}?catch?(SQLException?e1)?{

e1.printStackTrace();

}

測試結(jié)果

false

Hibernate:

insert

into

Wife

(name)

values

(?)

Hibernate:

insert

into

Husband

(myWife_id,?name)

values

(?,??)

我想知道SSH中是怎么管理事物的

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的hibernate mysql autocommit_Hibernate4 中为什么我没有用commit()方法直接用save就存到数据库了?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。