Tratando de tener una tabla con nombre único para cada instancia de la aplicación

Kirderf:

Nuevo en las bases de datos. Tener un problema en el que desea que cada instancia de la aplicación para tener su propia base de datos. Tratando de encontrar la manera de implementar esto con la configuración actual del ORM. Actualmente el uso de Javax persistencia. ¿Alguien tiene una solución para esto?

SIMPLE : Quiero tener un nombre único para cada tabla

    //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:

Tener una nueva base de datos para cada instancia de su aplicación no es la solución correcta. En su lugar, usted debe buscar en aplicaciones multi-arrendatario, sugeriría este artículo: https://dzone.com/articles/multi-tenancy-using-jpa-spring-and-hibernate-part

En resumen, una nueva base de datos para cada instancia de su aplicación reducirá seriamente su rendimiento, capacidades para ejecutar consultas históricas, y, potencialmente, problemas con la concurrencia.

Una solución rápida sería tener una columna como tenant_ido incluso sólo instance_idlo que ayudaría a asegurar que los datos se consulta sólo para esa instancia.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=378819&siteId=1
Recomendado
Clasificación