Попытка иметь таблицу с уникальным именем для каждого экземпляра приложения

Kirderf:

Новое в базах данных. Имея проблему, где я хочу, чтобы каждый экземпляр приложения, чтобы иметь свою собственную базу данных. Пытаясь выяснить, как осуществить это с текущей настройкой ОРМ. В настоящее время используется 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>```
Janáč Meena:

Имея новую базу данных для каждого экземпляра вашего приложения, безусловно , не является правильным решением. Вместо этого, вы должны смотреть в многопользовательских приложений, я хотел бы предложить эту статью: https://dzone.com/articles/multi-tenancy-using-jpa-spring-and-hibernate-part

Таким образом, новая база данных для каждого экземпляра приложения будет серьезно снизить производительность, возможности для запуска исторических запросов, и, возможно, проблемы с параллелизмом.

Быстрое исправление будет иметь столбец , такие как tenant_idили даже просто instance_idчто поможет вам убедиться , что данные запрашиваются только для этого экземпляра.

рекомендация

отhttp://10.200.1.11:23101/article/api/json?id=378813&siteId=1
рекомендация