Новое в базах данных. Имея проблему, где я хочу, чтобы каждый экземпляр приложения, чтобы иметь свою собственную базу данных. Пытаясь выяснить, как осуществить это с текущей настройкой ОРМ. В настоящее время используется Javax настойчивость. Кто-нибудь есть решение этой проблемы?
SIMPLE : Хочет иметь уникальное имя для каждой таблицы
//thread safe
private EntityManagerFactory emf;
public ImageDAOManager(EntityManagerFactory emf) {
this.emf = emf;
}
....
@Entity
public class ImageDAO implements Serializable {
@Id
private String path;
private int fileSize;
private long date;
private int imageHeight;
private int imageWidth;
private double latitude;
private double longitude;
private String tags;
public ImageDAO(String path, int fileSize, long date, int imageHeight, int imageWidth, double latitude, double longitude) {
this.path = path;
this.fileSize = fileSize;
this.date = date;
this.imageHeight = imageHeight;
this.imageWidth = imageWidth;
this.latitude = latitude;
this.longitude = longitude;
this.tags = "";
}
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence"
version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="LecturePU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>backend.database.ImageDAO</class>
<properties>
<!--username and password is temporarily here-->
<property name="javax.persistence.jdbc.url" value="" />
<property name="javax.persistence.jdbc.user" value="" />
<property name="javax.persistence.jdbc.password" value="" />
<!-- EclipseLink should create the database schema automatically -->
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />
</properties>
</persistence-unit>
</persistence>```
Имея новую базу данных для каждого экземпляра вашего приложения, безусловно , не является правильным решением. Вместо этого, вы должны смотреть в многопользовательских приложений, я хотел бы предложить эту статью: https://dzone.com/articles/multi-tenancy-using-jpa-spring-and-hibernate-part
Таким образом, новая база данных для каждого экземпляра приложения будет серьезно снизить производительность, возможности для запуска исторических запросов, и, возможно, проблемы с параллелизмом.
Быстрое исправление будет иметь столбец , такие как tenant_id
или даже просто instance_id
что поможет вам убедиться , что данные запрашиваются только для этого экземпляра.