SPL 是否合适在多线程的 Web 访问环境下应用
在 web 多线程访问访问下,因为数据库的连接作为类的变量,不是线程安全资源。在 spring 容器中,访问的时候,不需要加锁,设置为 ThreadLocal 的变量。传统的 JDBC 的连接,就是在该线程下获取线程具备变量,进行 commit,rollback 的操作,这样就可以保证线程安全。
用户通过 JDBC 不是直接访问数据库,而是先访问 SPL 的运算逻辑。这个运算逻辑也处于多线程的环境。
问题
1、用户通过 JDBC 访问 SPL 的时候,在多线程的环境下,结果是否会产生多线程的数据冲突
2、如果在 spl 中,访问数据库,那么在 spring 容器中,已经设置了 @Transactioal,设置了隔离级别及传播机制。那么在 spl 中,如果数据库的隔离级别不一样,会导致什么后果?
最后的结论,spl 是否能运用在基于 Web 多线程的访问环境下?
当然能用于多线程
1、这里有概念要澄清,esproc jdbc 并不支持事务,数据库的事务则需要相应的函数处理
2、spl 没办法直接访问 spring 容器的 @Transaction
3、在 spl 中 connect 数据库,线程安全得由自己写的 Spl 代码保证,可以每个线程里都 connect 数据库