The application architecture - We have 2 application server(NOn clustered environment) with the same application , both the application server pointing to the single database.
Service : we have service which reads the database and check for the entity and if that entity is not present its adds it to the database and if it is present it will update the entity.
Problem : we have multiple threads running simultaneously to through the 2 application server. Both at the same time reads the Database and find that the entity is not present. Both thread adds the same entity in the Database. and we have duplicate rows.
The primary key and entity are different so the database doesn't restrict the duplicate rows.
Ques : By making code thread safe by using synchronized, will it prevent the above problem ? I doubt that as we have 2 application server running on different JVM. How to prevent the above problem ? thanks in advance