在网上找过很多例子,最后发现官网的这个例子不错。但是过程中出了很多问题,所以记录下来,希望对后来人也有所帮助吧。参考网页:http://www.zkoss.org/smalltalks/hibnsprn/hibn_sprn_zk.html
配置环境:zk +spring 3.0.5.RELEASE + hibernate3.2
1.新建zk project,然后在WEB-INF下引入spring 3.0.5的jar包。因为运行的时候报错了,发现需要一个spring-dao.jar,因为spring 3.0.5 release 中没有,所以需要下载。
2.引入hibernate的 jar包,所有。这个就不用说了吧 嘻嘻
3.在WEB-INF下,建立applicationContext.xml,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- ApplicationContext.xml -->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://127.0.0.1:3306/friend_db</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>123456</value>
</property>
</bean>
<bean id="factory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="mappingResources">
<list>
<value>org/zk101/model/pojo/Person.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">
false
</prop>
<prop key="hibernate.transaction.factory_class">
org.hibernate.transaction.JDBCTransactionFactory
</prop>
</props>
</property>
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<bean id="personDao" class="org.zk101.dbaccess.dao.PersonDAO">
<property name="sessionFactory">
<ref bean="factory" />
</property>
</bean>
<bean id="personManager" class="org.zk101.service.PersonManagerImpl">
<property name="dao">
<ref bean="personDao"/>
</property>
</bean>
</beans>
4. Person.hbm.xml
<?xml version="1.0"?>
<!-- Person.hbm.xml -->
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping
package="org.zk101.model.pojo">
<class name="Person" table="person" lazy="false">
<id name="id" type="int">
<generator class="increment"/>
</id>
<property name="name" />
<property name="surname"/>
</class>
</hibernate-mapping>
5. Person.java
package org.zk101.model.pojo;
public class Person {
private int id ;
private String name;
private String surname;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
}
6 PersonDAO.java
package org.zk101.dbaccess.dao;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class PersonDAO extends HibernateDaoSupport {
public void saveOrUpdate(Object ob) {
super.getHibernateTemplate().saveOrUpdate(ob);
}
public void delete(Object ob) {
super.getHibernateTemplate().delete(ob);
}
@SuppressWarnings("unchecked")
public Object find(Class clazz, Long id) {
Object ob = super.getHibernateTemplate().load(clazz,id);
return ob;
}
@SuppressWarnings("unchecked")
public List findAll(Class clazz) {
List list = super.getHibernateTemplate().find(" from "+clazz.getName());
return list;
}
}
7. PersonManager Interface
/** PersonManager Interface */
package org.zk101.service;
import org.zk101.model.pojo.Person;
public interface PersonManager {
public List getAllPersons();
/** for simplicity we are only providing a simple business rule method **/
}
8. PersonManagerImpl.java
/** PersonManagerImpl.java */
package org.zk101.service;
import org.zk101.model.pojo.Person;
import java.util.*;
public class PersonManagerImpl implements PersonManager {
private PersonDAO dao;
public PersonDAO getDao() {
return this.dao;
}
public void setDao(PersonDAO personDAO) {
this.dao = personDAO;
}
public List getAllPersons() {
return this.dao.findAll(Person.class);
}
}
9. ServiceLocator.java
/** ServiceLocator.java */
package org.zk101.service;
import org.hibernate.SessionFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.zk101.service.PersonManager;
public class ServiceLocator {
private static ApplicationContext ctx;
static {
//注意红色部分,此处最容易报错。因为我的这个配置文件是位于web-inf下的,所以相对于classes的位置就是这样。
ctx = new ClassPathXmlApplicationContext("../applicationContext.xml");
}
private ServiceLocator() {
}
public static SessionFactory getSessionFactory() {
return (SessionFactory) ctx.getBean("factory",SessionFactory.class);
}
public static PersonManager getPersonManager() {
return (PersonManager) ctx.getBean("personManager",PersonManager.class);
}
}
10. person.zul
<!-- person.zul -->
<vbox>
<listbox id="personList" width="800px" rows="5"
use="org.zk101.ui.ListPerson">
<listhead>
<listheader label="Name"/>
<listheader label="Surname"/>
</listhead>
</listbox>
</vbox>
11 ListPerson.java
/** ListPerson.java */
package org.zk101.ui;
import org.zk101.service.ServiceLocator;
import java.util.*;
import org.zk101.service.PersonManager;
import org.zk101.model.pojo.Person;
import org.zkoss.zul.Label;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
public class ListPerson extends Listbox {
public void onCreate() {
PersonManager manager = ServiceLocator.getPersonManager();
Collection allPersons = manager.getAllPersons();
Iterator it = allPersons.iterator();
while(it.hasNext()) {
Person person = (Person) it.next();
Long id = person.getId();
String name = person.getName();
String surname = person.getSurname();
Listitem listitem = new Listitem();
listitem.setValue(id);
listitem.setParent(this);
Listcell nameCell = new Listcell(name);
nameCell.setParent(listitem);
Listcell surnameCell = new Listcell(surname);
surnameCell.setParent(listitem);
}
}
}
总结:这个实例,就是通过整合,把数据库中存在的记录遍历并显示出来。其他的操作可以在其基础上实现。比如删除。
目录结构:

- 大小: 15.2 KB
分享到:
相关推荐
在这个`zk+spring+hibernate(全部用注解)`的项目中,我们将探讨如何完全利用注解来配置和管理这些框架,从而实现更加简洁、高效的代码结构。 `ZK`,全称ZooKeeper,是一个分布式的、开放源码的分布式应用程序协调...
在IT行业中,`ZK`(ZooKeeper)、`Spring`和`Hibernate`是三个非常重要的框架,它们分别用于分布式协调、应用框架管理和对象关系映射。本整合实例旨在展示如何将这三个技术相结合,实现一个完整的增删改查(CRUD)...
9. **ZK整合其他技术**:ZK可以与Spring、Hibernate等框架集成,代码可能展示了如何配置和使用这些集成。 通过深入研究这些代码示例,开发者能够更好地理解ZK框架的工作原理,提升实际开发技能。同时,这些代码也是...
【ZK简明教程】 ...此外,ZK还支持与Acegi Security、Spring、Hibernate等框架的集成,提供了丰富的功能和扩展性。随着对ZK的深入学习,开发者可以利用这些特性构建更复杂、功能更强大的Web应用。
总的来说,这份源码为我们提供了一个学习ZK框架和Web应用开发的良好实例,通过对源码的分析,我们可以深入了解ZK组件的使用、MVC架构、数据持久化、页面导航和权限控制等多个方面的知识。同时,作者的博客链接也可以...
1. **配置文件**:如struts.xml、spring.xml、hibernate.cfg.xml等,分别用于配置Struts2、Spring和Hibernate的行为。 2. **实体类**:对应数据库中的表,通过Hibernate的注解或XML映射文件与数据库表关联。 3. **...
6. **易于集成**:ZK支持Spring、Hibernate等主流的Java框架,方便开发者进行企业级应用集成。 7. **跨平台**:由于基于Java,ZK框架可以运行在多种操作系统和浏览器上,具有良好的跨平台性。 8. **国际化与本地化...
### 百度持续交付项目组面试题解析 #### 计算机基础 ##### 数据结构、算法 **代码实现快速排序** 快速排序是一种高效的排序算法,采用分治法策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...