Hibernate + Spring是一个多线程应用程序

时间:2016-04-20 13:29:36

标签: java spring multithreading hibernate

我们的想法是构建一个多线程应用程序,每个线程连接到相应的数据库(单独的端口号)。每个线程都会携带一个进程(让我们说有A,B,C和D)并且每个进程可以有多个线程实例(例如,2x A,1x B,0x C和3x D)同时运行。

我主要关注的两个问题是:

  1. 如何在运行时替换SessionFactory's url属性数据库端口?

  2. 如何限制Hibernate Session访问其他帖子的Configuration

  3. 广告1.我发现这个解决方案很简洁: https://spring.io/blog/2007/01/23/dynamic-datasource-routing/。但是,如果应用程序是单线程的,这只能正常工作。否则,进程A和B可能在尝试同时访问数据库时遇到冲突。

    广告2.不确定如何解决这个问题。 Spring是否足够聪明,可以找出要获取的Configuration(最终,哪个数据库URL)对象,以便将其与正确的Thread一起使用?

1 个答案:

答案 0 :(得分:0)

实际上,您可以使用自己的dataSource创建多个sessionFactory。

在运行时,您将发送sessionFacotry Name以从不同数据库获取数据。

SessionFactory sessionFactory=HibernateUtil.getSessionFactory(<sessionFactoryName>)
Session session=sessionFactory.openSession();
      //block of code to execute    
session.close