spring mvc+hibernate 实现事务管理(全注解版)

为了方便项目变大配置文件变多,用注解代替 *.hbm.xml,<bean id="*dao" class="">,另外用反省实现dao操作,省去每个类一个dao,此处参考了鸵鸟的例子。

实现功能跟http://blog.csdn.net/waiwai4701/article/details/38270721这个项目是一样的,controller和页面就不再写


实体类:
  1. package Sand.mas.model;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. import javax.persistence.Column;  
  6. import javax.persistence.Entity;  
  7. import javax.persistence.GeneratedValue;  
  8. import javax.persistence.GenerationType;  
  9. import javax.persistence.Id;  
  10. import javax.persistence.Table;  
  11.   
  12. @Entity  
  13. @Table(name = "tuser")  
  14. public class User implements Serializable {  
  15.     private static final long serialVersionUID = 1L;  
  16.   
  17.     private String id;  
  18.       
  19.     private String userName;  
  20.       
  21.     private String password;  
  22.       
  23.     public User(){  
  24.           
  25.     }  
  26.       
  27.     public User(String userName,String password){  
  28.         this.userName = userName;  
  29.         this.password = password;  
  30.     }  
  31.   
  32.     @Id  
  33.     @GeneratedValue(strategy = GenerationType.IDENTITY)  
  34.     @Column(name = "id", unique = true, nullable = false)  
  35.     public String getId() {  
  36.         return id;  
  37.     }  
  38.   
  39.     public void setId(String id) {  
  40.         this.id = id;  
  41.     }  
  42.   
  43.      @Column(name = "username", length = 20)  
  44.     public String getUserName() {  
  45.         return userName;  
  46.     }  
  47.   
  48.     public void setUserName(String userName) {  
  49.         this.userName = userName;  
  50.     }  
  51.       
  52.     @Column(name = "password", length = 20)  
  53.     public String getPassword() {  
  54.         return password;  
  55.     }  
  56.   
  57.     public void setPassword(String password) {  
  58.         this.password = password;  
  59.     }  
  60.   
  61.     public String toString(){  
  62.           
  63.         return "user:id="+id+",userName="+userName+",password="+password;  
  64.     }  
  65.       
  66. }  

一些基础用于扩展的东西:

