Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架1.docx

上传人:b****3 文档编号:5223135 上传时间:2022-12-14 格式:DOCX 页数:17 大小:191.85KB
下载 相关 举报
Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架1.docx_第1页
第1页 / 共17页
Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架1.docx_第2页
第2页 / 共17页
Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架1.docx_第3页
第3页 / 共17页
Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架1.docx_第4页
第4页 / 共17页
Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架1.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架1.docx

《Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架1.docx》由会员分享,可在线阅读,更多相关《Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架1.docx(17页珍藏版)》请在冰豆网上搜索。

Hibernate332+Spring255+Struts216+Extjs300 Annotations方式快速开发框架1.docx

Hibernate332+Spring255+Struts216+Extjs300Annotations方式快速开发框架1

Hibernate3.3.2+Spring2.5.5+Struts2.1.6+Extjs3.0.0Annotations方式快速开发框架(上)

一、准备

1.Hibernate:

hibernate-distribution-3.3.2.GA,hibernate-annotations-3.4.0.GA

2.Spring:

spring-framework-2.5.5-with-dependencies.zip

3.Struts2:

struts-2.1.6-all.zip

4.Extjs:

ext-3.0.0.zip

另外,数据库使用OracleXE,开发工具使用eclipse-jee-galileo-SR1-win32,Web容器使用apache-tomcat-6.0.14。

二、数据库建表

新建表空间DEMO,新建用户demo、密码demo。

在该表空间中建表HSSEA_DEMO和OBJECT_ID,OBJECT_ID用于存储主键值。

CREATE TABLE HSSEA_DEMO

  ID           NUMBER(10)                       NOT NULL,

  CODE         NVARCHAR2(200)                   NOT NULL,

  DESCRIPTION  NVARCHAR2(200)

);

ALTER TABLE HSSEA_DEMO ADD (

  CONSTRAINT HSSEA_DEMO_PK

 PRIMARY KEY

 (ID));

CREATE TABLE OBJECT_ID

  NAME   VARCHAR2(255 BYTE)                     NOT NULL,

  VALUE  NUMBER(10)                             NOT NULL

);

 

三、新建动态网站

Projectname:

HSSEADemo。

Targetruntime单击New...,弹出框选择ApacheTomcatv6.0,Next,Tomcatinstallationdirectory选择安装tomcat的根目录,Finish。

再一次Finish完成新建动态网站。

 

四、整合Hibernate、Spring

复制以下jar包到项目WebContent\lib下

hibernate-distribution-3.3.2.GA\hibernate3.jar

hibernate-distribution-3.3.2.GA\lib\required目录下所有jar包

hibernate-distribution-3.3.2.GA\lib\optional\c3p0\c3p0-0.9.1.jar

hibernate-annotations-3.4.0.GA\hibernate-annotations.jar

hibernate-annotations-3.4.0.GA\lib目录下的hibernate-commons-annotations.jar、ejb3-persistence.jar

hibernate-annotations-3.4.0.GA\lib\test目录下log4j.jar、slf4j-log4j12.jar

spring-framework-2.5.5\dist\spring.jar

spring-framework-2.5.5\lib\aspectj下所有包

其他还需引入包commons-logging-1.0.4.jar,ojdbc14.jar。

在项目Properties->JavaBuildPath->Libraries,AddJARs...加入所有包。

增加基础服务抽象类,用以完成基本的增删改查操作

package com.xy.service;

import java.io.Serializable;

import java.lang.reflect.ParameterizedType;

import java.util.List;

import java.util.Set;

import javax.annotation.Resource;

import org.apache.log4j.Logger;

import org.hibernate.SessionFactory;

import org.hibernate.criterion.Criterion;

import org.hibernate.criterion.DetachedCriteria;

import org.hibernate.criterion.Order;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**

 * 增删改查分页等基本功能抽象类,使用hibernate做dao层

 * @author xy

 * @date 2009-12-31

 * @param  entity类

 */

public abstract class BaseServiceForHibernate extends HibernateDaoSupport{

    static Logger logger = Logger.getLogger(BaseServiceForHibernate.class.getName());

    //为父类HibernateDaoSupport注入sessionFactory的值

    @Resource(name="sessionFactory")

    public void setSuperSessionFactory(SessionFactory sessionFactory){

        logger.debug("为父类HibernateDaoSupport注入sessionFactory的值["+sessionFactory+"]");

        super.setSessionFactory(sessionFactory);

    }

    private Class entityClass;

    @SuppressWarnings("unchecked")

    public BaseServiceForHibernate(){

        entityClass =(Class) ((ParameterizedType) getClass()

                .getGenericSuperclass()).getActualTypeArguments()[0];

        logger.debug("得到entity对象类实例["+entityClass+"]");

    }

    

    /**

     * 根据对象是否存在ID新增或更新记录

     * @param entity对象

     */

