為什麼會把ORM、database跟serialization這些詞一起談呢?因為常聽到許多人再討論怎麼用ORM?ORM的相關技術?database的連接方式JDBC語法如何使用?serialzation(序列化)又是什麼一回事?在Java中怎麼將物件做為可序列化?好多人一直談技術、談語法,但我只是想提醒why ORM?why JDBC?why serialization?

 

話說重頭,物件的是居住在記憶體國度的產物。不要忘了現今的電腦架構中任何資料跟程式都是在記憶體中活動,但記憶體是RAM(Random Access Memory)它的特性就是『power off, data消失』,如此若物件當然也就不見了。在程式中有些處理是有狀態、回饋跟持續性的需求,若物件會突然消失當然問題就大了。所以會了將資料能在關機或沒電的時後保存下來,當然最基本的方式就是『寫到檔案』或『寫到資料庫』囉~

 

RDB是永續存放最常依賴的靠山!當物件中的資料經過某些處理後必須將資料持續化時,當然資料庫是一個常用的方案。例如:銀行的存提款資料,若物件代表account,當存提款完成後,一定要把資料update到資料庫,否則機器一旦關機或突然停電那物件的資料就不見囉。Java中要將資料存到資料庫常見的方式就是利用JDBC來跟資料庫溝通,但難免還是覺得有點麻煩。慢慢,開始有人提出:『ㄟ~我能不能直接操作物件就將資料自動反映到資料庫中』,這個技術就是ORM,當中就熱門的框架就是hibernate囉!所以如果以後有人問你為什麼要學hibernate,請記得是為了用更直觀的方式來存取資料庫,另外那為什麼要用資料庫呢,當然,就是用了將資料持續性保存下來囉!學很多新的技術不是不好但要很清楚它的初衷跟緣由,不然就有點流於形式,不是嗎…^^

 

序列化~將物件此種抽象化結構轉換成位元串流。為何要將物件序列化呢?原因很簡單,第一:我們希望能把物件傳送到另一個機器中讓他調用,然而怎麼讓另外一端接收呢,電腦的世界只有01,當然我們就要設法把物件轉成01的可序列化資料,然而轉成01之後還要可以把他還原回來囉~這個就是Serialization的概念。第二:我們可能希望把物件的資料持續化,但又懶得用資料庫,如時候資料庫是一個負荷較重的解決方案,或許有些小程式根本不需要這種大炮行的儲存方式,請用檔案就好啦~那如何將物件存入檔案又可以輕鬆還原呢答案在上述第一點已經說過,也就是用序列化就好了。Java中有提供了很好的Serializable的介面,所以可以輕鬆完成。但還是再度提醒當有人問你為何聊序列化或專研序列化的語法時,請務必記得,主要是為了將物件轉成bit string表示跟再度將bit string轉移回來,如此就可以讓遠端呼叫(Java中叫做RMI)或做持續化。

 

再度強調不要一直知道whathow,要切記『why』。當如果一個好的工程師沒有辦法把來龍去脈講清楚,那其實很可悲的他只是被程式異化下的一個程式奴隸而已!加油吧工程師們尊嚴是我們自己要賺來的,當我們認清一切,慢慢的你會受到不同的待遇的。

創作者介紹
創作者 劉逸 的頭像
劉逸

劉逸的留意世界

劉逸 發表在 痞客邦 留言(1) 人氣()


留言列表 (1)

發表留言
  • 低調粉絲
  • 我們的工程師很讚 ^^
    Maybe...Must be