您的位置:首页 > 编程语言 > Java开发

eclipse下struts+spring+hibernate快速入门(2)

2006-10-24 15:43 471 查看
 
创建业务层,声明事务
  业务层主要处理业务逻辑,提供给web层友好的访问接口和实现访问DAO层。用业务层的另一个好处是,可以适应数据访问层从Hibernate技术转移到其他数据访问技术。
1. 在src/com.jandar.service下新建一个IUserManager接口,该接口有几乎于IUserDAO同样的方法,不同的是处理参数,应为IUserManager是供web层访问的。
   public interface IUserManager {           
       User getUser(String userid); 
       List getUsers();
       User saveUser(User user);
       void removeUser(String userid);
}
2. 在src/com.jandar.service.spring下新建IuserManager实现类,UserManager.java
   /*
 * 创建日期 2005-3-4
 *
 * TODO 要更改此生成的文件的模板,请转至
 * 窗口 - 首选项 - wuhuif - 代码样式 - 代码模板
 */
package com.jandar.service.spring;

import wuhuif.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.jandar.model.User;
import com.jandar.service.IUserManager;
import com.jandar.service.dao.IUserDAO;

/**
 * @author Administrator
 *
 * TODO 要更改此生成的类型注释的模板,请转至
 * 窗口 - 首选项 - wuhuif - 代码样式 - 代码模板
 */
public class UserManagerImpl implements IUserManager {

       /* (非 Javadoc)
        * @see com.jandar.service.IUserManager#getUser(java.lang.String)
        */
       private static Log log=LogFactory.getLog(UserManagerImpl.class);
       public IUserDAO userDao;
      
       /**
        * @return 返回 userDao。
        */
       public IUserDAO getUserDao() {
              return userDao;
       }
       /**
        * @param userDao 要设置的 userDao。
        */
       public void setUserDao(IUserDAO userDao) {
              this.userDao = userDao;
       }
       public User getUser(String userid) {
             
              User user=userDao.getUser(Integer.valueOf(userid));
              if(user==null){
                     log.warn(" user id "+userid+" not found in database");
              }
              if(log.isDebugEnabled()){
                     log.debug("get a user with id "+userid);
              }
              return user;
       }

       /* (非 Javadoc)
        * @see com.jandar.service.IUserManager#getUsers()
        */
       public List getUsers() {
              // TODO 自动生成方法存根
              return userDao.getUsers();
       }

       /* (非 Javadoc)
        * @see com.jandar.service.IUserManager#saveUser(com.jandar.model.User)
        */
       public User saveUser(User user) {
              // TODO 自动生成方法存根
              userDao.saveUser(user);
              return user;
       }

       /* (非 Javadoc)
        * @see com.jandar.service.IUserManager#removeUser(java.lang.String)
        */
       public void removeUser(String userid) {
              // TODO 自动生成方法存根
              userDao.removeUser(Integer.valueOf(userid));

       }

}
UserManager.java通过访问dao接口实现业务逻辑和数据库操作。同时该类中提供了set方法,运用了Spring的依赖注入机制。但尚未使用spring的AOP和声明事务。
配置applicationContext.xml
在WEB-INF 下新建applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName"><value>org.hsqldb.jdbcDriver</value></property>
        <property name="url"><value>jdbc:hsqldb:db/appfuse</value></property>
        <property name="username"><value>sa</value></property>
        <!-- Make sure <value> tags are on same line - if they're not,
             authentication will fail -->
        <property name="password"><value></value></property>
    </bean>

    <!-- Hibernate SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
        <property name="dataSource"><ref local="dataSource"/></property>
        <property name="mappingResources">
            <list>
                <value>com/jandar/model/User.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">net.sf.hibernate.dialect.HSQLDialect</prop>
            <prop key="hibernate.hbm2ddl.auto">create</prop>
        </props>
        </property>
    </bean>

    <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
        <property name="sessionFactory"><ref local="sessionFactory"/></property>
    </bean>

    <bean id="userDAO" class="com.jandar.dao.hibernate.UserDAOHibernate">
        <property name="sessionFactory"><ref local="sessionFactory"/></property>
    </bean>   

    <bean id="userManagerTarget" class="com.jandar.service.spring.UserManager">
        <property name="userDAO"><ref local="userDAO"/></property>
    </bean>

    <bean id="userManager"
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager"><ref local="transactionManager"/></property>
        <property name="target"><ref local="userManagerTarget"/></property>
        <property name="transactionAttributes">
            <props>
                <prop key="save*">PROPAGATION_REQUIRED</prop>
                <prop key="remove*">PROPAGATION_REQUIRED</prop>
                <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>
    </bean>

</beans>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=332670  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息