BaseDao

  1. package Sand.mas.sys;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5.   
  6. public interface BaseDao<T> {  
  7.   
  8.   
  9.     /** 
  10.      * 保存一个对象 
  11.      *  
  12.      * @param o 
  13.      * @return 
  14.      */  
  15.     public Serializable save(T o);  
  16.   
  17.     /** 
  18.      * 删除一个对象 
  19.      *  
  20.      * @param o 
  21.      */  
  22.     public void delete(T o);  
  23.   
  24.     /** 
  25.      * 更新一个对象 
  26.      *  
  27.      * @param o 
  28.      */  
  29.     public void update(T o);  
  30.   
  31.     /** 
  32.      * 保存或更新对象 
  33.      *  
  34.      * @param o 
  35.      */  
  36.     public void saveOrUpdate(T o);  
  37.   
  38.     /** 
  39.      * 查询 
  40.      *  
  41.      * @param hql 
  42.      * @return 
  43.      */  
  44.     public List<T> find(String hql);  
  45.   
  46.     /** 
  47.      * 查询集合 
  48.      *  
  49.      * @param hql 
  50.      * @param param 
  51.      * @return 
  52.      */  
  53.     public List<T> find(String hql, Object[] param);  
  54.   
  55.     /** 
  56.      * 查询集合 
  57.      *  
  58.      * @param hql 
  59.      * @param param 
  60.      * @return 
  61.      */  
  62.     public List<T> find(String hql, List<Object> param);  
  63.   
  64.     /** 
  65.      * 查询集合(带分页) 
  66.      *  
  67.      * @param hql 
  68.      * @param param 
  69.      * @param page 
  70.      *            查询第几页 
  71.      * @param rows 
  72.      *            每页显示几条记录 
  73.      * @return 
  74.      */  
  75.     public List<T> find(String hql, Object[] param, Integer page, Integer rows);  
  76.   
  77.     /** 
  78.      * 查询集合(带分页) 
  79.      *  
  80.      * @param hql 
  81.      * @param param 
  82.      * @param page 
  83.      * @param rows 
  84.      * @return 
  85.      */  
  86.     public List<T> find(String hql, List<Object> param, Integer page, Integer rows);  
  87.   
  88.     /** 
  89.      * 获得一个对象 
  90.      *  
  91.      * @param c 
  92.      *            对象类型 
  93.      * @param id 
  94.      * @return Object 
  95.      */  
  96.     public T get(Class<T> c, Serializable id);  
  97.   
  98.     /** 
  99.      * 获得一个对象 
  100.      *  
  101.      * @param hql 
  102.      * @param param 
  103.      * @return Object 
  104.      */  
  105.     public T get(String hql, Object[] param);  
  106.   
  107.     /** 
  108.      * 获得一个对象 
  109.      *  
  110.      * @param hql 
  111.      * @param param 
  112.      * @return 
  113.      */  
  114.     public T get(String hql, List<Object> param);  
  115.   
  116.     /** 
  117.      * select count(*) from 类 
  118.      *  
  119.      * @param hql 
  120.      * @return 
  121.      */  
  122.     public Long count(String hql);  
  123.   
  124.     /** 
  125.      * select count(*) from 类 
  126.      *  
  127.      * @param hql 
  128.      * @param param 
  129.      * @return 
  130.      */  
  131.     public Long count(String hql, Object[] param);  
  132.   
  133.     /** 
  134.      * select count(*) from 类 
  135.      *  
  136.      * @param hql 
  137.      * @param param 
  138.      * @return 
  139.      */  
  140.     public Long count(String hql, List<Object> param);  
  141.   
  142.     /** 
  143.      * 执行HQL语句 
  144.      *  
  145.      * @param hql 
  146.      * @return 响应数目 
  147.      */  
  148.     public Integer executeHql(String hql);  
  149.   
  150.     /** 
  151.      * 执行HQL语句 
  152.      *  
  153.      * @param hql 
  154.      * @param param 
  155.      * @return 响应数目 
  156.      */  
  157.     public Integer executeHql(String hql, Object[] param);  
  158.   
  159.     /** 
  160.      * 执行HQL语句 
  161.      *  
  162.      * @param hql 
  163.      * @param param 
  164.      * @return 
  165.      */  
  166.     public Integer executeHql(String hql, List<Object> param);  
  167.   
  168.   
  169. }  

