VostanAzatyan
VostanAzatyan

Reputation: 645

Several projects sharing same database (Spring JAVA)

I am facing one problem and not sure what is the best way to go,

So I have two git repositories with Spring projects which have to share the same database. (Both are spring projects with hibernate).

One of them is main project so-called MASTER which should modify all Hibernate entities and other I will call SLAVE which is secondary project and needs to read only from the same database.

Here is the small illustration what I have.

enter image description here

So the issue appears when I realized that need to keep the duplicate of entities in both master and slave.

I found two ways to go with this issue.

  1. Using git submodules. Where I can have my entities to be an independent submodule.
  2. Building a JAR from entity classes and include it in both projects.

This both solutions are not meeting my requirements which are:

The solution of submodules is not good because whenever I commit anything from the MASTER I want SLAVE to track that changes. Please note, I have 3 git branches for both projects, master, staging and production. So all the branches should have accordingly their version of entities.

The solution of the jars will work, just I do not find it nice and solid, as I should all the time build them and add a dependency for every project.

The development of these projects is done independently from each other.

Please, could you share your opinion on this issue? I kind of sure that I am not only the one who is trying to achieve the same.

Upvotes: 1

Views: 295

Answers (1)

Mehtrick
Mehtrick

Reputation: 526

You should consider publishing your jar to a maven repository for easier exchange between the projects. You could even host your own like sonar nexus. https://www.sonatype.com/nexus-repository-sonatype

Personally, I think that managing the versions can be very annoying when you have multiple projects. Especially when you are testing something and you have to create a new jar and then publish it over and over again. However your project will be rebuildable and you can controll which project/module can use a newer version of your entity-dependency.

Upvotes: 2

Related Questions