我正在使用hibernate 5.2.10和MySQL数据库。此外,我正在使用C3PO来处理我的连接池。我的C3PO配置如下:
<property name="hibernate.c3p0.min_size">10</property>
<property name="hibernate.c3p0.max_size">50</property>
然而,在我的应用程序中,我有几乎100个线程处理此连接池,通过调用来询问连接:
sessionFactory.openSession();
完成会话后,他们会使用以下内容关闭它:
session.close();
到目前为止应用程序正常运行,但我觉得缺少了一些东西。据我所知,会话号码与连接数有关。那么,如果发生所有100个线程同时调用openSession
,将会发生什么?
此调用会阻塞50个线程(由于我的连接池的最大大小为50),并且在前50个线程完成后它可以逐个继续吗?
50个线程是否会设法获取会话而其他50个线程会抛出异常?
会话编号与连接池中的连接数无关,我可以打开任意数量的会话吗?
我对第一个和第三个选项很好,但这是我害怕的第二个选项。