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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? java數據對象(jdo)的應用.txt

?? 含有許多JAVA的技巧!
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
Java數據對象(JDO)的應用 
(加入日期:2002-3-17 點擊數:1846)
【對此文發表評論】 【編程愛好者論壇】 【保存文章至硬盤】 【打印文章】 
 
  在本篇文章中,我們將詳細地討論Sun公司的Java數據對象(JDO)標準。JDO允許我們使用Java對象,支持事務和多用戶。與ODBC不同的是,它使我們無需考慮SQL和與數據庫有關的其他東西。它與串行化也有所區別,因為它支持多個用戶和事務。JDO允許Java開發人員將他們的數據模型用作數據模型,無需在“數據端”、“對象端”之間的轉移方面花費大量的時間。 
包括CocoBase、WebGain TOPLink和Castor JDO在內的多種產品都可以實現了JDO標準。既然有一種標準的方法,我們就可以只學習其中的一種,就象有了ODBC,我們就可以使用任何提供了驅動程序的數據庫那樣。 
在本篇文章中,我們將使用Prism技術公司的OpenFusion JDO。讀者在后面會發現,只有很小一部分代碼使用了PrismTech API,其他部分都使用了標準的JDO標準。 
創建Person對象 
我們將首先創建一個Person對象,該對象遵循了JavaBean的慣例,可以對其屬性執行get和set操作。需要注意的是,盡管我們是在創建這個類,但它并沒有什么特別的,它沒有繼承或實現任何基本類。對一個可保持類的要求是: 
1、所有域必須能夠被JDO類訪問(public或set*方法) 
2、域的數據類型必須符合JDO規格。 
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; 

// 允許我們使用構造器創建Person對象 
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; 
} 
} 
創建PersonPersist對象管理可保持性 
現在已經有了Person對象,我們需要創建一些代碼來管理這種可保持性。下面我們將詳細討論這些代碼,并學習如何: 
1、初始化JDO可保持性管理器。 
2、向數據庫中輸入三個人的資料。 
3、從數據庫中顯示人的資料。 
4、修改其中一個人的名字。 
5、從數據庫中刪除一個人的資料。 
6、在main()方法中進行相關的處理。 
第一步:初始化JDO可保持性管理器 
我們從OpenFusion實現中導入了標準的JDO類和ManagedConnectionFactory,當然了我們也可以將它們抽象成一個獨立的類。構造器使用javax.jdo.PersistenceManagerFactoryClass屬性設置連接代理,這一點與在JDBC中設置數據庫驅動程序的屬性很相似。 
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; 

// 需要保持的人的數組 
private Person[] people; 
// 現有對象標識符的向量 
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()的靜態方法中創建的,該代理需要JDBC URL、JDBC驅動程序、用戶名和口令。 
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; 
} 


第二步:在數據庫中輸入三個人的資料 

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

// 創建3個人的資料 
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個人的資料 
pm = pmf.getPersistenceManager(); 
transaction = pm.currentTransaction(); 
pm.makePersistentAll(people); 
transaction.commit(); 

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

