您的位置:首页 > 其它

Session管理

2016-05-23 16:56 288 查看
一个应用的结构通常是



一个请求就是一个事务,所以不能在dao中打开、关闭session,否则多个dao对应的就不是同一个事务。

模拟session管理,将session放在过滤器中处理:

class TxFilter implements Filter{

puboic void doFilter(request, response, chain){
session = sf.openSession();
Utils.threadLocal.set(session); // 绑定到当前线程上
try{
tx = session.beginTransaction();
chain.doFitler(); // 放行
tx.commit();
}catch(e){
tx.rollback();
throw e;
}finallay{
session.close();
Utils.threadLocal.remove(); // 移除
}

}

}

class UserDao{

public void saveUser(User user){
session = Utils.threadLocal.get();
session.save(user);
}

}

public class Utils {

public static ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: