35 条回复  ·  441 次点击
summerLast 小成 2024-8-16 17:21:05

hibernate 和 mybatis 的 session 都不是线程安全的,为什么还要用?

您说的有道理,问题是哪些部分是可并行的哪些部分是需要串行的,还有两者如何更好的结合对这个问题会更有帮助,

针对不可并行的任务并性化操作时,框架如果能直接设置当前是否多线程调用,然后进行锁的操作或抛出异常对开发者心智要求也会降低,门槛也会降低,如果框架没有该功能就需要开发者针对自己的场景进行处理,这一切也没那么难,但如果有会更好一些

回到问题为什么还要用 没有更好的替代。
hzgit 小成 2024-8-16 17:25:44

hibernate 和 mybatis 的 session 都不是线程安全的,为什么还要用?

我感觉 LZ 可能搞错问题的方向了,推荐了解下连接池,看看是不是能解决你的问题
Chinsung 小成 2024-8-16 17:50:57

hibernate 和 mybatis 的 session 都不是线程安全的,为什么还要用?

你确定是这俩玩意的问题?
作用域:
单例( Singleton ):在整个应用程序中只创建一个 bean 实例,默认为单例。
原型( Prototype ):每次请求时都会创建一个新的 bean 实例。
会话( Session ):在 Web 应用程序中,每个会话都会创建一个 bean 实例。
请求( Request ):在 Web 应用程序中,每个请求都会创建一个 bean 实例。

你可以试试每次都创新一个新的 hibernate 或者 mybatis 实例来使用,看看到底是哪层的问题

按照你的描述来说,如果是 hibernate 或者 mybatis 不支持多线程使用,不应该是 sql 执行结果不对,而是经常生成的 sql 错误,不是吗?
Plutooo 小成 2024-8-16 20:30:24

hibernate 和 mybatis 的 session 都不是线程安全的,为什么还要用?

难道不是多线程操作数据库本身就破坏了隔离性?
cs419 小成 2024-8-16 22:10:51

hibernate 和 mybatis 的 session 都不是线程安全的,为什么还要用?

众口难调,流行的框架都是面向大众需求的
这种少见的用法 也不是不支持
看了下 mybatis 框架 给你留口子了

接口 SqlSessionFactory 与默认实现 DefaultSqlSessionFactory
SqlSession 与 DefaultSqlSession
自己包一下 就成了
你再发布到仓库 大伙都能用上

就好比 自动填充创建时间、更新时间、多租户等等
mybatis 官方没这些功能
mybatis plus 可以

今天这些框架不支持
明天有没有 session plus 取决于你的执行力
chaoschick 小成 2024-8-17 07:21:57

hibernate 和 mybatis 的 session 都不是线程安全的,为什么还要用?

太年轻了
1234
返回顶部