BaseDao实现类BaseDaoImpl
  1. package Sand.mas.sys;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5.   
  6. import org.hibernate.Query;  
  7. import org.hibernate.Session;  
  8. import org.springframework.beans.factory.annotation.Autowired;  
  9. import org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean;  
  10. import org.springframework.stereotype.Repository;  
  11.   
  12. @Repository("baseDao")  
  13. public class BaseDaoImpl<T> implements BaseDao<T> {  
  14.       
  15.       
  16.     private AnnotationSessionFactoryBean sessionFactory;//注意是AnnotationSessionFactoryBean  
  17.       
  18.     public AnnotationSessionFactoryBean getSessionFactory() {  
  19.         return sessionFactory;  
  20.     }  
  21.   
  22.     @Autowired  
  23.     public void setSessionFactory(AnnotationSessionFactoryBean sessionFactory) {  
  24.         this.sessionFactory = sessionFactory;  
  25.     }  
  26.       
  27.     private Session getCurrentSession(){  
  28.         return sessionFactory.getObject().getCurrentSession();//还是可以得到session  
  29.     }  
  30.   
  31.     public Serializable save(T o) {  
  32.         return this.getCurrentSession().save(o);  
  33.     }  
  34.   
  35.     public void delete(T o) {  
  36.         this.getCurrentSession().delete(o);  
  37.           
  38.     }  
  39.   
  40.     public void update(T o) {  
  41.         this.getCurrentSession().update(o);  
  42.           
  43.     }  
  44.   
  45.     public void saveOrUpdate(T o) {  
  46.         this.getCurrentSession().saveOrUpdate(o);  
  47.           
  48.     }  
  49.   
  50.     @SuppressWarnings("unchecked")  
  51.     public List<T> find(String hql) {  
  52.           
  53.         return this.getCurrentSession().createQuery(hql).list();  
  54.     }  
  55.   
  56.     @SuppressWarnings("unchecked")  
  57.     public List<T> find(String hql, Object[] param) {  
  58.         Query q = this.getCurrentSession().createQuery(hql);  
  59.         if(param != null && param.length > 0){  
  60.             for(int i = 0;i<param.length;i++){  
  61.                 q.setParameter(i, param[i]);  
  62.             }  
  63.         }  
  64.         return q.list();  
  65.     }  
  66.   
  67.     @SuppressWarnings("unchecked")  
  68.     public List<T> find(String hql, List<Object> param) {  
  69.         Query q = this.getCurrentSession().createQuery(hql);  
  70.         if(param != null && param.size() > 0){  
  71.             for(int i = 0;i<param.size();i++){  
  72.                 q.setParameter(i, param.get(i));  
  73.             }  
  74.         }  
  75.         return q.list();  
  76.     }  
  77.   
  78.     @SuppressWarnings("unchecked")  
  79.     public List<T> find(String hql, Object[] param, Integer page, Integer rows) {  
  80.         if(page == null || page < 1){  
  81.             page = 1;  
  82.         }  
  83.         if(rows == null || rows < 1){  
  84.             rows = 10;  
  85.         }  
  86.           
  87.         Query q = this.getCurrentSession().createQuery(hql);  
  88.           
  89.         if(param != null && param.length > 0 ){  
  90.             for(int i = 0;i< param.length;i++){  
  91.                 q.setParameter(i, param[i]);  
  92.             }  
  93.         }  
  94.         return q.setFirstResult((page-1)*rows).setMaxResults(rows).list();  
  95.     }  
  96.   
  97.     @SuppressWarnings("unchecked")  
  98.     public List<T> find(String hql, List<Object> param, Integer page,Integer rows) {  
  99.         if (page == null || page < 1) {  
  100.             page = 1;  
  101.         }  
  102.         if (rows == null || rows < 1) {  
  103.             rows = 10;  
  104.         }  
  105.         Query q = this.getCurrentSession().createQuery(hql);  
  106.         if (param != null && param.size() > 0) {  
  107.             for (int i = 0; i < param.size(); i++) {  
  108.                 q.setParameter(i, param.get(i));  
  109.             }  
  110.         }  
  111.         return q.setFirstResult((page - 1) * rows).setMaxResults(rows).list();  
  112.     }  
  113.   
  114.     @SuppressWarnings("unchecked")  
  115.     public T get(Class<T> c, Serializable id) {  
  116.         return (T)this.getCurrentSession().get(c , id);  
  117.     }  
  118.   
  119.     public T get(String hql, Object[] param) {  
  120.         List<T> l = this.find(hql, param);  
  121.         if(l != null && l.size() > 0){  
  122.             return l.get(0);  
  123.         }else{  
  124.             return null;  
  125.         }  
  126.     }  
  127.   
  128.     public T get(String hql, List<Object> param) {  
  129.         List<T> l = this.find(hql, param);  
  130.         if (l != null && l.size() > 0) {  
  131.             return l.get(0);  
  132.         } else {  
  133.             return null;  
  134.         }  
  135.     }  
  136.   
  137.     public Long count(String hql) {  
  138.         return (Long)this.getCurrentSession().createQuery(hql).uniqueResult();  
  139.     }  
  140.   
  141.     public Long count(String hql, Object[] param) {  
  142.         Query q = this.getCurrentSession().createQuery(hql);  
  143.         if (param != null && param.length > 0) {  
  144.             for (int i = 0; i < param.length; i++) {  
  145.                 q.setParameter(i, param[i]);  
  146.             }  
  147.         }  
  148.         return (Long) q.uniqueResult();  
  149.     }  
  150.   
  151.     public Long count(String hql, List<Object> param) {  
  152.         Query q = this.getCurrentSession().createQuery(hql);  
  153.         if (param != null && param.size() > 0) {  
  154.             for (int i = 0; i < param.size(); i++) {  
  155.                 q.setParameter(i, param.get(i));  
  156.             }  
  157.         }  
  158.         return (Long) q.uniqueResult();  
  159.     }  
  160.   
  161.     public Integer executeHql(String hql) {  
  162.         return this.getCurrentSession().createQuery(hql).executeUpdate();  
  163.     }  
  164.   
  165.     public Integer executeHql(String hql, Object[] param) {  
  166.         Query q = this.getCurrentSession().createQuery(hql);  
  167.         if (param != null && param.length > 0) {  
  168.             for (int i = 0; i < param.length; i++) {  
  169.                 q.setParameter(i, param[i]);  
  170.             }  
  171.         }  
  172.         return q.executeUpdate();  
  173.     }  
  174.   
  175.     public Integer executeHql(String hql, List<Object> param) {  
  176.         Query q = this.getCurrentSession().createQuery(hql);  
  177.         if (param != null && param.size() > 0) {  
  178.             for (int i = 0; i < param.size(); i++) {  
  179.                 q.setParameter(i, param.get(i));  
  180.             }  
  181.         }  
  182.         return q.executeUpdate();  
  183.     }  
  184.   
  185. }  

