35 条回复  ·  446 次点击
iseki 小成 2024-8-16 09:49:12

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

因为在设计上就没打算让你多线程使用 Session 对象,因为单个会话的数据库操作是不能并发的,支持多线程操作单个会话毫无意义。
Ayanokouji 小成 2024-8-16 10:06:38

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

map 也不是线程安全,是不是也没必要存在了
RandomJoke 小成 2024-8-16 10:36:20

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

1. 本身用公共池的 parallelStream 就不适合处理 io 密集的任务,把 io 任务和计算任务放一起会有很多问题
2. SessionFactory 是线程安全的
3. session 用来处理事务的,和多线程本身就有冲突啊- -
NeroKamin 小成 2024-8-16 10:45:51

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

你想要的是一个能够自动维护管理各线程 session 的东西,而不应该是一个线程安全的 session ,否则就是你对 session 的理解有误
iPisces77 小成 2024-8-16 15:00:51

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

parallelStream()我就用来导入数据,没有任何问题呀
interim 小成 2024-8-16 15:10:13

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

@Vegetable 这就是地图炮的含金量?
lucasdev 小成 2024-8-16 16:05:14

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

我说说个人理解哈:
1. 在 parallelStream 之前,Java 又不是没有多线程,Session 不是线程安全与它老不老掉牙没什么关系吧
2. Session 是用来管理数据库连接和事务的,肯定不能多线程共享,但在每个线程中 openSession 是不是可以满足楼主需求?
3. LINQ providers ,例如 LINQ To SQL 的 DataContext 、Entity Framework 的 DbContext ,和 Session 是类似的概念,它们也不是线程安全的
ZGame 初学 2024-8-16 16:19:31

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

@iintothewind c#的 Linq 不是指查询数据库,Linq to Sql 通过 DataContext  去和数据库连接 ,他应该也不是线程安全的。。
xstarkdylan 小成 2024-8-16 16:20:48

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

这个问题问的、真无趣
ByteFlow 小成 2024-8-16 16:45:31

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

使用 `SqlSessionFactoryBuilder` 默认创建的是 `DefaultSqlSessionFactory`。应该是可以使用另一个实现类 [`SqlSessionManager`]( https://github.com/mybatis/mybatis-3/blob/master/src/main/java/org/apache/ibatis/session/SqlSessionManager.java) 这个类代替的,这个类每次都会获取当前线程绑定的 `SqlSession`,应该是可以完成你说的任务的。这个类网上资料比较少,可以试一下。
返回顶部