Thursday, November 01, 2007

Hibernate Implement Tips

假設你已經對於hibernate有一點點概念. 那麼這裡是一些implent的時候最基礎最有機會用到的東西的小整理.
  1. 讓我們設定db的外部連結名稱為dbname. 則在hibernate.cfg.xml誘惑是hibernate.properties檔案中的database 名稱就是dbname.
  2. 在db當中的每一個table都對應有一個javaBean.hbm.xml, 這樣一個檔案會對應到一個原始檔為javaBean.java的class. 簡單來說, 就是每個table都有一個mapping file及一個bean來對應他.
    table <--> javaBean.hbm.xml <--> javaBean.java
  3. hibernate.cfg.xml及hibernate.properties可以則一使用. 當兩者都存在的時候, 前者會覆蓋後者. 他們的功能就是設定連線時所需要的一些information, 像是db位置名稱, 帳號, 密碼, 所使用的sqlDialet...等
  4. 請加入log4j.properites用來輸出相關的logs
  5. Sessin Factory是利用configuration file(一般命名為hibernate.cfg.xml)來建立的. 若在此檔案中沒有給factory一個名稱, 則無須bind JNDI.
  6. 整體簡單來說, 所需要的file有以下這些: javaBean.java, javaBean.hbm.xml, hibernate.cfg.xml/hibernate.properties, log4j.properties

Difference/Relation between Transaction and Session

一看到這個字, 有種學英文的感覺, scope長多大都沒概念. 所以筆記一下transaction以及session二者的區別.
  1. 當client連結到DB, 通過驗證之後, 就會建立一個session. 這樣的一個session則可以包含許多個transaction.
  2. Transaction本身的定義是an indivisible unit of work, 及表明他是數個連續的動作且不可切割的. 故一個transaction下的資料庫更新要麼全部都成功了, 要麼就是rollback了. 預設的commit方式大多為auto commit, 所以每一個SQL statement都是一個transaction; 又假若設定commit的方式為manual commit, 則transaction的界線就由commit或者是rollback來劃分了.