我有3个微服务在不同的端口上运行,我正在使用Spring Boot,Hibernate和Nginx。所以我想在每个微服务中执行数据库操作(CURD),所以我应该在每个微服务中创建会话工厂,还是创建一个单独的微服务来为每个微服务提供会话工厂按需。
答案 0 :(得分:1)
SessionFactory始终是一个驻留在一个JVM中的对象。因此,如果您有多个具有不同应用程序的JVM进程,则每个进程都必须具有自己的SessionFactory对象。当然有共享这些功能的方法,但是绝对不建议在微服务体系结构中使用它。
答案 1 :(得分:0)
我认为您不应该允许多个微服务访问数据库。
而是创建一个微服务,例如db-handler
,它将包含所有的Hibernate代码和DAO。其他微服务可以通过REST调用来调用db-handler
来执行各种操作。
这样,您就不必在多个微服务中配置Hibernate。而且,如果您需要更改某些配置或升级Hibernate版本,或者进行与数据库相关的任何更改,那么所有操作都集中在一个地方,因此维护起来会更加容易。当然,只有一个SessionFactory
,驻留在db-handler
中。