我有一个基本要求: 1)需要一个hibernate会话管理器,每次打开和关闭时都会调用它,或者使用session执行任何其他操作。 2)它应该作为hibernate会话的包装器。 3)例如:我创建一个会话实用程序,它一次只允许创建5个会话,如果其中5个已经在使用,我的请求必须等到我回到5个会话之一。
答案 0 :(得分:0)
确实没有必要编写一个特殊的会话管理器来执行此操作,因为您可以利用连接池轻松地为您处理此行为。
您首先需要做的是定义具有最大可用连接数的连接池,在您的情况下, 5 。然后,您希望配置连接池,使其具有合理的等待超时。只需了解此超时在拒绝服务攻击情形中可能会出现问题,因此请自行承担风险。
在正确配置连接池的情况下,如果前5个正在执行需要几秒钟并且第6个请求进入的长时间运行任务,它将等待从池中获取与数据库的连接,然后继续,所以您在任何时候都只能与数据库进行5次并发连接。