BaseService:
  1. package Sand.mas.sys;  
  2.   
  3. public interface BaseService {  
  4. //也就是直接性的什么都没有,只为了实现类节省每个扩展service的@transaction  
  5. }  

实现类 BaseServiceImpl:
  1. package Sand.mas.sys;  
  2.   
  3. import org.springframework.stereotype.Service;  
  4. import org.springframework.transaction.annotation.Propagation;  
  5. import org.springframework.transaction.annotation.Transactional;  
  6.   
  7. @Service("baseService")  
  8. @Transactional(readOnly = false,propagation = Propagation.REQUIRED,rollbackFor = Exception.class)  
  9. public class BaseServiceImpl implements BaseService{  
  10.   
  11. }  

UserService:
  1. package Sand.mas.service;  
  2.   
  3. public interface UserService {  
  4.   
  5.     public void test();  
  6. }  
UserServiceImpl:
  1. package Sand.mas.service.impl;  
  2.   
  3.   
  4. import org.springframework.beans.factory.annotation.Autowired;  
  5. import org.springframework.stereotype.Service;  
  6. import org.springframework.transaction.annotation.Transactional;  
  7.   
  8. import Sand.mas.model.User;  
  9. import Sand.mas.service.UserService;  
  10. import Sand.mas.sys.BaseDao;  
  11. import Sand.mas.sys.BaseServiceImpl;  
  12.   
  13.   
  14. @Service("userService")  
  15. public class UserServiceImpl extends BaseServiceImpl implements UserService{  
  16.       
  17.     private BaseDao<User> userDao;//看到妙处没  
  18.       
  19.     public BaseDao<User> getUserDao() {  
  20.         return userDao;  
  21.     }  
  22.     @Autowired  
  23.     public void setUserDao(BaseDao<User> userDao) {  
  24.         this.userDao = userDao;  
  25.     }  
  26.   
  27.     @Transactional(rollbackFor=Exception.class)  
  28.     public void test() {  
  29.         User user1 = new User("zhangsan","111111");  
  30.           
  31.         User user2 = new User("lisi","222222222222222222222222222222");  
  32.           
  33.         userDao.save(user1);  
  34.         System.out.println("user1 success");  
  35.           
  36.         userDao.save(user2);  
  37.         System.out.println("user2 success");  
  38.           
  39.     }  
  40.   
  41.       
  42. }  

最后,配置文件,折腾了姐好久
  1. <?xml version="1.0" encoding="UTF-8" ?>    
  2. <beans xmlns="http://www.springframework.org/schema/beans"    
  3.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  4.         xmlns:context="http://www.springframework.org/schema/context"    
  5.         xmlns:mvc="http://www.springframework.org/schema/mvc"    
  6.         xmlns:cache="http://www.springframework.org/schema/cache"  
  7.          xmlns:tx="http://www.springframework.org/schema/tx"  
  8.         xsi:schemaLocation="    
  9.           http://www.springframework.org/schema/beans    
  10.           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd    
  11.           http://www.springframework.org/schema/context    
  12.           http://www.springframework.org/schema/context/spring-context-3.2.xsd    
  13.           http://www.springframework.org/schema/mvc        
  14.           http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd  
  15.           http://www.springframework.org/schema/tx  
  16.           http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
  17.           http://www.springframework.org/schema/cache   
  18.           http://www.springframework.org/schema/cache/spring-cache-3.2.xsd">  
  19.   <!--扫描的包-->  
  20.   <context:component-scan base-package="Sand.mas"/>  
  21.   <!--注解支持-->  
  22.   <mvc:annotation-driven/>  
  23.   <!--视图解析-->  
  24.   <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">   
  25.         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>    
  26.         <property name="prefix" value="/pages/"/>    
  27.         <property name="suffix" value=".jsp"/>   
  28.   </bean>   
  29.   <!--静态文件的访问-->  
  30.   <mvc:resources mapping="/images/**" location="/images/" cache-period="31556926"/>  
  31.   <mvc:resources mapping="/common/**" location="/common/" cache-period="31556926"/>   
  32.   <mvc:resources mapping="/jslib/**" location="/jslib/" cache-period="31556926"/>   
  33.   <mvc:resources mapping="/css/**" location="/css/" cache-period="31556926"/>   
  34.   <mvc:resources mapping="/js/**" location="/js/" cache-period="31556926"/>    
  35.     
  36.   <!-- 支持json返回 -->  
  37.   <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">        
  38.         <property name="messageConverters">        
  39.             <list >        
  40.                 <ref bean="mappingJacksonHttpMessageConverter" />        
  41.             </list>        
  42.         </property>        
  43.     </bean>    
  44.   
  45.     <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">      
  46.     <property name="supportedMediaTypes">      
  47.         <list>      
  48.             <value>application/json;charset=UTF-8</value>      
  49.        </list>      
  50.     </property>    
  51.     </bean>   
  52.         <bean id="dataSource"   
  53.             class="org.apache.commons.dbcp.BasicDataSource">   
  54.              <property name="driverClassName"   
  55.                  value="com.mysql.jdbc.Driver">   
  56.              </property>   
  57.              <property name="url" value="jdbc:mysql://localhost:3306/test"></property>   
  58.            <property name="username" value="root"/>  
  59.            <property name="password" value=""/>  
  60.         </bean>   
  61.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><!--注解专用session -->  
  62.         <property name="dataSource">  
  63.             <ref bean="dataSource" />  
  64.         </property>  
  65.         <property name="hibernateProperties">  
  66.             <props>  
  67.                 <prop key="hibernate.dialect">  
  68.                     org.hibernate.dialect.MySQLDialect   
  69.                 </prop>  
  70.                 <prop key="hibernate.show_sql">true</prop>   
  71.             </props>  
  72.         </property>  
  73.           
  74.          <property name="annotatedClasses"><!--看,mappingresource消失了 -->  
  75.             <list>  
  76.                 <value>Sand.mas.model.User</value>  
  77.             </list>  
  78.           </property>  
  79.     </bean>  
  80.   
  81.     <!-- 配置事务管理器bean,使用HibernateTransactionManager事务管理器 -->  
  82.     <bean id="transactionManager"  
  83.         class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  84.             <!-- 为事务管理器注入sessionFactory" -->  
  85.             <property name="sessionFactory" ref="sessionFactory"/>  
  86.     </bean>  
  87.     <!-- 注解实现事务 -->  
  88.      <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />  
  89. </beans>  
源码下载地址:http://download.csdn.net/detail/waiwai4701/7833547

ps,jar包支持:

为了方便jar包管理采用maven技术,服务器没有用tomcat用的jetty,不要在意这些细节

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   
  5.   <groupId>Sand</groupId>  
  6.   <artifactId>mas</artifactId>  
  7.   <version>0.0.1-SNAPSHOT</version>  
  8.   <packaging>jar</packaging>  
  9.   
  10.   <name>mas</name>  
  11.   <url>http://maven.apache.org</url>  
  12.   
  13.   
  14.     
  15.    <properties>  
  16.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  17.     <spring.version>3.2.5.RELEASE</spring.version>  
  18.     <curator_version>1.1.16</curator_version>  
  19.     <slf4j_version>1.6.2</slf4j_version>  
  20.     <jcl_version>1.1</jcl_version>  
  21.     <log4j_version>1.2.16</log4j_version>  
  22.     <jetty.version>8.1.8.v20121106</jetty.version>  
  23.   </properties>  
  24.   
  25.   <dependencies>  
  26.     <dependency>  
  27.       <groupId>junit</groupId>  
  28.       <artifactId>junit</artifactId>  
  29.       <version>3.8.1</version>  
  30.       <scope>test</scope>  
  31.     </dependency>  
  32.     <dependency>  
  33.       <groupId>org.jdom</groupId>  
  34.       <artifactId>jdom</artifactId>  
  35.       <version>1.1.3</version>  
  36.     </dependency>  
  37.       
  38.         <dependency>  
  39.             <groupId>org.slf4j</groupId>  
  40.             <artifactId>slf4j-api</artifactId>  
  41.             <version>${slf4j_version}</version>  
  42.         </dependency>  
  43.         <dependency>  
  44.             <groupId>org.slf4j</groupId>  
  45.             <artifactId>jcl-over-slf4j</artifactId>  
  46.             <version>${slf4j_version}</version>  
  47.         </dependency>  
  48.         <dependency>  
  49.             <groupId>org.slf4j</groupId>  
  50.             <artifactId>slf4j-log4j12</artifactId>  
  51.             <version>${slf4j_version}</version>  
  52.         </dependency>  
  53.         <dependency>  
  54.             <groupId>log4j</groupId>  
  55.             <artifactId>log4j</artifactId>  
  56.             <version>${log4j_version}</version>  
  57.         </dependency>  
  58.         <!-- springframework -->  
  59.         <dependency>  
  60.             <groupId>org.springframework</groupId>  
  61.             <artifactId>spring-web</artifactId>  
  62.             <version>3.2.5.RELEASE</version>  
  63.             <exclusions>  
  64.                 <exclusion>  
  65.                     <groupId>commons-logging</groupId>  
  66.                     <artifactId>commons-logging</artifactId>  
  67.                 </exclusion>  
  68.             </exclusions>  
  69.         </dependency>  
  70.       
  71.     <!-- for jetty -->  
  72.     <dependency>  
  73.       <groupId>org.eclipse.jetty</groupId>  
  74.       <artifactId>jetty-server</artifactId>  
  75.       <version>${jetty.version}</version>  
  76.     </dependency>  
  77.       
  78.     <dependency>  
  79.       <groupId>org.eclipse.jetty</groupId>  
  80.       <artifactId>jetty-util</artifactId>  
  81.       <version>${jetty.version}</version>  
  82.     </dependency>  
  83.       
  84.     <dependency>  
  85.       <groupId>org.eclipse.jetty</groupId>  
  86.       <artifactId>jetty-xml</artifactId>  
  87.       <version>${jetty.version}</version>  
  88.     </dependency>  
  89.       
  90.     <dependency>  
  91.       <groupId>org.eclipse.jetty</groupId>  
  92.       <artifactId>jetty-webapp</artifactId>  
  93.       <version>${jetty.version}</version>  
  94.     </dependency>  
  95.     <dependency>    
  96.         <groupId>org.eclipse.jetty</groupId>    
  97.         <artifactId>jetty-jsp</artifactId>    
  98.         <version>${jetty.version}</version>    
  99.     </dependency>    
  100.      <!-- spring mvc -->  
  101.     <dependency>    
  102.       <groupId>org.springframework</groupId>    
  103.       <artifactId>spring-web</artifactId>    
  104.       <version>3.2.5.RELEASE</version>    
  105.     </dependency>    
  106.       
  107.     <dependency>    
  108.        <groupId>org.springframework</groupId>    
  109.        <artifactId>spring-webmvc</artifactId>    
  110.        <version>3.2.5.RELEASE</version>    
  111.     </dependency>   
  112.     <dependency>    
  113.        <groupId>org.springframework</groupId>    
  114.        <artifactId>spring-orm</artifactId>    
  115.        <version>3.2.5.RELEASE</version>    
  116.     </dependency>   
  117.     <dependency>  
  118.         <groupId>javax.servlet.jsp.jstl</groupId>  
  119.         <artifactId>jstl-api</artifactId>  
  120.         <version>1.2-rev-1</version>  
  121.     </dependency>  
  122.       
  123.      <dependency>    
  124.         <groupId>javax.servlet</groupId>    
  125.         <artifactId>jstl</artifactId>    
  126.         <version>1.2</version>    
  127.         <scope>runtime</scope>    
  128.      </dependency>    
  129.      <dependency>  
  130.             <groupId>taglibs</groupId>  
  131.             <artifactId>standard</artifactId>  
  132.             <version>1.1.2</version>  
  133.      </dependency>  
  134.       
  135.     <dependency>    
  136.         <groupId>org.codehaus.jackson</groupId>    
  137.         <artifactId>jackson-core-lgpl</artifactId>    
  138.         <version>1.9.6</version>    
  139.     </dependency>    
  140.     <dependency>    
  141.         <groupId>org.codehaus.jackson</groupId>    
  142.         <artifactId>jackson-core-asl</artifactId>    
  143.         <version>1.9.4</version>    
  144.     </dependency>    
  145.     <dependency>    
  146.         <groupId>org.codehaus.jackson</groupId>    
  147.         <artifactId>jackson-mapper-asl</artifactId>    
  148.         <version>1.9.5</version>    
  149.     </dependency>    
  150.     <dependency>    
  151.       <groupId>org.codehaus.jackson</groupId>    
  152.       <artifactId>jackson-mapper-lgpl</artifactId>    
  153.       <version>1.9.6</version>    
  154.     </dependency>    
  155.     <!-- memcached -->  
  156.     <dependency>  
  157.         <groupId>com.danga</groupId>  
  158.         <artifactId>java-memcached</artifactId>  
  159.         <version>2.6.6</version>  
  160.     </dependency>  
  161.     <!-- hibernate -->  
  162.     <dependency>  
  163.         <groupId>org.hibernate</groupId>  
  164.         <artifactId>hibernate</artifactId>  
  165.         <version>3.3.2</version>  
  166.     </dependency>  
  167.     <!-- mysql -->  
  168.      <dependency>  
  169.         <groupId>mysql</groupId>  
  170.         <artifactId>mysql-connector-java</artifactId>  
  171.         <version>5.1.21</version>  
  172.     </dependency>  
  173.     <!-- oracle -->  
  174.     <dependency>  
  175.         <groupId>oracle</groupId>  
  176.         <artifactId>ojdbc</artifactId>  
  177.         <version>14</version>  
  178.     </dependency>       
  179.     <!-- datasource -->  
  180.     <dependency>  
  181.         <groupId>commons-dbcp</groupId>  
  182.         <artifactId>commons-dbcp</artifactId>  
  183.         <version>1.4</version>  
  184.     </dependency>  
  185.     <!-- jta -->  
  186.     <dependency>  
  187.         <groupId>javax.transaction</groupId>  
  188.         <artifactId>jta</artifactId>  
  189.         <version>1.1</version>  
  190.     </dependency>  
  191.     <!-- dom4j -->  
  192.     <dependency>  
  193.        <groupId>dom4j</groupId>  
  194.         <artifactId>dom4j</artifactId>  
  195.        <version>1.6.1</version>  
  196.     </dependency>  
  197.     <!-- commons-collections -->  
  198.     <dependency>  
  199.         <groupId>commons-collections</groupId>  
  200.         <artifactId>commons-collections</artifactId>  
  201.         <version>3.1</version>  
  202.     </dependency>  
  203.     <!-- javaassist -->  
  204.      <dependency>  
  205.       <groupId>javassist</groupId>  
  206.       <artifactId>javassist</artifactId>  
  207.       <version>3.9.0</version>  
  208.     </dependency>  
  209.     <!-- hibernate-annotation -->  
  210.    
  211.      <dependency>  
  212.       <groupId>javax.persistence</groupId>  
  213.       <artifactId>persistence-api</artifactId>  
  214.       <version>1.0</version>  
  215.     </dependency>  
  216.     <dependency>  
  217.       <groupId>org.hibernate</groupId>  
  218.       <artifactId>hibernate-annotations</artifactId>  
  219.       <version>3.4.0.GA</version>  
  220.     </dependency>  
  221.     <dependency>  
  222.        <groupId>org.hibernate</groupId>  
  223.        <artifactId>hibernate-commons-annotations</artifactId>  
  224.        <version>3.3.0.ga</version>  
  225.     </dependency>  
  226.      <dependency>  
  227.        <groupId>org.hibernate</groupId>  
  228.        <artifactId>ejb3-persistence</artifactId>  
  229.        <version>1.0.2.GA</version>  
  230.     </dependency>  
  231.   </dependencies>  
  232. </project>  



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值