关于hibernate session

一般每个请求都有各自独立的session,可以查看ID,都是不一样的

每个session都会起一个缓存,当某个action请求结束后,就可以清楚叼改session的缓存

所有每一个接口的执行过程及缓存为

请求->hibernate从数据库读取相应的数据后会缓存下了, ->  处理过程  -> 处理完成后session.clear()退出该接口请求并清楚缓存



对于事物

事物即为 Transaction ,使用事物时都会把整个数据库给锁住,只有commit()后才会解锁,使用完后得吧session close()掉

			Session session = HibernateSessionFactory.getSession();
			Transaction tran = session.beginTransaction();
			tran.begin();
			MaintainAutostartBo bo = new MaintainAutostartBo();
			bo.setSession(session);
			
			MTPlanAutostart currentAutostartPlan =  (MTPlanAutostart) bo.getById(MTPlanAutostart.class, autostartPlan.getId());
			MTPlan plan = (MTPlan) bo.getById(MTPlan.class, autostartPlan.getPlan().getId());
			Timestamp nowTime = new Timestamp(System.currentTimeMillis());
			//当计划为启用状态,定时开始时间 < 系统当前时间 < 定时结束时间,才分配任务
			if(nowTime.compareTo(currentAutostartPlan.getBeginDate()) == 1 && plan.getState() == 1 && plan.getType()== MTPlan.IS_AUTOSTART &&
					(currentAutostartPlan.getEndDate() == null || nowTime.compareTo(currentAutostartPlan.getEndDate()) == -1)){
				log.info("==========<检修维护>定时任务分配开始");
				bo.AddTaskByAutostart(currentAutostartPlan);
			}
			//检测到该任务已过期,则取消定时任务
			if(plan.getType()== MTPlan.IS_NOI_AUTOSTART ||(currentAutostartPlan.getEndDate() != null && nowTime.compareTo(currentAutostartPlan.getEndDate()) == 1)){
				MtJobController.getInstance().resetJob(plan.getId());
			}			
			
			tran.commit();



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值