在每个微服务中创建会话工厂是否很好?

时间:2018-08-07 12:09:23

标签: hibernate spring-boot

我有3个微服务在不同的端口上运行,我正在使用Spring Boot,Hibernate和Nginx。所以我想在每个微服务中执行数据库操作(CURD),所以我应该在每个微服务中创建会话工厂,还是创建一个单独的微服务来为每个微服务提供会话工厂按需。

2 个答案:

答案 0 :(得分:1)

SessionFactory始终是一个驻留在一个JVM中的对象。因此,如果您有多个具有不同应用程序的JVM进程,则每个进程都必须具有自己的SessionFactory对象。当然有共享这些功能的方法,但是绝对不建议在微服务体系结构中使用它。

答案 1 :(得分:0)

我认为您不应该允许多个微服务访问数据库。 而是创建一个微服务,例如db-handler,它将包含所有的Hibernate代码和DAO。其他微服务可以通过REST调用来调用db-handler来执行各种操作。

这样,您就不必在多个微服务中配置Hibernate。而且,如果您需要更改某些配置或升级Hibernate版本,或者进行与数据库相关的任何更改,那么所有操作都集中在一个地方,因此维护起来会更加容易。当然,只有一个SessionFactory,驻留在db-handler中。