要在ZK上使用Hibernate,只要設定檔設好就可以直接使用
首先如果是利用Eclipse進行相關的後續開咖,應該要裝好ZK Studio,這樣才會比較方便開發,至於利用Eclipse裝法可以看一下這裡有一篇教學文章:
[AJAX][ZK] ZK & ZK Studio
1. 開個ZK Project (Dynamic Web Project with ZK Library)
新增專案的方法可以參照官網的教學:
http://www.zkoss.org/doc/studioguide/ch03s02.html
2.安裝Hibernate到專案內
使用最新的Hibernate下載網址: http://www.hibernate.org/
裡面有Download,點下去後可以下載Hibernate Core
下載完檔案後,主要需要用到的檔如下,
只要把下面這些檔放到新開專案的WEB-INF/lib內就OK
Hibernate Core
hibernate3.jar
lib/required/antlr-2.7.6.jar
lib/required/commons-collections-3.1.jar
lib/required/dom4j-1.6.1.jar
lib/required/jta-1.1.jar
lib/required/slf4j-api-1.5.2.jar
lib/required/javassist-3.4.GA.jar
Hibernate Annotations
hibernate-annotations.jar
lib/ejb3-persistence.jar
lib/hibernate-commons-annotations.jar
lib/test/log4j.jar *
lib/test/slf4j-log4j12.jar *
*[註]: 若沒有要用Annotation的話這兩個檔還是要放進去,若沒有放的話會出現
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"
的錯誤訊息,
下載除了Log4J之外還有其他多種的選擇。
3.設定ZK Configuration檔
修改新專案WEB-INF下的zk.xml檔,主要要加入的設定如下,
直接拷貝貼上即可,也可以看官網的:
http://www.zkoss.org/doc/devguide/ch16s03.html
Hibernate SessionFactory lifecycle
org.zkoss.zkplus.hibernate.HibernateSessionFactoryListener
Hibernate Open Session In View life-cycle
org.zkoss.zkplus.hibernate.OpenSessionInViewListener
Hibernate thread session context handler
org.zkoss.zkplus.hibernate.HibernateSessionContextListener
4.建立Java物件
這裡以通訊錄的資料為例,建立一個叫做Person的類別,
會使用到的欄位有姓名、生日、電話及eMail,
用Annotation的程式碼大致如下,編輯好可以放在src/test下,
若沒有用Annotation的話,可 以參考官網,要多設定一下Mapping File:
http://www.zkoss.org/doc/devguide/ch16s05s01.html
package test;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "person")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private Date birthday;
private String phone;
private String email;
public Person() {}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
5.建立Hibernate Configuration檔
資料是用MySQL的當作是資料庫!
設定檔(hibernate.cfg.xml)大致如下,放到src下即可,
這兒也可以參考官網,不過不是用MySQL就是了:http://www.zkoss.org/doc/devguide/ch16s06.html
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
org.gjt.mm.mysql.Driver
jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf-8
root
org.hibernate.dialect.MySQL5Dialect
1
thread
org.hibernate.cache.NoCacheProvider
true
create
6.建立個DAO物件
其實沒有用DAO也是可以直接來存取資料,
不過若有用的話會比較方便,也易於維護!
可以前去參考官網上的資料:
http://www.zkoss.org/doc/devguide/ch16s07.html
package test;
import java.util.Date;
import java.util.List;
import org.hibernate.Session;
import org.zkoss.zkplus.hibernate.HibernateUtil;
public class PersonDAO {
Session currentSession() {
return HibernateUtil.currentSession();
}
public void saveOrUpdate(Person aPerson, String name, Date birthday, String phone, String email) {
Session sess = currentSession();
aPerson.setName(name);
aPerson.setBirthday(birthday);
aPerson.setPhone(phone);
aPerson.setEmail(email);
sess.saveOrUpdate(aPerson);
}
public void delete(Person aPerson) {
Session sess = currentSession();
sess.delete(aPerson);
}
public Person findById(Long id) {
Session sess = currentSession();
return (Person) sess.load(Person.class, id);
}
public List findAll() {
Session sess = currentSession();
return sess.createQuery("from Person").list();
}
}
7.建立ZUML Page
Data Binding的方式,基本上在用法上很直覺的,只要加個幾行設定就行了,
程式存成喜歡的檔名.zul即可,若沒有要用Data Binding的方式,
則是可以參考官網的範例:
http://www.zkoss.org/doc/devguide/ch16s08.html
整體開發過程都可參考官網上的資料,非常詳細:
[1]. 官方網站可以連結到http://www.zkoss.org/
[2]. Hibernet開發可以連到http://www.zkoss.org/doc/devguide/ch16s01.html
留言列表