// 關閉現有的保持性管理器,保證對象是從數據庫而不是從保持性管理器的緩存中讀取的 
pm.close(); 
} 
下面是一些可以針對保持性管理器的其他方法: 
使實例成為可保持的:獲得一個臨時對象,并保持它。 
刪除可保持實例:從數據存儲庫中刪除信息。 
使實例臨時化:使實例與可保持性管理器分離,而不刪除在數據存儲庫中的信息。 
使實例處于保持狀態 刪除保持的實例 使實例處于臨時狀態 
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) 
(這里是一個4X3的表格,可以參閱原稿中的英文表格) 

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

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩区在线观看| 奇米影视一区二区三区| 性做久久久久久久免费看| 国模冰冰炮一区二区| 91黄色免费网站| 国产色一区二区| 午夜精品福利视频网站| 9色porny自拍视频一区二区| 日韩午夜激情av| 亚洲一本大道在线| 成人av综合一区| 欧美大片一区二区| 无码av免费一区二区三区试看| av一区二区三区黑人| 精品久久久久久久人人人人传媒| 亚洲一区二区三区视频在线播放| a级精品国产片在线观看| 久久久久久黄色| 精品亚洲欧美一区| 欧美日韩大陆在线| 亚洲丶国产丶欧美一区二区三区| av一区二区久久| 国产精品成人一区二区三区夜夜夜| 激情小说亚洲一区| 欧美精品aⅴ在线视频| 一区二区免费在线| 在线免费一区三区| 亚洲人成网站影音先锋播放| 成人av资源网站| 亚洲国产高清在线| 丰满岳乱妇一区二区三区| 91小宝寻花一区二区三区| 国产美女av一区二区三区| 国产精品麻豆99久久久久久| 国内欧美视频一区二区 | 欧美日韩精品专区| 亚洲综合视频网| 欧美综合视频在线观看| 亚洲一区在线电影| 欧美日本一道本| 蜜桃视频在线一区| 久久久美女毛片| 成人精品gif动图一区| 亚洲欧洲日本在线| 91福利视频网站| 天堂精品中文字幕在线| 欧美一级片在线看| 精品一区二区在线播放| 日本一区二区免费在线| 欧美日韩你懂得| 奇米精品一区二区三区在线观看一| 欧美一区三区四区| 国产在线视频一区二区三区| 国产日韩精品视频一区| av在线播放不卡| 亚洲h精品动漫在线观看| 日韩视频免费观看高清完整版| 蜜乳av一区二区| 亚洲国产精品v| 在线精品国精品国产尤物884a| 丝袜亚洲另类丝袜在线| 精品成人一区二区三区| 成人一二三区视频| 亚洲大片在线观看| 精品国产污污免费网站入口| 97成人超碰视| 免费在线观看精品| 中文字幕一区二区三区色视频| 欧美亚洲综合色| 国内精品久久久久影院薰衣草 | 3d动漫精品啪啪| 国产成人8x视频一区二区| 一区二区三区不卡在线观看| 精品欧美一区二区久久| 色综合久久久久网| 国产乱人伦偷精品视频不卡 | 在线免费一区三区| 国精产品一区一区三区mba桃花 | 国产亚洲精久久久久久| 色伊人久久综合中文字幕| 国模冰冰炮一区二区| 亚洲aaa精品| 中文字幕一区二| 欧美www视频| 欧美日本一区二区在线观看| av不卡免费电影| 国产一区二区三区免费观看| 午夜在线成人av| 亚洲天堂av一区| 久久久精品黄色| 欧美一卡二卡三卡四卡| 色老头久久综合| 国产成人免费视频一区| 免费在线看成人av| 性久久久久久久| 亚洲激情在线激情| 国产精品久久久久久久裸模| www国产精品av| 678五月天丁香亚洲综合网| 色美美综合视频| a级精品国产片在线观看| 国产一区二区影院| 日本午夜精品视频在线观看| 亚洲一线二线三线久久久| 亚洲欧美视频在线观看视频| 国产精品日日摸夜夜摸av| 欧美韩国日本不卡| 日本一二三四高清不卡| 久久久综合视频| 久久精品一区四区| 国产日韩欧美a| 亚洲国产精品传媒在线观看| 欧美激情艳妇裸体舞| 国产午夜精品一区二区三区嫩草 | 欧美色倩网站大全免费| 一本色道亚洲精品aⅴ| 91碰在线视频| 色婷婷精品久久二区二区蜜臂av| 色综合咪咪久久| 在线视频一区二区三区| 欧美三区免费完整视频在线观看| 91成人在线精品| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 色综合久久综合网97色综合| 在线看日韩精品电影| 欧美中文字幕一区| 欧美日韩免费高清一区色橹橹| 精品视频一区二区不卡| 国产精品另类一区| 综合中文字幕亚洲| 亚洲最大成人综合| 日韩av网站免费在线| 国产毛片精品国产一区二区三区| 国内成人精品2018免费看| 成人黄页毛片网站| 欧洲在线/亚洲| 欧美videos大乳护士334| 欧美极品xxx| 亚洲综合在线五月| 日本欧美大码aⅴ在线播放| 蜜桃91丨九色丨蝌蚪91桃色| 成人黄页在线观看| 欧美嫩在线观看| 久久久综合精品| 亚洲免费伊人电影| 美腿丝袜亚洲色图| 成人伦理片在线| 制服丝袜日韩国产| 中文字幕不卡在线观看| 亚洲一区二区三区激情| 国产自产2019最新不卡| 菠萝蜜视频在线观看一区| 欧美二区乱c少妇| 国产丝袜在线精品| 五月婷婷久久综合| av一本久道久久综合久久鬼色| 欧美日韩视频第一区| 国产精品网站在线播放| 午夜精品久久久久影视| 成人开心网精品视频| 欧美一区二区高清| 一区二区免费看| 激情欧美一区二区三区在线观看| 一本到不卡精品视频在线观看| 日韩欧美一二三区| 一区二区高清在线| 高潮精品一区videoshd| 91.com在线观看| 亚洲天堂成人网| 国产91精品入口| 欧美va亚洲va香蕉在线| 洋洋av久久久久久久一区| 成人黄色国产精品网站大全在线免费观看| 在线成人小视频| 一区二区在线免费观看| k8久久久一区二区三区 | 678五月天丁香亚洲综合网| 中文字幕日韩欧美一区二区三区| 免费在线观看一区二区三区| 欧美性生活久久| 亚洲婷婷综合色高清在线| 国产酒店精品激情| 精品久久五月天| 免费日韩伦理电影| 6080午夜不卡| 午夜影院在线观看欧美| 欧美性生活大片视频| 亚洲精品视频免费观看| 91小视频免费观看| 成人欧美一区二区三区黑人麻豆 | 中文字幕一区二区三中文字幕| 麻豆91在线播放| 欧美一区永久视频免费观看| 香蕉久久夜色精品国产使用方法 | 不卡视频在线看| 国产农村妇女精品| 国产成人日日夜夜| 国产精品免费久久久久| 成人午夜av在线| 中文字幕中文在线不卡住|