新聞中心
1.關(guān)系數(shù)據(jù)庫(kù)按主鍵區(qū)分不同記錄。

創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供長(zhǎng)寧企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為長(zhǎng)寧眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
- create table CUSTOMERS (ID int promary key not null, NAME varchar(15));
- insert into CUSTOMERS values(1, 'Tom');
- insert into CUSTOMERS values(3, 'Tom');
2.Java語(yǔ)言按內(nèi)存地址區(qū)別不同的對(duì)象。
- Customer c1 = new Customer("Tom");
- Customer c2 = new Customer("Tome");
- Customer c3 = c1;
- // c1 == c3 結(jié)果為true
- // c1 == c2 結(jié)果為false
3.Hibernate用對(duì)象標(biāo)識(shí)符(OID)來(lái)區(qū)分不同對(duì)象。
- Customer c1 = (Customer)session.load(Customer.class, new Long(1));
- Customer c2 = (Customer)session.load(Customer.class, new Long(1));
- Customer c3 = (Customer)session.load(Customer.class, new Long(3));
- // c1 == c2 結(jié)果為true
- // c1 == c3 結(jié)果為false
以上程序中,三次調(diào)用了Session的load()方法,分別加載OID為1或3的Customer對(duì)象。以下是Hibernate三次加載Customer對(duì)象的流程。
(1)第一次加載OID為1的Customer對(duì)象時(shí),先從數(shù)據(jù)庫(kù)的CUSTOMERS表中查詢(xún)ID為1的記錄,再創(chuàng)建相應(yīng)的Customer實(shí)例,把它保存在Session緩存中,最后把這個(gè)對(duì)象的引用賦值給變量c1。
(2)第二次加載OID為1的Customer對(duì)象時(shí),直接把緩存中OID為1的Customer對(duì)象的引用賦值給c2,因?yàn)閏1和c2引用同一個(gè)Customer對(duì)象。
(3)當(dāng)加載OID為3的Customer對(duì)象時(shí),由于在緩存中不存在這樣的對(duì)象,所以必須再次到數(shù)據(jù)庫(kù)中查詢(xún)OID為3的記錄,再創(chuàng)建相應(yīng)的Customer實(shí)例,把它保存存在Session緩存中,最后把這個(gè)對(duì)象的引用賦值給變量c3。
本文標(biāo)題:Hibernate區(qū)分不同對(duì)象的方法
文章源于:http://fisionsoft.com.cn/article/coheccp.html


咨詢(xún)
建站咨詢(xún)
