Spring2 Hibernate3 Junit 应用示例

一、目录结构:





二、相关代码:

<1> DAO
package com.xh.hibernate.dao;
public interface DAO {
}
package com.xh.hibernate.dao;
import java.util.List;
import com.xh.hibernate.vo.User;
public interface UserDAO extends DAO {
    public List getUsers();
    public User getUser(Integer userId);
    public void saveUser(User user);
    public void removeUser(Integer userId);
   
    public void updateUser(User user);
}
<2> UserDAOImpl
package com.xh.hibernate.dao.impl;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.xh.hibernate.dao.UserDAO;
import com.xh.hibernate.vo.User;
public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {
    private Log log = LogFactory.getLog(UserDAOImpl. class );
    public List getUsers() {
        return getHibernateTemplate().find( "from User" );
    }
    public User getUser(Integer id) {
        return (User) getHibernateTemplate().get(User. class , id);
    }
    public void saveUser(User user) {
        getHibernateTemplate().saveOrUpdate(user);
       if ( log .isDebugEnabled()) {
           log .debug( "userId set to: " + user.getId());
       }
    }
    public void removeUser(Integer id) {
        Object user = getHibernateTemplate().load(User. class , id);
        getHibernateTemplate().delete(user);
    }
    public void updateUser(User user) {
        getHibernateTemplate().update(user);
       if ( log .isDebugEnabled()) {
           log .debug( "update set to: " + user.getId());
       }
    }
   
}
 

<1> AbstractUser


package com.xh.hibernate.vo;
import java.io.Serializable;
public abstract class AbstractUser implements Serializable {
    private int hashValue = 0;
    private java.lang.Integer id ;
    private java.lang.String firstname ;
    private java.lang.String lastname ;
    public AbstractUser() {
    }
    public AbstractUser(java.lang.Integer id) {
        this .setId(id);
    }
    public java.lang.Integer getId() {
        return id ;
    }
    public void setId(java.lang.Integer id) {
        this . hashValue = 0;
        this . id = id;
    }
    public java.lang.String getFirstname() {
        return this . firstname ;
    }
    public void setFirstname(java.lang.String firstname) {
        this . firstname = firstname;
    }
    public java.lang.String getLastname() {
        return this . lastname ;
    }
    public void setLastname(java.lang.String lastname) {
        this . lastname = lastname;
    }
    public boolean equals(Object rhs) {
       if (rhs == null )
           return false ;
       if (!(rhs instanceof User))
           return false ;
       User that = (User) rhs;
       if ( this .getId() == null || that.getId() == null )
           return false ;
        return ( this .getId().equals(that.getId()));
    }
    public int hashCode() {
       if ( this . hashValue == 0) {
           int result = 17;
           int idValue = this .getId() == null ? 0 : this .getId().hashCode();
           result = result * 37 + idValue;
           this . hashValue = result;
       }
        return this . hashValue ;
    }
}



<2> User

package com.xh.hibernate.vo;
import java.io.Serializable;
public class User extends AbstractUser implements Serializable {
    private static final long serialVersionUID = 7867396135472865699L;
    public User() {
    }
    public User(java.lang.Integer id) {
        super (id);
    }
}

 
<3> User.hbm.xml
<? xml version = "1.0" encoding = "GBK" ?>
<! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
< hibernate-mapping package = "com.xh.hibernate.vo" >
    < class name = "User" table = "user_tab" >
       < id name = "id" column = "id" type = "integer" >
           < generator class = "increment" />
       </ id >
        < property name = "firstname" column = "firstname" type = "string"
           not-null = "true" />
        < property name = "lastname" column = "lastname" type = "string"
           not-null = "true" />
    </ class >
</ hibernate-mapping >

 

<1> UserManager
package com.xh.spring.service;
import java.util.List;
import com.xh.hibernate.vo.User;
public interface UserManager {
    public List getUsers();
    public User getUser(String s);
    public void saveUser(User user);
    public void removeUser(String s);
   