    public void save(T o){

        logger.debug("保存数据,对象:

"+o);

        super.getHibernateTemplate().saveOrUpdate(o);

    }

    

    /**

     * 根据主键删除记录

     * @param 主键

     */

    public void delete(Serializable id){

        logger.debug("根据主键删除数据,主键:

"+id);

        super.getHibernateTemplate().delete(super.getHibernateTemplate().load(entityClass, id));

    }

    

    /**

     * 根据条件查询记录

     * @param 存储条件的容器

     * @return 数据列表

     */

    @SuppressWarnings("unchecked")

    public List query(Set criterionSet){

        logger.debug("根据条件查询数据!

条件数:

"+criterionSet.size());

        DetachedCriteria detachedCriteria = DetachedCriteria.forClass(entityClass);

        for(Criterion o :

 criterionSet){

            detachedCriteria.add(o);

        }

        return super.getHibernateTemplate().findByCriteria(detachedCriteria);

    }

    /**

     * 根据条件查询记录

     * @param 存储条件的容器

     * @param 存储排序的容器

     * @return 数据列表

     */

    @SuppressWarnings("unchecked")

    public List query(Set criterionSet, Set orderSet){

        logger.debug("根据条件和排序查询数据!

条件数:

"+criterionSet.size()+",排序数:

"+orderSet.size());

        DetachedCriteria detachedCriteria = DetachedCriteria.forClass(entityClass);

        for(Criterion o :

 criterionSet){

            detachedCriteria.add(o);

        }

        for(Order o :

 orderSet){

            detachedCriteria.addOrder(o);

        }

        return super.getHibernateTemplate().findByCriteria(detachedCriteria);

    }

    /**

     * 根据条件分页查询记录

     * @param 存储条件的容器

     * @param 数据开始位置(第一条记录为0)

     * @param 最大数据数

     * @return 数据列表

     */

    @SuppressWarnings("unchecked")

    public List query(Set criterionSet, int firstResult, int maxResults){

        logger.debug("根据条件分页查询数据!

条件数:

"+criterionSet.size()+",记录开始序号:

"+firstResult+",最大记录数:

"+maxResults);

        DetachedCriteria detachedCriteria = DetachedCriteria.forClass(entityClass);

        for(Criterion o :

 criterionSet){

            detachedCriteria.add(o);

        }

        return super.getHibernateTemplate().findByCriteria(detachedCriteria, firstResult, maxResults);

    }

    /**

     * 根据条件分页查询记录

     * @param 存储条件的容器

     * @param 存储排序的容器

     * @param 数据开始位置(第一条记录为0)

     * @param 最大数据数

     * @return 数据列表

     */

    @SuppressWarnings("unchecked")

    public List query(Set criterionSet, Set orderSet, int firstResult, int maxResults){

        logger.debug("根据条件和排序分页查询数据!

条件数:

"+criterionSet.size()+",排序数:

"+orderSet.size()+",记录开始序号:

"+firstResult+",最大记录数:

"+maxResults);

        DetachedCriteria detachedCriteria = DetachedCriteria.forClass(entityClass);

        for(Criterion o :

 criterionSet){

            detachedCriteria.add(o);

        }

        for(Order o :

 orderSet){

            detachedCriteria.addOrder(o);

        }

        return super.getHibernateTemplate().findByCriteria(detachedCriteria, firstResult, maxResults);

    }

    /**

     * 根据条件取得记录总数[性能严重问题,需改]

     * @param 存储条件的容器

     * @return 记录总数

     */

    public int totalSize(Set criterionSet){

        logger.debug("根据条件取记录总数!

条件数:

"+criterionSet.size());

        List list = query(criterionSet);

        return list!

=null?

list.size():

0;

    }

    

    /**

     * 根据主键取得数据

     * @param 主键

     * @return entity对象

     */

    @SuppressWarnings("unchecked")

    public T get(Serializable id){

        logger.debug("根据主键删除数据,主键:

"+id);

        return (T)super.getHibernateTemplate().get(entityClass, id);

    }

}

 

增加Demo实体类

package com.xy.entity.demo;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.SequenceGenerator;

import javax.persistence.Table;

import javax.persistence.TableGenerator;

@Entity

@Table(name="HSSEA_DEMO")

public class Demo {

    @Id

    @GeneratedValue(strategy=GenerationType.TABLE, generator="hssea_demo")

    @TableGenerator(name = "hssea_demo",

                    table="OBJECT_ID",

                    pkColumnName="NAME",

                    valueColumnName="VALUE",

                    pkColumnValue="HSSEA_DEMO_PK",

                    initialValue=1,

                    allocationSize=1

    )

    @SequenceGenerator(name="hssea_demo_seq", sequenceName="seq_hssea_demo", allocationSize=1)

    private long id;

    @Column(name="CODE")

    private String code;

    @Column(name="DESCRIPTION")

    private String description;

    public long getId() {

        return id;

    }

    public void setId(long id) {

        this.id = id;

    }

    public String getCode() {

        return code;

    }

    public void setCode(String code) {

        this.code = code;

    }

    public String getDescription() {

        return description;

    }

    public void setDescription(String description) {

        this.description = description;

    }

}

增加DemoService类

package com.xy.service.demo;

import java.util.HashSet;

import java.util.List;

import java.util.Set;

import org.hibernate.criterion.Criterion;

import org.hibernate.criterion.Restrictions;

import org.springframework.stereotype.Service;

import com.xy.entity.demo.Demo;

import com.xy.service.BaseServiceForHibernate;

@Service("demoService")

public class DemoService extends BaseServiceForHibernate {

    /**

     * 根据code取对象

     * @param code

     * @return

     */

    public Demo get(String code){

        Set set = new HashSet();

        set.add(Restrictions.eq("code", code));

        List list = super.query(set);

        if(list!

=null&&list.size()>0){

            return list.get(0);

        }else{

            return null;

        }

    }

}

DemoService中只需关注特殊业务,基本增删改查已由BaseServiceForHibernate完成。

 

在src下增加目录config,并增加四个如下配置文件:

jdbc.properties

db.driverClass=oracle.jdbc.driver.OracleDriver

db.jdbcUrl=jdbc:

oracle:

thin:

@localhost:

1521:

XE

db.user=demo

db.password=demo

applicationContext-resources.xml

xml version="1.0" encoding="UTF-8"?

>

DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

        "http:

//www.springframework.org/dtd/spring-beans.dtd">

    

--properties files -->

    

          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

        

            

                classpath:

config/jdbc.properties

            

        

    

    

-- JNDI DataSource for J2EE environments -->

    

        

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1