-
session詳解:
查看全部 -
hibernate的執(zhí)行流程
查看全部 -
Hibernate單表操作CRUD實(shí)例
保存:session的save方法。
修改:session的update方法。
刪除:session的delete方法。
查詢:session的get/load方法(查詢單個(gè)記錄)。
session.get(類對(duì)象(Student.class),要查詢的主鍵(1))。
參數(shù)中提示的 Class arg0 表示要傳入 類對(duì)象 arg0 ,Class 表示的是類型是 Class,也就是 類類型。
get與load的區(qū)別
?1、 在不考慮緩存的情況下,get方法會(huì)在被調(diào)用之后立即向數(shù)據(jù)庫發(fā)出sql語句,并返回持久化對(duì)象,而load方法會(huì)在被調(diào)用之后返回一個(gè)代理對(duì)象,該代理對(duì)象只保存了實(shí)體對(duì)象的id(主鍵),直到真正使用對(duì)象的非主鍵屬性時(shí)才會(huì)發(fā)出sql語句。
?2、 如果要查詢的數(shù)據(jù)不存在,get方法返回null,load方法拋出異常org.hibernate.ObjectNotFoundException
查看全部 -
<component?name="address"?class="Address"> ???<property?name="postname"?column="POSTNAME"></property> ????<property?name="phone"?column="PHONE"></property> ????<property?name="address"?column="ADDRESS"></property> ?</component>
組件屬性:學(xué)生標(biāo)簽有一個(gè) address 屬性,address 是 類(class)Address 的實(shí)例對(duì)象,這個(gè)類有三個(gè)字段 postcode,phone。address。就把 address 這個(gè)屬性叫做組件屬性。
查看全部 -
CRUD 增刪改查
創(chuàng)建(Create)、更新(Update)、讀取(Retrieve)和刪除(Delete)
查看全部 -
openSession() 需要手動(dòng)關(guān)閉(session.close())不然一直消耗 connection 資源最后連接溢出
getCurrentSession() 每次提交事務(wù)后會(huì)自動(dòng)關(guān)閉 session,也就釋放了 connection 資源,每次連接的 connection 都是同一個(gè) connection 對(duì)象,connection 對(duì)象的 hashCode 相同
查看全部 -
Hibernate 對(duì)數(shù)據(jù)的操作都是封裝在 事務(wù) 中的,并且默認(rèn)是非自動(dòng)提交方式,所以用 session 保存對(duì)象時(shí),如果不開啟事務(wù),并且手工提交事務(wù),對(duì)象并不會(huì)真正保存在數(shù)據(jù)庫中。
開啟事務(wù)是通過 session.openTransaction() 實(shí)現(xiàn)的,事物的提交是 transaction.commit() 實(shí)現(xiàn)的?
查看全部 -
執(zhí)行 session 的某個(gè)方法時(shí),要先開啟一個(gè)事務(wù),也就是這些方法封裝在事務(wù)中,執(zhí)行完方法后,要先提交事務(wù),再關(guān)閉 session 。
session與connection,是多對(duì)一的關(guān)系,每個(gè)session都有一個(gè)與之對(duì)應(yīng)的connection,一個(gè)connection不同時(shí)刻可以供多個(gè)session使用
查看全部 -
通過Hibernate API編寫訪問數(shù)據(jù)庫的代碼
1.開啟事務(wù)
1 12345678910 //創(chuàng)建配置對(duì)象
?
Configuration?config?=?
new
?Configuration().configure();
?
//創(chuàng)建服務(wù)注冊(cè)對(duì)象
?
ServiceRegistry?serviceRegistry?=?
new
?ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
?
//創(chuàng)建會(huì)話工廠對(duì)象
?
sessionFactory?=?config.buildSessionFactory(serviceRegistry);
?
//會(huì)話對(duì)象
?
session?=?sessionFactory.openSession();
?
//開啟事務(wù)
?
transaction?=?session.beginTransaction();
2.執(zhí)行CRUD操作
12 Student?s?=?
new
?Student(
1
,
"張三豐"
,
"男"
,
new
?Date(),
"武當(dāng)山"
);????
session.save(s);
3.提交事務(wù),關(guān)閉相應(yīng)的資源
123 transaction.commit();
//提交事務(wù)????
session.close();
//關(guān)閉會(huì)話?????
sessionFactory.close();
//關(guān)閉會(huì)話工廠
查看全部 -
hibernate總結(jié)
查看全部 -
hjibernate單一主鍵
查看全部 -
Hibernate單表操作CRUD實(shí)例
保存:session的save方法。
修改:session的update方法。
刪除:session的delete方法。
查詢:session的get/load方法(查詢單個(gè)記錄)。
session.get(類對(duì)象(Student.class),要查詢的主鍵(1))。
session.load(類對(duì)象(Student.class),要查詢的主鍵(1))。
get和load的區(qū)別:
第一個(gè)區(qū)別:在不考慮緩存的情況下,get方法會(huì)在調(diào)用之后立即向數(shù)據(jù)庫發(fā)出sql語句(不管是否使用該對(duì)象,它都會(huì)立刻發(fā)出sql語句)。直到使用對(duì)象的非主鍵屬性時(shí)才會(huì)發(fā)出sql語句。
第二個(gè)區(qū)別:get方法會(huì)在調(diào)用之后立即返回持久化對(duì)象。load方法會(huì)在調(diào)用后返回一個(gè)代理對(duì)象,該代理對(duì)象只保存了實(shí)體對(duì)象的主鍵Id。
獲得類對(duì)象的名字:(反射機(jī)制)s.getClass().getName()。
第三個(gè)區(qū)別:查詢數(shù)據(jù)庫不存在的數(shù)據(jù)時(shí),get方法返回null,load方法拋出異常org.hibernate.ObjectNotFoundException。
查看全部 -
session沒有關(guān)閉
session關(guān)閉
查看全部 -
hibernate開發(fā)基本步驟
查看全部 -
get與load的區(qū)別
?1、 在不考慮緩存的情況下,get方法會(huì)在被調(diào)用之后立即向數(shù)據(jù)庫發(fā)出sql語句,并返回持久化對(duì)象,而load方法會(huì)在被調(diào)用之后返回一個(gè)代理對(duì)象,該代理對(duì)象只保存了實(shí)體對(duì)象的id(主鍵),直到真正使用對(duì)象的非主鍵屬性時(shí)才會(huì)發(fā)出sql語句。
?2、 如果要查詢的數(shù)據(jù)不存在,get方法返回null,load方法拋出異常org.hibernate.ObjectNotFoundException
查看全部
舉報(bào)