    public void updateUser(User use);
}
<2>、 UserManagerImpl
package com.xh.spring.service.impl;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.xh.hibernate.dao.UserDAO;
import com.xh.hibernate.vo.User;
import com.xh.spring.service.UserManager;
public class UserManagerImpl implements UserManager {
    private static Log log ;
    private UserDAO dao ;
    public UserManagerImpl() {
    }
    public void setUserDAO(UserDAO dao) {
        this . dao = dao;
    }
    public List getUsers() {
        return dao .getUsers();
    }
    public User getUser(String userId) {
        User user = dao .getUser(Integer.valueOf(userId));
        if (user == null )
            log .warn( "userId '" + userId + "' not found in database." );
        return user;
    }
    public void saveUser(User user) {
        dao .saveUser(user);
    }
    public void removeUser(String userId) {
        dao .removeUser(Integer.valueOf(userId));
    }
    public void updateUser(User user) {
        dao .updateUser(user);
    }
    static {
        log = LogFactory
                .getLog(com.xh.spring.service.impl.UserManagerImpl. class );
    }
}
 
<3>UserManagerTest
package com.xh.junit;
import java.util.List;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.xh.hibernate.vo.User;
import com.xh.spring.service.UserManager;
public class UserManagerTest extends TestCase {
    private static Log log = LogFactory.getLog(UserManager. class );
    private ApplicationContext ctx ;
    private User user ;
    private UserManager mgr ;
    protected void setUp() throws Exception {
        String paths[] = { "/applicationContext.xml" };
        ctx = new ClassPathXmlApplicationContext(paths);
        mgr = (UserManager) ctx .getBean( "userManager" );
        super .setUp();
    }
    public void testSaveUser() {
        user = new User();
        user .setFirstname( " 分类 " );
        user .setLastname( " 信息 " );
        mgr .saveUser( user );
        assertNotNull( user .getId());
        if ( log .isDebugEnabled())
            log .debug( "removing user..." );
        String userId = user .getId().toString();
        mgr .removeUser(userId);
        user = mgr .getUser(userId);
        assertNull( "MdlUser object found in database" , user );
    }
    public List testGetUsers() {
        // ...
        return null ;
    }
    public User testGetUser() {
        // ...
        return null ;
    }
    public void testUpdateUser() {
        // ...
    }
    public void testRemoveUser() {
        // ...
    }
    protected void tearDown() throws Exception {
        user = null ;
        mgr = null ;
        super .tearDown();
    }
}
<1> applicationContext.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"
    xmlns:jee = "http://www.springframework.org/schema/jee"
    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"
        destroy-method = "close" >
        < property name = "driverClassName" >
            < value > com.mysql.jdbc.Driver </ value >
        </ property >
        < property name = "url" >
            < value > jdbc:mysql://192.168.3.110:3306/DBName?useUnicode=true &amp; characterEncoding=GBK </ value >
        </ property >
        < property name = "username" >
            < value > root </ value >
        </ property >
        < property name = "password" >
            < value > root </ value >
        </ property >
    </ bean >
    <!-- Hibernate SessionFactory -->
    < bean id = "sessionFactory"
        class = "org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
        < property name = "dataSource" >
            < ref local = "dataSource" />
        </ property >
        < property name = "mappingResources" >
            < list >
                < value > com/xh/hibernate/vo/User.hbm.xml </ value >
            </ list >
        </ property >
        < property name = "hibernateProperties" >
            < props >
                < prop key = "hibernate.dialect" >
                    org.hibernate.dialect.MySQLDialect
                </ prop >
                < prop key = "hibernate.show_sql" > true </ 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.hibernate3.HibernateTransactionManager" >
        < property name = "sessionFactory" >
            < ref local = "sessionFactory" />
        </ property >
    </ bean >
    <!-- Add DAOs here -->
    < bean id = "userDAO"
        class = "com.xh.hibernate.dao.impl.UserDAOImpl" >
        < property name = "sessionFactory" >
            < ref local = "sessionFactory" />
        </ property >
    </ bean >
    <!-- Add Managers here -->
    < bean id = "userManagerTarget"
        class = "com.xh.spring.service.impl.UserManagerImpl" >
        < 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 = "update*" > PROPAGATION_REQUIRED </ prop >
                < prop key = "*" > PROPAGATION_REQUIRED,readOnly </ prop >
            </ props >
        </ property >
    </ bean >
</ beans >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值