亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? java數(shù)據(jù)對(duì)象(jdo)的應(yīng)用.txt

?? 含有許多JAVA的技巧!
?? TXT
?? 第 1 頁 / 共 2 頁
字號(hào):
Java數(shù)據(jù)對(duì)象(JDO)的應(yīng)用 
(加入日期:2002-3-17 點(diǎn)擊數(shù):1846)
【對(duì)此文發(fā)表評(píng)論】 【編程愛好者論壇】 【保存文章至硬盤】 【打印文章】 
 
  在本篇文章中,我們將詳細(xì)地討論Sun公司的Java數(shù)據(jù)對(duì)象(JDO)標(biāo)準(zhǔn)。JDO允許我們使用Java對(duì)象,支持事務(wù)和多用戶。與ODBC不同的是,它使我們無需考慮SQL和與數(shù)據(jù)庫有關(guān)的其他東西。它與串行化也有所區(qū)別,因?yàn)樗С侄鄠€(gè)用戶和事務(wù)。JDO允許Java開發(fā)人員將他們的數(shù)據(jù)模型用作數(shù)據(jù)模型,無需在“數(shù)據(jù)端”、“對(duì)象端”之間的轉(zhuǎn)移方面花費(fèi)大量的時(shí)間。 
包括CocoBase、WebGain TOPLink和Castor JDO在內(nèi)的多種產(chǎn)品都可以實(shí)現(xiàn)了JDO標(biāo)準(zhǔn)。既然有一種標(biāo)準(zhǔn)的方法,我們就可以只學(xué)習(xí)其中的一種,就象有了ODBC,我們就可以使用任何提供了驅(qū)動(dòng)程序的數(shù)據(jù)庫那樣。 
在本篇文章中,我們將使用Prism技術(shù)公司的OpenFusion JDO。讀者在后面會(huì)發(fā)現(xiàn),只有很小一部分代碼使用了PrismTech API,其他部分都使用了標(biāo)準(zhǔn)的JDO標(biāo)準(zhǔn)。 
創(chuàng)建Person對(duì)象 
我們將首先創(chuàng)建一個(gè)Person對(duì)象,該對(duì)象遵循了JavaBean的慣例,可以對(duì)其屬性執(zhí)行g(shù)et和set操作。需要注意的是,盡管我們是在創(chuàng)建這個(gè)類,但它并沒有什么特別的,它沒有繼承或?qū)崿F(xiàn)任何基本類。對(duì)一個(gè)可保持類的要求是: 
1、所有域必須能夠被JDO類訪問(public或set*方法) 
2、域的數(shù)據(jù)類型必須符合JDO規(guī)格。 
3、不能支持一些類型的字段(例如Thread、File、Socket等不能串行化的字段)。 
下面是符合上述要求的Person.java: 

public class Person { 
private String name; 
private String address; 
private String ssn; 
private String email; 
private String homePhone; 
private String workPhone; 

// 允許我們使用構(gòu)造器創(chuàng)建Person對(duì)象 
public Person(String name, String address, String ssn, 
String email, String homePhone, String workPhone) { 
this.name = name; 
this.address = address; 
this.ssn = ssn; 
this.email = email; 
this.homePhone = homePhone; 
this.workPhone = workPhone; 
} 


// 方法 
public String getName() { return name; } 

public String getAddress() { return address; } 

public String getSsn() { return ssn; } 

public String getEmail() { return email; } 

public String getHomePhone() { return homePhone; } 

public String getWorkPhone() { return workPhone; } 

public void setName(String name) { this.name = name; } 

public void setAddress(String address) { 
this.address = address; 
} 

public void setSsn(String ssn) { this.ssn = ssn; } 

public void setEmail(String email) { this.email = email; } 

public void setHomePhone(String homePhone) { 
this.homePhone = homePhone; 
} 
public void setWorkPhone(String workPhone) { 
this.workPhone = workPhone; 
} 
} 
創(chuàng)建PersonPersist對(duì)象管理可保持性 
現(xiàn)在已經(jīng)有了Person對(duì)象,我們需要?jiǎng)?chuàng)建一些代碼來管理這種可保持性。下面我們將詳細(xì)討論這些代碼,并學(xué)習(xí)如何: 
1、初始化JDO可保持性管理器。 
2、向數(shù)據(jù)庫中輸入三個(gè)人的資料。 
3、從數(shù)據(jù)庫中顯示人的資料。 
4、修改其中一個(gè)人的名字。 
5、從數(shù)據(jù)庫中刪除一個(gè)人的資料。 
6、在main()方法中進(jìn)行相關(guān)的處理。 
第一步:初始化JDO可保持性管理器 
我們從OpenFusion實(shí)現(xiàn)中導(dǎo)入了標(biāo)準(zhǔn)的JDO類和ManagedConnectionFactory,當(dāng)然了我們也可以將它們抽象成一個(gè)獨(dú)立的類。構(gòu)造器使用javax.jdo.PersistenceManagerFactoryClass屬性設(shè)置連接代理,這一點(diǎn)與在JDBC中設(shè)置數(shù)據(jù)庫驅(qū)動(dòng)程序的屬性很相似。 
package addressbook; 

