在撰寫 Java商務應用程式時,常會聽到 PO、VO、POJO... 一推有「O」的名稱,對於初學者來講是非常頭痛的,下面試著簡單說明常聽到的各種「O名稱」。


PO(Persistant Object)
一個 PO 即資料庫裡的一筆記錄。
好處是可以把一筆記錄當作一個物件處理,可以方便的轉換成其他物件。


BO(Business Object)
主要作用是把業務邏輯封裝為一個物件。這個物件可以包括一個或多個其他的物件。
比如一個簡歷,有教育經歷、工作經歷等等
我們可以把教育經歷對應一個PO,工作經歷對應一個PO。
建立一個對應簡歷的BO物件處理簡歷,每個BO包含這些PO。
這樣處理業務邏輯時,我們就可以針對BO去處理。


VO(Value Object)
ViewObject表現層物件
主要對應介面顯示的資料物件。對於一個WEB頁面,或者SWT、SWING的一個介面,用一個VO物件對應整個介面的值。

Entity 與 VO:
Entity 帶有 Identity,VO 沒有帶 Identity,也就是說 Entity 只有異動了 Identity 才算是不同物件,但 VO 只要有屬性被變更了,就視為是不同物件


DTO(Data Transfer Object)
主要用於遠端調用等需要大量傳輸物件的地方。
比如我們一張表有100個欄位,那麼對應的PO就有100個屬性。
但是我們介面上只要顯示10個欄位,用戶端用WEB service來獲取資料,不需要將整個PO物件傳遞到用戶端,
此時即可以用只有10個屬性的DTO來傳遞結果到用戶端,如此亦不會暴露服務端表結構。到達用戶端以後,如果用這個物件來對應介面顯示,那此時它的身份就轉為VO


POJO(Plain Old Java Object or Plain Ordinary Java Object)
只有屬性及getter、setter 的 Java Object
一個POJO持久化以後就是PO
直接用它傳遞、傳遞過程中就是DTO
直接用來對應表示層就是VO


DAO(Data Access Object)
主要用來封裝對資料庫的訪問。通過它可以把POJO持久化為PO,用PO組裝出來VO、DTO



一般而言安裝 Eclipse Plugin 最快的方式是透過 Update Site ,也就是先找到要安裝的Plugin所提供的Update Site Url來安裝。

安裝步驟一般為:執行 Eclipse 後,按上方選單的「Help」然後選擇「Install New Software」

之後看到下方的視窗,再按「Add」:

按了「Add」後會出現下方的 Add Repository 視窗,然後在 Name 輸入 Plugin 名稱(可隨便 Key,但建議是輸入有意義的Name),然後在 Location 輸入 Update Site 的 Url。輸入完畢後按「OK」

待出現下方的選項後,代表 Update Site 的 Url 是正確的,然後選擇要安裝的 Plugin ,下面範例安裝的是「FreeMarker IDE」及「Hibernate Tools」。

上方按下「Next」原則上即會開始安裝 Plugin ,有時候可能會出現 License 的確認視窗,大多狀況只需要按接受 (I Accept)即可。

Java將Exception分成二大部份,一種為「Checked Excepiton」,也就是編譯時會提醒您需要加以處理的Exception,例如以下二行程式,

Class.forName(driver); Connection conn = DriverManager.getConnection(connString,account,password );

其中第一行編譯時或開發工具時(如Escape)會提醒「Unhandled exception type ClassNotFoundException」,第二行則會提醒「 Unhandled exception type SQLException」。只要是這類型的,一般都稱為 Checked Exception 。所以Checked Exception 的特點即有問題要額外處理或則往上層拋例外(throws Exception)。


另一種 Exception 則稱為「Runtime Exception」,顧名思義即在執行週期時才會發生的 Exception,常見的 Runtime Exception 為 NullPointerException。Runtime Excepiton 的特點與 Checked Exception 剛好相反,不需在開發週期強制放 try-catch 區段或則往上層拋例外(throws Exception)。

