当前位置: 首页 > news >正文

电子商务网站开发期末考试免费推广平台排行

电子商务网站开发期末考试,免费推广平台排行,网站群建设的目的意义,网站开发合同纠纷是知识产权案件吗三种 SqlSession ​SqlSession​ 是一个接口,并且里面包含了许多 CRUD 操作数据库等方法。 ​SqlSession​​ 它有三个实现类,分别是 SqlSessionManager​​ 、DefaultSqlSession​​ 和 SqlSessionTemplate​​,其中 DefaultSqlSession​​…

三种 SqlSession

SqlSession​ 是一个接口,并且里面包含了许多 CRUD 操作数据库等方法。

SqlSession​​ 它有三个实现类,分别是 SqlSessionManager​​ 、DefaultSqlSession​​ 和 SqlSessionTemplate​​,其中 DefaultSqlSession​​ 它的默认实现类。

DefaultSqlSession 是线程不安全的 Sqlsession 。也就是说 DefaultSqlSession 不能是单例,必须是多例的。

SqlSessionManager​ 和 SqlSessionTemplate​ 是 SqlSession 的代理版,每次新建一个代理对象。姿势都是一样的,但是代理逻辑SqlSessionInterceptor 是不一样的。

代理 DefaultSqlSession 实现复用

在执行 getSqlSession 时,两则都是利用 SessionFactory 工厂创建一个 DefaultSqlSession。然后尽可能复用 DefaultSqlSession,而非多例的每次使用都创建一个 DefaultSqlSession。

SqlSession session = sessionFactory.openSession(executorType);

不同之处在于复用逻辑,先看 SqlSessionTemplate 的:

  1. SqlSessionTemplate ​会将 SqlSession 封装成 SqlSessionHolder,并有利用引用计数法,当 referenceCount>0。表示 SqlSession 还在使用。
  2. 将 sqlSessionHolder 存放到 TransactionSynchronizationManager ​的 synchronizations ​中。synchronizations ​是一个 set 集合。

相对 SqlSessionTemplate 的,SqlSessionManage 的比较简单一点。

  1. SqlSessionManage 内部有一个线程私有变量 localSqlSession。private final ThreadLocal<SqlSession> localSqlSession = new ThreadLocal();
  2. SqlSessionManage 会将 DefaultSqlSession 放入到 ThreadLocal 线程私有的变量 localSqlSession 中
  3. 用的时候先从 localSqlSession 中获取 DefaultSqlSession,如果没有获取到则创建。
SqlSessionManager 的代理逻辑
private SqlSessionManager(){this.sqlSessionProxy = (SqlSession)Proxy.newProxyInstance(SqlSessionFactory.class.getClassLoader(),new Class[]{SqlSession.class}, new SqlSessionInterceptor());
}public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {SqlSession sqlSession = (SqlSession)SqlSessionManager.this.localSqlSession.get();if (sqlSession != null) {return method.invoke(sqlSession, args);} else {SqlSession autoSqlSession = SqlSessionManager.this.openSession();Object var8;try {try {Object result = method.invoke(autoSqlSession, args);autoSqlSession.commit();var8 = result;} catch (Throwable var20) {autoSqlSession.rollback();throw ExceptionUtil.unwrapThrowable(var20);}} catch (Throwable var21) {} finally {if (autoSqlSession != null) {autoSqlSession.close(); }}return var8;}
}
SqlSessionTemplate 的代理逻辑
private SqlSessionTemplate(){this.sqlSessionProxy = (SqlSession)Proxy.newProxyInstance(SqlSessionFactory.class.getClassLoader(), new Class[]{SqlSession.class}, new SqlSessionInterceptor());
}public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {SqlSession sqlSession = SqlSessionUtils.getSqlSession(SqlSessionTemplate.this.sqlSessionFactory, SqlSessionTemplate.this.executorType, SqlSessionTemplate.this.exceptionTranslator);Object unwrapped;try {Object result = method.invoke(sqlSession, args);if (!SqlSessionUtils.isSqlSessionTransactional(sqlSession, SqlSessionTemplate.this.sqlSessionFactory)) {sqlSession.commit(true);}unwrapped = result;} catch (Throwable var11) {unwrapped = ExceptionUtil.unwrapThrowable(var11);if (SqlSessionTemplate.this.exceptionTranslator != null && unwrapped instanceof PersistenceException) {SqlSessionUtils.closeSqlSession(sqlSession, SqlSessionTemplate.this.sqlSessionFactory);sqlSession = null;Throwable translated = SqlSessionTemplate.this.exceptionTranslator.translateExceptionIfPossible((PersistenceException)unwrapped);if (translated != null) {unwrapped = translated;}}throw (Throwable)unwrapped;} finally {if (sqlSession != null) {SqlSessionUtils.closeSqlSession(sqlSession, SqlSessionTemplate.this.sqlSessionFactory);}}return unwrapped;
}

http://www.dt0577.cn/news/16383.html

相关文章:

  • 设置网站域名官网优化包括什么内容
  • 网站注册都需要什么成全高清免费观看mv
  • 个人网站建设价格免费网站推广软件
  • 广安门内网站建设石家庄网站建设seo
  • 中卫网站推广软件成品网站货源1688在线
  • 深圳代理记账行业协会seo快速排名优化
  • 中小企业网站开发沈阳网站seo
  • 安做省民改厅网站seo网站运营
  • 服务商查询东莞百度快照优化排名
  • 企业网站怎么做苏州百度代理公司
  • windows 做网站服务器电脑优化软件哪个好用
  • 大连h5建站模板短视频新媒体推广
  • 东莞品牌型网站建设长沙网站seo优化
  • 利用已有网站 制作社群营销策略有哪些
  • 竟标网站源码网络营销期末考试题库
  • 阜阳网站制作公司报价有什么引流客源的软件
  • 网站图片上的水印怎么做公司关键词seo
  • 做电力招聘的有哪些网站厦门seo计费
  • css网站下拉菜单怎么做网站推广的目的
  • 外卖网站开发seo快速收录快速排名
  • 互联网App网站建设方案公司做网络推广哪个网站好
  • net后缀的可以做网站吗真正免费建站网站
  • 免费二级域名注册网站新东方烹饪学校学费一年多少钱
  • 做响应式网站图片需要做几版seo网络营销技巧
  • 哪里长沙网站开发电商培训大概多少学费
  • 招标网站开发微商怎么找客源人脉
  • 无许可证做新闻网站会怎么样发广告推广平台
  • excel做网站二维码百度推广代理公司哪家好
  • 凡科网做网站能达到什么效果app运营方案
  • php class 做网站武汉网站seo推广