CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

网络安全,安全,网络安全设备,信息安全产品,网络安全新闻,信息安全市场分析,黑客攻防,防黑反黑技巧,黑客,网络安全技术,网络安全方案,病毒播报,最新病毒库,攻防技巧,入侵渗透,新闻,思科,Juniper,天融信,瑞星,金山,江民,卡巴斯基,赛门铁克, 趋势,绿盟科技,联想网御,MCAFEE,安氏,冰峰网络,网络入侵,木马,病毒,病毒分析,木马分析,样本分析,木马样本分析,病毒样本分析,杀毒软件

您现在的位置: IT专家网 > 安全子站 > 安全技巧

基于Spring+Ibatis的安全线程实现

作者: 佚名,  出处:CSDN, 责任编辑: 张帅, 
2008-07-04 13:22
  过去做过一些基于spring、hibernate整合应用的实例,本人感觉spring与hibernate最好的结合就是泛型Dao的实现,代码量节省了一半,而且业务逻辑一目了然。

  现在大家也许看到这里觉得就差不多了。该Dao方法差不多全了,可以进行操作了。其实不然,下面我载自官方的一段:

  Spring提供两种方式的编程式事务管理,分别是:使用TransactionTemplate和直接使用PlatformTransactionManager。

  TransactionTempale采用和其他Spring模板,如JdbcTempalte和HibernateTemplate一样的方法。它使用回调方法,把应用程序从处理取得和释放资源中解脱出来。如同其他模板,TransactionTemplate是线程安全的

  所以我们下面我们要再封装一层以实现线程是安全的。这就是我们在spirng_other.xml里面的那段配置实现

    baseService.java 
    package com.base;
    import org.springframework.transaction.support.TransactionTemplate;
    /**
     * 工厂的基础类.
     * @author 刘玉华
     * @time 2007-12-14
     */
    public class BaseService extends TransactionTemplate{
        private static final long serialVersionUID = 1L;
    }

    serviceFactory.java
       package com.base;    
       import org.springframework.beans.factory.BeanFactory;
       import org.springframework.context.support.ClassPathXmlApplicationContext;    
       import com.user.dao.UserDao;    
       /**
        * 数据操作工厂,所有的数据操作都从该工厂中获得。
        * @author 刘玉华
        * @time 2007-12-14
        */    
       public class ServiceFactory {
       private static BeanFactory factory = null;    
       static {
               ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                             new String[] {"spring_base.xml"});
               factory = (BeanFactory) context;
       }        
       /**
        * 获得用户服务类
        * @return 用户服务
        */
       public static UserDao getUserService(){
               return (UserDao) factory.getBean("userService");
       }
       }

  我们所需要做的就是继承Baseservice.java 以实现tx管理

    UserService.java 
    package com.user;
    import java.util.List;

    public interface UserService {
        public User getUser(final String name);
        public void updateUser(final User user);
        public List selectUser();
        public void insertUser(final User user);
    }

  UserServiceImpl.java 用户服务实现类

       package com.user;    
       import java.util.List;    
       import org.springframework.transaction.TransactionStatus;
       import org.springframework.transaction.support.TransactionCallback;
       import com.base.BaseService;
       import com.user.dao.UserDao;
       public class UserServiceImpl extends BaseService implements UserDao {
      private UserDao userDao;
       public UserDao getUserDao() {
               return userDao;
       }
       public void setUserDao(UserDao userDao) {
               this.userDao = userDao;
       }
       public List selectUser() {
               Object obj = execute(new TransactionCallback(){
                      public Object doInTransaction(TransactionStatus status) {
                             return userDao.selectUser();
                      }
               });
                    return (List)obj;
             }
             public User getUser(final String name){
                    Object obj = execute(new TransactionCallback(){
                           public Object doInTransaction(TransactionStatus status) {
                                  // TODO Auto-generated method stub
                                  return userDao.getUser(name);
                           }
                    });
                    return (User) obj;
             }
             public void insertUser(final User user) {
                    Object obj = execute(new TransactionCallback(){
                           public Object doInTransaction(TransactionStatus status) {
                                  userDao.insertUser(user);
                                  return null;
                           }
                    });
             }
             public void updateUser(final User user) {
                    Object obj = execute(new TransactionCallback(){
                          public Object doInTransaction(TransactionStatus arg0) { 
                                  userDao.updateUser(user);
                                  return null;
                           }
                    });
    
             }    
      }

      这样我们就把相关操作实现事务控制了。

  数据表建立:

create table t_user( 
            "id" int null,
           "name" varchar(50) null,
           "sex" int null
        )

  这样我们在以后调用方式为:

  测试类

      package com.user.junit;    
      import java.util.List;    
      import com.base.ServiceFactory;
      import com.user.User;
      import com.user.dao.UserDao;
      import common.Logger;
      public class UserTest {
             private static Logger log = Logger.getLogger(UserTest.class);
             public static void main(String args[]){
                    UserDao service = ServiceFactory.getUserService();
                    User user=null;
                    int i = 4;
                    switch (i) {
                    case 0:
                           user.setId(1);
                           user.setName("444");
                           user.setSex(2);
                           service.updateUser(user);
                           System.out.println(user.getName()+" "+user.getSex());
                           break;
                    case 1:
                           try {
                                  user = service.getUser("2");
                           } catch (Exception e) {
                                  log.debug("出错了"+e.getMessage());
                           }
                           System.out.println(user.getId());
                    case 3:
                           List<User> ls = service.selectUser();
                           for (int j = 0; j < ls.size(); j++) {
                                  System.out.println(ls.get(j).getId()+"===="+ls.get(j).getName());
                           }
                    case 4:
                           List<User> ls1 = service.selectUser();
                           for (int j = 0; j < ls1.size(); j++) {
                                  user = ls1.get(j);
                                  System.out.println(user.getId()+user.getName()+user.getSex()+user.getAddress());
                           }
                           for (int j = 0; j < 100; j++) {
                                  user.setId(user.getId()+1);
                                  service.insertUser(user);
                          }
                  default:
                           break;
                    }
             }
     }

共3页。 9 1 2 3

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    • 解析如何实现自动化的IT安全合规管理评论
      能够解决企业IT、审计和运作团队共同问题的方法一直是企业IT管理者所迫切希望的,自动化的企业合规管理将会及时的发现并掌控企业实际存在的各种问题。
    • 视频讲解:MS Windows系统安全评论
      本文将由7all为IT专家网用户讲解MS Windows操作系统。
    • 浅谈逆向工程在网络安全研究中的运用评论
      从某种程度上来说,计算机软件的逆向工程技术主要过程为分析计算机程序,在分析计算机程序的过程中,逐渐建立起高于源代码级别的更抽象层次的程序运行过程。
    • 评估Vista内核模式的安全性评论
      Windows Vista与之前的MS Windows版本(包括Windows XP SP2)相比增加了很多的安全性。Vista新安全性的特征可以包括驱动签名、PatchGuard、内核模式代码完整性检查等。

天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i