在撰寫 Java 程式時,遇到 java.lang.OutOfMemoryError Heap Memroy爆掉時,如果要額外作一些處理,可以透過以下二種方法

方法一:
try{ //new test().run(); // 會產生outofmemory的 code throw new java.lang.OutOfMemoryError(); }catch ( final OutOfMemoryError e ){ System.out.println("Exceptin 攔截成功了!!"); }
方法二
try{ //new test().run(); // 會產生outofmemory的 code throw new java.lang.OutOfMemoryError(); }catch(Exception ex){ System.out.println("這段 code 會被執行嗎?"); }finally { System.out.println("執行 finally"); }

方法一可以將 Exception 整個攔截下來,並且程式會繼續執行。但是要留意事,如果記憶體沒有正常被釋放,則很快的程式還是會因為 Heap 不足再度爆掉。

方法二裡的 catch 區段程式並不會被執行,而會直接執行 finally 裡的 code ,並且會再往上層拋 java.lang.OutOfMemoryError 的 Exception

一般而言,如果是 Java AP 如果在預知 Memory 會爆掉的地方給予適當的處理,處理方法如發信、寫 Log 或則丟訊息給 User ,這對於使用者而言應該是比較人性化的^^。至於要使用那一種的方式來處理端看需求而定。

UltraEdit 列印時,如果要列印行號只需照下面方法設定即可。

一、設定顯示「行數」
選上方主選單:
「檢視」=>「顯示行號」
「View」=>「Display Line Number」

二、列印設定
選上方主選單:
「檔案」=>「列印設定(組態)」=>「頁面設定」=>「列印行號」 打勾
「File」=>「Print Setup/Configuration」=>「Page Setup」=>「Print Line Numbers」打勾
FireFox 擁有非常多的Plugin,這些 Plugin 可以讓 FireFox 變成網頁程式開發人員的好幫手。
以下就來看看我常用的 FireFox Plugin。

要安裝 Plugin ,可以從 FireFox 的上方選單選擇「工具」=>「附加元件」=>「取得元件」=>「瀏覽所有附加元件」,然後會進到Plugin的下載頁面,當然也可以直接在瀏覽器列輸入「https://addons.mozilla.org/」。


(1)Firebug
Firebug 是 FireFox 裡好用的開發工具,可以透過此Plugin快速的針對 JavaScript、Html、CSS 作偵錯或調校。

(2)Firecookie
Firecookie 是 Firebug 的延伸工具。Firebug 本身沒有 cookie 工具,無法直接看到目前頁面的 Cookie 狀態,透過 Firecooki 即可以看到。並且可以透過 Firecookie 作 Cookie 內容的編輯

(3)HttpFox
Firefox 裡的一個簡單 Http Analyzer 工具,有點類似簡易版的 Http Watch

(4)View Dependencies
查看目前頁面裡的物件與網頁原始碼的直接關聯

(5)StatusbarEx
一些有用的信息顯示狀態欄的Firefox,如內存使用的系統與 Firefox自身,網絡速度,系統電源狀態等
可以用來看目前瀏覽器占用多少的系統資源或內存,一般而言,都只打開「顯示firefox的內存占用、顯示 firefox的CPU占用,固定字符串長度」這三項設定,其他的不用打開。

(6)IE Tab Plus
基於IETab 開發的增強版本,除具備 IETab 的全部功能外,還可以在IE 引擎中用Adblock Plus 過濾廣告,以及同步Cookie 使得切換到IE 引擎時不需要重新登錄。

(7)Greasemonkey
允許網頁執行自訂定的JavaScript,此JavaScript為放在 Local 的一段 Script code 。



除了以上好用的Plugin外,Firefox 還有一個好用設定即「最小化後占用的釋放內存」,只需在 FireFox 的網址列輸入「about:config」,然後在下面的地方新增「config.trim_on_minimize」,類型使用「真假值(Boolean)」,並將值設為「true」,設定好後只需要將Firefox重開以後只要最小化Firefox即會釋放掉多餘使用的內存。


在 SQL Server 要使用執行計畫是很簡單的,不像 Oracle 那麼的麻煩,只需要在 SQL Query Analyzer 工具裡即可使用執行計畫。

首頁先啟動「SQL Query Analyzer」,進到主畫面後,選擇上面的選單「Query」=> 然後選擇「Show Execution Plan」,如下圖所示:

 

之後只需在主視窗隨便輸入一個語法,如 select getdate() 或您要的語法,即可在主視窗下面看到執行計畫。如下圖

 

因SQL Server 支援一次執行多個 SQL Statement 所以可以一次執行多個指令,來作直接的效能比較。

使用Oracle資料庫時,常常會需要比較不同SQL語法的效能,除了只看執行時間外,尚可透過執行計畫的觀察來研判那一個語法效能會比較好,在Oracle資料庫裡就有 SQL*Plus 工具可以作簡易的執行計畫的查詢。
以下就來看看在Oracle DB 該如何使用查詢計畫

一、set autotrace語法及參的說明
1、語法: SET AUTOTRACE {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
參數說明:
SET AUTOTRACE OFF: 此為預設值,即關閉Autotrace功能
SET AUTOTRACE ON : 同時輸出執行計畫、統計資訊及執行結果。
SET AUTOTRACE ON EXPLAIN: 打開執行計畫報表,顯示語法執行結果,但不顯示統計資訊。
SET AUTOTRACE ON STATISTICS: 打開統計資訊報表,顯示語法執行結果,但不顯示執行計畫。
SET AUTOTRACE TRACEONLY : 顯示執行計畫和統計資訊,但不顯示命令的執行結果,但在traceonly的後面仍然可以追加explain或者statistics參數,等同於set autotrace on [explain|statistics]但是不顯示執行結果。


2、AUTOTRACE Statistics常用列解釋
db block gets : 從buffer cache中讀取的 block 的數量
consistent gets : 從buffer cache中讀取的 undo 資料的 block 的數量
physical reads : 從磁碟讀取的 block 的數量
redo sizeDML : 生成的 redo 的大小
sorts (memory) : 在記憶體執行的排序量
sorts (disk) : 在磁片上執行的排序量

二、Explain plan for 的使用
如果希望不要執行指令,然後依然可以看執行計畫,那可以使用 Explain plan 語法,語法如下 Sample:
explain plan for select sysdate from dual;
執行完後,需再下下面語法,查看執行計劃的內容:
select * from table(dbms_xplan.display());

Windows XP 不知從何時開始,用檔案總管搜尋檔案內容時,只會搜尋一些已知檔案的內容。如果是非系統已知的檔案類型,預設狀況下是不搜尋的,要解決這個怪現象,有二個方式可以設定。

方法一:變更機碼。將某類型檔案變成要搜尋的對象

在要允許搜尋的檔案機碼設定裡,設定「PersistentHandler」的機碼的預設值,如下的設定值:(以下為存文字檔的範例)

[HKEY_CLASSES_ROOT\.txt\PersistentHandler]
@="{5e941d80-bf96-11cd-b579-08002b30bfeb}"

如果不敢修改機碼,可參照第二方法比較簡單也安全^^

方法二:所有檔案都納入搜尋(推薦用此方法,一勞永逸)

先到我的電腦,然右鍵,然後選「管理」,如下圖

二、在電腦管理裡,選擇「索引服務」,並按右鍵後選擇「內容」

三、進到索引服務內容後將「含有未知副檔名的索引檔案」給勾起來,然後按「確定」再將剛打開的視窗全關閉。

 

相關資訊可以參閱MS 的官方文件: http://support.microsoft.com/kb/309173/zh-tw

Eclipse 如果要修改預設編碼設定,可以參考以下方式進行

 

一、 Workspace的文字編碼:

 

二、CSS檔編碼:

 

三、HTML檔案編碼

 

四、JSP檔案編碼

 

另外,也建議將 Show line numbers 勾起來,可以看到行號





Powered by Movable Type 4.12