- 浏览: 10132 次
- 来自: ...
最近访客 更多访客>>
最新评论
-
zhenggz:
怎到后面的一体面 段
Spring+hibernate+DWR整合 -
snakeskin:
真的好麻烦,如果用JSF,就非常简单了,前提是封装一下子
在Struts 2中实现CRUD -
fuliang:
<div class="quote_title ...
Spring+hibernate+DWR整合 -
linginfanta:
页面再加上webwork
那应该就比较爽了。
Spring+hibernate+DWR整合 -
kaki:
对啊!!!发一个压缩包吧!
Spring+hibernate+DWR整合
首先,建一个web project,然后添加对hibernate和spring的支持,我们使用的是hibernate3.1和spring2.0,然后导入dwr.jar和commons-pool-1.3.jar(不知道myeclipse怎么搞的,添加Spring功能支持的时候就有了commons-dbcp.jar,居然没有其依赖的commons-pool-x.jar,只好单独添加了,另外,需要将Spring2.0 AOP Liberaries里的asm2.2.3.jar删除,因为好像和Hiberate中的生成代理用的asm.jar冲突,我把Spring2.0 AOP Liberaries排到最后仍然有冲突,所以只好删掉了,不知道大家遇到过这种情况么)。
我们使用myeclise自带的Derby数据库,在里面建一个表BOOK:
ID bigint primary key,autoincrement
NAME varchar(20)
ISBM varchar(20)
AUTHOR varchar(15)
然后利用myeclipse的hibernate反向工程生成领域模型:Book.java, DAO:BookDAO.jar, Book 的映射文件Book.hbm.xml:
生成的代码及配置文件如下:
Book.java:
edu.jlu.fuliang.dao.BookDAO.java:
Book.hbm.xml:
下面我们配置一下Spring,我们把applicationContext.xml分成了三个,分别是applicationContext-db.xml,applicationContext-dao.xml,applicationContext-service.我们看看如何配置:
applicationContext-db.xml:
applicationContext-dao.xml:
接下来我们来写我们的Service层:
edu.jlu.fuliang.service.BookManageService.java
edu.jlu.fuliang.service.impl.BookManageServiceImpl.java:
然后我们来配置Service和事务:
applicationContext-service.xml:
最后我们来把dwr整合进来:
我们在web.xml添加ContextLoaderListener来加载applicationContext-db.xml,applicationContext-dao.xm,applicationContext-service.xml,以及配置DwrServlet:
web.xml:
在dwr.xml中配制bean的创建方式,类型转换,以及Service要暴露的接口:
最后,我们编写jsp页面index.jsp:
我也写了一篇整合Ajax+Struts2+Spring+Hibernate的,Struts2的Ajax底层使用了Dwr和Dojo,所以整合dwr可以省掉.工程也一并传上.
我们使用myeclise自带的Derby数据库,在里面建一个表BOOK:
ID bigint primary key,autoincrement
NAME varchar(20)
ISBM varchar(20)
AUTHOR varchar(15)
然后利用myeclipse的hibernate反向工程生成领域模型:Book.java, DAO:BookDAO.jar, Book 的映射文件Book.hbm.xml:
生成的代码及配置文件如下:
Book.java:
- package edu.jlu.fuliang.domain;
- /** *//**
- * Book generated by MyEclipse Persistence Tools
- */
- public class Book implements java.io.Serializable {
- // Fields
- private Long id;
- private String name;
- private String isbm;
- private String author;
- // Constructors
- /** *//** default constructor */
- public Book() {
- }
- /** *//** minimal constructor */
- public Book(Long id, String name, String isbm) {
- this.id = id;
- this.name = name;
- this.isbm = isbm;
- }
- /** *//** full constructor */
- public Book(Long id, String name, String isbm, String author) {
- this.id = id;
- this.name = name;
- this.isbm = isbm;
- this.author = author;
- }
- // Property accessors
- public Long getId() {
- return this.id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getIsbm() {
- return this.isbm;
- }
- public void setIsbm(String isbm) {
- this.isbm = isbm;
- }
- public String getAuthor() {
- return this.author;
- }
- public void setAuthor(String author) {
- this.author = author;
- }
- public String toString(){
- return "[id=" + id + ",name=" + name + ",isbm=" + isbm + ",author=" + author + "]";
- }
- }
edu.jlu.fuliang.dao.BookDAO.java:
- package edu.jlu.fuliang.dao;
- import java.util.List;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.hibernate.LockMode;
- import org.springframework.context.ApplicationContext;
- import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
- import edu.jlu.fuliang.domain.Book;
- /** *//**
- * Data access object (DAO) for domain model class Book.
- *
- * @see edu.jlu.fuliang.domain.Book
- * @author MyEclipse Persistence Tools
- */
- public class BookDAO extends HibernateDaoSupport ...{
- private static final Log log = LogFactory.getLog(BookDAO.class);
- // property constants
- public static final String NAME = "name";
- public static final String ISBM = "isbm";
- public static final String AUTHOR = "author";
- protected void initDao() ...{
- // do nothing
- }
- public void save(Book transientInstance) ...{
- log.debug("saving Book instance");
- try ...{
- getHibernateTemplate().save(transientInstance);
- log.debug("save successful");
- } catch (RuntimeException re) ...{
- log.error("save failed", re);
- throw re;
- }
- }
- public void delete(Book persistentInstance) ...{
- log.debug("deleting Book instance");
- try ...{
- getHibernateTemplate().delete(persistentInstance);
- log.debug("delete successful");
- } catch (RuntimeException re) ...{
- log.error("delete failed", re);
- throw re;
- }
- }
- public Book findById(java.lang.Long id) ...{
- log.debug("getting Book instance with id: " + id);
- try ...{
- Book instance = (Book) getHibernateTemplate().get(
- "edu.jlu.fuliang.domain.Book", id);
- return instance;
- } catch (RuntimeException re) ...{
- log.error("get failed", re);
- throw re;
- }
- }
- public List findByExample(Book instance) ...{
- log.debug("finding Book instance by example");
- try ...{
- List results = getHibernateTemplate().findByExample(instance);
- log.debug("find by example successful, result size: "
- + results.size());
- return results;
- } catch (RuntimeException re) ...{
- log.error("find by example failed", re);
- throw re;
- }
- }
- public List findByProperty(String propertyName, Object value) ...{
- log.debug("finding Book instance with property: " + propertyName
- + ", value: " + value);
- try ...{
- String queryString = "from Book as model where model."
- + propertyName + "= ?";
- return getHibernateTemplate().find(queryString, value);
- } catch (RuntimeException re) ...{
- log.error("find by property name failed", re);
- throw re;
- }
- }
- public List findByName(Object name) ...{
- return findByProperty(NAME, name);
- }
- public List findByIsbm(Object isbm) ...{
- return findByProperty(ISBM, isbm);
- }
- public List findByAuthor(Object author) ...{
- return findByProperty(AUTHOR, author);
- }
- public List findAll() ...{
- log.debug("finding all Book instances");
- try ...{
- String queryString = "from Book";
- return getHibernateTemplate().find(queryString);
- } catch (RuntimeException re) ...{
- log.error("find all failed", re);
- throw re;
- }
- }
- public Book merge(Book detachedInstance) ...{
- log.debug("merging Book instance");
- try ...{
- Book result = (Book) getHibernateTemplate().merge(detachedInstance);
- log.debug("merge successful");
- return result;
- } catch (RuntimeException re) ...{
- log.error("merge failed", re);
- throw re;
- }
- }
- public void attachDirty(Book instance) ...{
- log.debug("attaching dirty Book instance");
- try ...{
- getHibernateTemplate().saveOrUpdate(instance);
- log.debug("attach successful");
- } catch (RuntimeException re) ...{
- log.error("attach failed", re);
- throw re;
- }
- }
- public void attachClean(Book instance) ...{
- log.debug("attaching clean Book instance");
- try ...{
- getHibernateTemplate().lock(instance, LockMode.NONE);
- log.debug("attach successful");
- } catch (RuntimeException re) ...{
- log.error("attach failed", re);
- throw re;
- }
- }
- public static BookDAO getFromApplicationContext(ApplicationContext ctx) ...{
- return (BookDAO) ctx.getBean("BookDAO");
- }
- }
Book.hbm.xml:
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <!--
- Mapping file autogenerated by MyEclipse Persistence Tools
- -->
- <hibernate-mapping>
- <class name="edu.jlu.fuliang.domain.Book" table="BOOK" schema="CLASSICCARS">
- <id name="id" type="java.lang.Long">
- <column name="ID" />
- <generator class="identity" />
- </id>
- <property name="name" type="java.lang.String">
- <column name="NAME" length="20" not-null="true" />
- </property>
- <property name="isbm" type="java.lang.String">
- <column name="ISBM" length="20" not-null="true" unique="true" />
- </property>
- <property name="author" type="java.lang.String">
- <column name="AUTHOR" length="15" />
- </property>
- </class>
- </hibernate-mapping>
下面我们配置一下Spring,我们把applicationContext.xml分成了三个,分别是applicationContext-db.xml,applicationContext-dao.xml,applicationContext-service.我们看看如何配置:
applicationContext-db.xml:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans
- xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
- <bean id="dataSource"
- class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName"
- value="org.apache.derby.jdbc.ClientDriver">
- </property>
- <property name="url"
- value="jdbc:derby://localhost:1527/myeclipse;create=true">
- </property>
- <property name="username" value="classiccars"></property>
- <property name="password" value="myeclipse"></property>
- </bean>
- <bean id="sessionFactory"
- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="dataSource">
- <ref bean="dataSource" />
- </property>
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">
- org.hibernate.dialect.DerbyDialect
- </prop>
- <prop key="hibernate.show_sql">
- true
- </prop>
- </props>
- </property>
- <property name="mappingResources">
- <list>
- <value>edujlufuliangdomainBook.hbm.xml</value>
- </list>
- </property>
- </bean>
- </beans>
applicationContext-dao.xml:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans
- xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
- <bean id="bookDAO" class="edu.jlu.fuliang.dao.BookDAO">
- <property name="sessionFactory">
- <ref bean="sessionFactory" />
- </property>
- </bean>
- </beans>
接下来我们来写我们的Service层:
edu.jlu.fuliang.service.BookManageService.java
- package edu.jlu.fuliang.service;
- import java.util.List;
- import edu.jlu.fuliang.domain.Book;
- public interface BookManageService {
- public List<Book> getAllBooks();
- public List<Book> getBookByName(String name);
- public void updateBook(Book book);
- public void addBook(Book book);
- public void deleteBook(long id);
- }
edu.jlu.fuliang.service.impl.BookManageServiceImpl.java:
- package edu.jlu.fuliang.serviceImpl;
- import java.util.List;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import edu.jlu.fuliang.dao.BookDAO;
- import edu.jlu.fuliang.domain.Book;
- import edu.jlu.fuliang.service.BookManageService;
- public class BookManageServiceImpl implements BookManageService{
- private static final Log log = LogFactory.getLog(BookManageServiceImpl.class);
- private BookDAO bookDAO;
- @Override
- public void addBook(Book book) {
- bookDAO.save(book);
- }
- @Override
- public void deleteBook(long id) {
- Book book = bookDAO.findById(id);
- bookDAO.delete(book);
- }
- @Override
- public List<Book> getAllBooks() {
- return bookDAO.findAll();
- }
- @Override
- public List<Book> getBookByName(String name) {
- return bookDAO.findByName(name);
- }
- @Override
- public void updateBook(Book book) {
- log.info(book);
- bookDAO.attachDirty(book);
- }
- public BookDAO getBookDAO() {
- return bookDAO;
- }
- public void setBookDAO(BookDAO bookDAO) {
- this.bookDAO = bookDAO;
- }
- }
然后我们来配置Service和事务:
applicationContext-service.xml:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans
- xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
- <bean id="bookManageServiceTarget" class="edu.jlu.fuliang.serviceImpl.BookManageServiceImpl">
- <property name="bookDAO">
- <ref bean="bookDAO"/>
- </property>
- </bean>
- <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <property name="sessionFactory" ref="sessionFactory"/>
- </bean>
- <bean id="bookManageService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
- <property name="transactionManager" ref="transactionManager"/>
- <property name="target" ref="bookManageServiceTarget"/>
- <property name="transactionAttributes">
- <props>
- <prop key="add*">PROPAGATION_REQUIRED</prop>
- <prop key="delete*">PROPAGATION_REQUIRED</prop>
- <prop key="update*">PROPAGATION_REQUIRED</prop>
- <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
- </props>
- </property>
- </bean>
- </beans>
最后我们来把dwr整合进来:
我们在web.xml添加ContextLoaderListener来加载applicationContext-db.xml,applicationContext-dao.xm,applicationContext-service.xml,以及配置DwrServlet:
web.xml:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4"
- xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:applicationContext-*.xml</param-value>
- </context-param>
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <servlet>
- <servlet-name>dwr-invoker</servlet-name>
- <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
- <init-param>
- <param-name>debug</param-name>
- <param-value>true</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>dwr-invoker</servlet-name>
- <url-pattern>/dwr/*</url-pattern>
- </servlet-mapping>
- </web-app>
在dwr.xml中配制bean的创建方式,类型转换,以及Service要暴露的接口:
- <dwr>
- <allow>
- <convert converter="bean" match="edu.jlu.fuliang.domain.Book"/>
- <create creator="spring" javascript="BookManageService" >
- <param name="beanName" value="bookManageService"/>
- <include method="getAllBooks"/>
- <include method="getBookByName"/>
- <include method="updateBook"/>
- <include method="addBook"/>
- <include method="deleteBook"/>
- </create>
- </allow>
- </dwr>
最后,我们编写jsp页面index.jsp:
- <html>
- <head><title>DWR test</title>
- <script type='text/javascript' src='/DWRTest/dwr/interface/BookManageService.js'></script>
- <script type='text/javascript' src='/DWRTest/dwr/engine.js'></script>
- <script type='text/javascript' src='/DWRTest/dwr/util.js'></script>
- <script type="text/javascript">
- var
评论
5 楼
zhenggz
2015-03-17
怎到后面的一体面 段
4 楼
fuliang
2007-10-09
linginfanta 写道
页面再加上webwork
那应该就比较爽了。
那应该就比较爽了。
我也写了一篇整合Ajax+Struts2+Spring+Hibernate的,Struts2的Ajax底层使用了Dwr和Dojo,所以整合dwr可以省掉.工程也一并传上.
3 楼
linginfanta
2007-10-09
页面再加上webwork
那应该就比较爽了。
那应该就比较爽了。
2 楼
kaki
2007-10-09
对啊!!!发一个压缩包吧!
1 楼
EXvision
2007-10-09
把项目打个包。。或者把帖子写进word贴个附件吧。。几个配置文件有问题被过滤了
相关推荐
Struts2 + spring + hibernate + dwr 完美整合代码 dwr 用户注册 多级下拉联动 刷新表格.. 全部代码
struts1+spring+hibernate+DWR整合方案详解
《疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibernate整合开发》是《基于J2EE的Ajax宝典》的第二版。《基于J2EE的Ajax宝典》面市近2年,作为Ajax领域最全面、实用的图书,一直深受读者的好评。全书主要分为三个...
使用struts2、hibernate、spring、dwr整合的简单项目。包括级联等 注意:csdn上面显示为chm文件。该文件为.7z的压缩文件。用压缩软件可以打开的 csdn弄错了
该示例使用MyEclipse 5.5 IDE用来整合四个技术(Struts 1.2, Spring 2.0, Hibernate 3.2和Ajax技术)的轻量级的JavaEE。 操作步骤如下: 1. 下载并解压之后,使用MyEclipse导入工程 2. 找到demo目录中的.sql数据库...
spring+struts+hibernate+jbpm+dwr整合开发的OA办公系统源码
重磅推出 struts+spring+hibernate+dwr整合分页例子
Spring+Dwr+Hibernate整合项目,包括所需要的包和数据库
用户注册和登录是每个系统的必须存在的一部分,基于Dwr+Struts2+Spring+Hibernate写了一个用户登录注册系统。 其中用Dwr去进行用户注册的用户是否存在的验证。 全部业务控制交由Spring去进行处理。事务处理也...
该源码成功整合了Struts2.0+Hibernate+Spring(SSH架构)+DWR+MySql+Tomcat,直接拷贝部署就可以运行,前提建立相应的数据库。模块包括(组织机构管理,人员管理,角色管理,权限管理等等),每个模块均有增删查改等...
ext+Json+dwr+spring+hibernate整合项目实例与资源
struts2.2.1+spring 3.0.3+hibernate3.6+dwr3.0全注解整合包
利用dwr,整合extjs,spring,hibernate.是你学习dwr的参考指南
新版SSH+DWR配置(Struts2.1.8+Spring3.0+Hibernate3.3.2+DWR2.0.6) 很好的整合示例 目前最新框架整合
不可多得的小例子。 内有详细操作流程说明。
ext+json+dwr+spring+hibernate整合项目实例与相关资源
《疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibernate整合开发》是《基于J2EE的Ajax宝典》的第二版。《基于J2EE的Ajax宝典》面市近2年,作为Ajax领域最全面、实用的图书,一直深受读者的好评。全书主要分为三个...
1. word文档记录了Struts2+Hibernate3+Spring2.5整合详细步骤,附有操作步骤的图示参考,并给出了各个步骤的注意事项; 2. 源代码实例包括一个完整模块的增删改查操作,可直接运行,可以在此基础上直接进行自己系统...
dwr+ext+strusts2+spring+hibernate整合