import java.util.*; 
import javax.jdo.*; 

import 
com.prismt.j2ee.connector.jdbc.ManagedConnectionFactoryImpl; 

public class PersonPersist 
{ 
private final static int SIZE = 3; 
private PersistenceManagerFactory pmf = null; 
private PersistenceManager pm = null; 
private Transaction transaction = null; 

// 需要保持的人的數(shù)組 
private Person[] people; 
// 現(xiàn)有對(duì)象標(biāo)識(shí)符的向量 
private Vector id = new Vector(SIZE); 

public PersonPersist() { 
try { 
Properties props = new Properties(); 

props.setProperty("javax.jdo.PersistenceManagerFactoryClass", 
"com.prismt.j2ee.jdo.PersistenceManagerFactoryImpl"); 
pmf = JDOHelper.getPersistenceManagerFactory(props); 
pmf.setConnectionFactory( createConnectionFactory() ); 
} catch(Exception ex) { 
ex.printStackTrace(); 
System.exit(1); 
} 
} 
連接代理是在名字為createConnectionFactory()的靜態(tài)方法中創(chuàng)建的,該代理需要JDBC URL、JDBC驅(qū)動(dòng)程序、用戶名和口令。 
public static Object createConnectionFactory() { 
ManagedConnectionFactoryImpl mcfi = new 
ManagedConnectionFactoryImpl(); 
Object connectionFactory = null; 

try { 
mcfi.setUserName("scott"); 
mcfi.setPassword("tiger"); 
mcfi.setConnectionURL( 
"jdbc:oracle:thin:@localhost:1521:thedb"); 

mcfi.setDBDriver("oracle.jdbc.driver.OracleDriver"); 

connectionFactory = mcfi.createConnectionFactory(); 
} catch(Exception e) { 
e.printStackTrace(); 
System.exit(1); 
} 
return connectionFactory; 
} 


第二步:在數(shù)據(jù)庫中輸入三個(gè)人的資料 

PersistPeople()使用Person.java文件中的構(gòu)造器創(chuàng)建了3個(gè)人的資料。。我們要作的第一件事是通過 
getPersistenceManager()獲得一個(gè)可保持性管理器,然后創(chuàng)建一個(gè)執(zhí)行我們的任務(wù)的事務(wù)。為了保持這一對(duì)象結(jié)構(gòu)圖,我們簡單地調(diào)用makePersistentAll( Object[] )方法即可。代碼底部的for()循環(huán)獲得每個(gè)保持對(duì)象的唯一的ID,并保存起來供以后使用。 
public void persistPeople() { 
// 創(chuàng)建人的資料的數(shù)組 
people = new Person[SIZE]; 

// 創(chuàng)建3個(gè)人的資料 
people[0] = new Person("Gary Segal", "123 Foobar Lane", 
"123-123-1234", "gary@segal.com", 
"(608) 294-0192", "(608) 029-4059"); 
people[1] = new Person("Michael Owen", 
"222 Bazza Lane, Liverpool, MN", 
"111-222-3333", "michael@owen.com", 
"(720) 111-2222", "(303) 222-3333"); 
people[2] = new Person("Roy Keane", 
"222 Trafford Ave, Manchester, MN", 
"234-235-3830", "roy@keane.com", 
"(720) 940-9049", "(303) 309-7599)"); 

// 保持這3個(gè)人的資料 
pm = pmf.getPersistenceManager(); 
transaction = pm.currentTransaction(); 
pm.makePersistentAll(people); 
transaction.commit(); 

// 獲取被保持對(duì)象的對(duì)象ID 
for(int i = 0; i < people.length; i++) { 
id.add(pm.getObjectId(people[i])); 
} 

// 關(guān)閉現(xiàn)有的保持性管理器,保證對(duì)象是從數(shù)據(jù)庫而不是從保持性管理器的緩存中讀取的 
pm.close(); 
} 
下面是一些可以針對(duì)保持性管理器的其他方法: 
使實(shí)例成為可保持的:獲得一個(gè)臨時(shí)對(duì)象,并保持它。 
刪除可保持實(shí)例:從數(shù)據(jù)存儲(chǔ)庫中刪除信息。 
使實(shí)例臨時(shí)化:使實(shí)例與可保持性管理器分離,而不刪除在數(shù)據(jù)存儲(chǔ)庫中的信息。 
使實(shí)例處于保持狀態(tài) 刪除保持的實(shí)例 使實(shí)例處于臨時(shí)狀態(tài) 
makePersistent(Object o) deletePersistent(Object o) makeTransient(Object o) 
makePersistentAll(Object[] os) deletePersistentAll(Object[] os) makeTransientAll(Object[] os) 
makePersistentAll(Collection os) deletePersistentAll(Collection os) makeTransientAll(Collection os) 
(這里是一個(gè)4X3的表格,可以參閱原稿中的英文表格) 

第三步:顯示數(shù)據(jù)庫中人的信息 
顯示信息代碼以獲得可保持性管理器開始。我們使用上面代碼中用persistPeople()方法保存的對(duì)象ID獲得對(duì)象,調(diào)用對(duì)象的方法━━在本例中是gets,來得到我們輸入的信息。我們可以發(fā)現(xiàn),要保持我們的對(duì)象,并不需要編寫大量的代碼。 
public void display(int end) { 
Person person; 
int max = end <= SIZE ? end : SIZE; 

// 獲得一個(gè)新的可保持性管理器 
pm = pmf.getPersistenceManager(); 
// 從數(shù)據(jù)庫中獲取對(duì)象并進(jìn)行顯示 
for(int i = 0; i < max; i++) { 
person = (Person) pm.getObjectById(id.elementAt(i), 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品视频999| 蜜臀av性久久久久蜜臀aⅴ| 国产精品美女久久福利网站| 亚洲品质自拍视频网站| 日韩国产精品久久久| 国产一区久久久| 蜜臀久久99精品久久久久久9| 国产成人午夜精品5599| 色女孩综合影院| av高清久久久| 91精品国产丝袜白色高跟鞋| 久久色视频免费观看| 玉足女爽爽91| 国产成人精品免费| 自拍偷在线精品自拍偷无码专区 | 久久电影网电视剧免费观看| 99精品国产视频| 久久久精品国产免大香伊| 亚洲电影激情视频网站| 国产精品性做久久久久久| 91精品视频网| 亚洲国产成人va在线观看天堂| 91在线观看视频| 国产精品第13页| 成人精品鲁一区一区二区| 91精彩视频在线| 麻豆精品视频在线观看| 国产精品激情偷乱一区二区∴| 欧美精品免费视频| 日韩电影在线一区二区三区| 久久综合成人精品亚洲另类欧美| 99精品国产一区二区三区不卡| 日韩成人精品在线| 国产精品久久久久久久久免费丝袜 | 在线观看91视频| 一个色在线综合| 91美女福利视频| 久久99最新地址| 一区二区三区不卡在线观看| 精品国产免费人成电影在线观看四季| 日韩福利视频网| 中文字幕一区二区三区在线观看| 99久久综合99久久综合网站| 五月综合激情网| 日韩视频免费观看高清完整版| 偷拍日韩校园综合在线| 国产精品毛片大码女人| 欧美成人高清电影在线| 国产麻豆视频精品| 午夜视频在线观看一区二区三区| 国产精品三级久久久久三级| 欧美一区二区三区成人| 在线亚洲高清视频| 成人精品小蝌蚪| 国产精品亚洲综合一区在线观看| 午夜日韩在线电影| 亚洲丰满少妇videoshd| 亚洲情趣在线观看| 国产精品久久久一区麻豆最新章节| 精品国产人成亚洲区| 91精品久久久久久蜜臀| 欧美日本视频在线| 国产主播一区二区| 成人欧美一区二区三区在线播放| 欧美哺乳videos| 日韩精品专区在线| 99这里只有精品| 国产成人精品免费视频网站| 国产精品自在欧美一区| 国内成人自拍视频| 久久99国产精品久久99果冻传媒| 国产精品久久久久久久久晋中 | 在线成人午夜影院| 欧美日韩精品综合在线| 在线观看日韩精品| 欧美三片在线视频观看| 欧美三级在线播放| 欧美日韩精品三区| 欧美高清视频在线高清观看mv色露露十八 | 中文字幕亚洲欧美在线不卡| 国产欧美一区二区三区网站| 欧美激情中文字幕一区二区| 国产成都精品91一区二区三| 亚洲一二三四久久| 久久综合资源网| 久久精品一区蜜桃臀影院| 欧美无乱码久久久免费午夜一区| 国内外精品视频| 国内精品免费在线观看| 国产91精品欧美| 色综合色综合色综合色综合色综合 | 玖玖九九国产精品| 国产在线国偷精品免费看| 久久99久国产精品黄毛片色诱| 国产一区二区三区高清播放| 丁香另类激情小说| 色哟哟在线观看一区二区三区| 欧美写真视频网站| 日韩免费高清av| 国产亚洲一区二区三区| 1000精品久久久久久久久| 一区二区三区在线观看网站| 首页国产欧美久久| 亚洲视频香蕉人妖| 亚洲超碰精品一区二区| 麻豆久久久久久| 成人开心网精品视频| 日本韩国一区二区三区| 日韩欧美成人激情| 国产精品久久午夜| 日本va欧美va瓶| 午夜在线成人av| 麻豆国产精品官网| 99免费精品在线| 日韩一区二区三| 国产精品美女久久久久av爽李琼 | 亚洲欧美综合色| 亚洲超碰97人人做人人爱| 国产精品一区在线| 色天使久久综合网天天| 欧美大度的电影原声| 亚洲同性gay激情无套| 日韩 欧美一区二区三区| 丁香婷婷深情五月亚洲| 欧美日韩国产美| 国产精品区一区二区三区| 热久久免费视频| 欧美专区在线观看一区| 国产视频在线观看一区二区三区 | 亚洲欧洲日韩综合一区二区| 日本不卡的三区四区五区| 成人教育av在线| 欧美tickling网站挠脚心| 一区二区三区日本| 大胆亚洲人体视频| 日韩精品一区二区三区四区| 亚洲国产欧美另类丝袜| 成人av在线资源网| 26uuu国产日韩综合| 日本成人在线看| 在线亚洲+欧美+日本专区| 国产精品久久久久久久久动漫 | 欧美久久高跟鞋激| 亚洲欧洲国产日本综合| 国产伦精品一区二区三区免费| 欧美日韩在线观看一区二区| 1024国产精品| 成人av影院在线| 久久久午夜精品理论片中文字幕| 日日夜夜精品免费视频| 97久久精品人人做人人爽| 国产亚洲制服色| 国产精品888| 久久久久久影视| 国产乱码一区二区三区| 日韩三区在线观看| 日韩中文字幕区一区有砖一区 | 一区二区三区产品免费精品久久75| 成人永久免费视频| 国产亚洲视频系列| 国产成人综合亚洲91猫咪| 精品国产1区二区| 国产一区二区三区四区五区美女 | 欧美国产禁国产网站cc| 国产精品一区二区不卡| 久久精品免费在线观看| 国产99一区视频免费| 国产蜜臀97一区二区三区| 成人h精品动漫一区二区三区| 一区在线播放视频| 91久久人澡人人添人人爽欧美 | 午夜精品久久久久久不卡8050| 在线观看国产一区二区| 亚洲一区二区在线免费观看视频| 欧美亚洲图片小说| 水蜜桃久久夜色精品一区的特点| 91精品一区二区三区在线观看| 日本sm残虐另类| 久久久精品免费观看| 国产传媒欧美日韩成人| 中文字幕在线播放不卡一区| 91麻豆高清视频| 亚洲午夜av在线| 欧美变态tickling挠脚心| 国产成人在线视频免费播放| 中文字幕一区二区三区av| 在线看日韩精品电影| 日韩激情中文字幕| 精品国产91乱码一区二区三区 | 午夜精品福利久久久| 精品久久久久av影院| 成人妖精视频yjsp地址| 亚洲女与黑人做爰| 91麻豆精品国产无毒不卡在线观看| 激情综合网最新| 亚洲免费视频中文字幕| 91麻豆精品国产91久久久久久 | 欧美成人高清电影在线| 国产精品资源在线看| 亚洲嫩草精品久久|