定时任务统计数据注意事项
做定时任务时的注意事项,比如是做查询数据统计,先查询统计出数据,然后更新统计表里面的数据
当定时任务太多是,可能导致报错。连接泄露,没有被正常关闭
java.lang.Exception: Apparent connection leak detected

注意任务方法的写法,这里以jpa为例
查询语句的方法要加上 @Transactional(readOnly = true)
@Transactional(readOnly = true)
    public List<StatByTwoGroupDTO> getTwoGroupStatData(String sql){
        Query query = null;
        try {
            Session session = entityManager.unwrap(Session.class);
            query = session.createNativeQuery(sql);
            List<Object[]> list = query.getResultList();
       
            return new ArrayList<>(map.values());
        }catch (Exception e){
            LOG.error("----------getTwoGroupStatData error...");
            LOG.error(ExceptionUtils.getExceptionMessage(e));
        }finally {
            if(query != null){
                query = null;
            }
        }
        return null;
    }

//具体的统计方法
@Transactional(rollbackFor = Exception.class)
    @Modifying
    public void doStatAndUpdateDataByTwoGroup(String sql, String dataType){
        List<StatByTwoGroupDTO> groupByQxdmList = getTwoGroupStatData(sql);
        //做更新数据的操作,当要新增数据时,最好用批量保存的方式
    }

  

posted on 2025-04-02 17:18  james-roger  阅读(25)  评论(0)    收藏  举报