Bonjour,

je suis en train de réfléchir à la conception de mon modèle pour une application personnelle. En fait, les utilisateurs de mon application seront scindés en plusieurs bases de données identiques dans leurs structures. Comme je vais utiliser PostGreSQL, je peux aussi choisir de créer une seule base de données mais avec plusieurs schémas. En gros :

BDD1
|_ schéma1
|_ (table_1, table_2, table_n)
BDD2
|_ schéma1
|_ (table_1, table_2, table_n)
OU :

BDD1
|_ schéma1
|_ (table_1, table_2, table_n)
|_ schéma2
|_ (table_1, table_2, table_n)
A priori, je m'orienterais plutôt vers le choix 2 mais sans grandes certitudes...

Dans le cas 1, cela m'oblige à créer plusieurs persistance_units afin de gérer les différentes bases de données mais ensuite c'est moins facile (voir impossible ?) d'utiliser l'injection de dépendance dynamique dans un EJB. On est je pense obligé de créer un EntityMangerFactory puis un EntityManger ce qui est moins rapide que l'injection.

Dans le cas 2, je peux utiliser l'injection de dépendance car je n'ai qu'une seule base de données mais je dois à mon avis effectuer une requête préliminaire avant chaque requête métier afin de choisir mon schéma pour les requêtes à effectuer :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
SET search_path TO schema1;
ou
SET search_path TO schema2;
j'ai vu que l'on peut définir un schema dans le fichier orm.xml mais dans mon cas de figure j'aurais n schemas donc impossible. Suis je condamné à effectuer une "pré-requête" de sélection de schéma ? Via un intercepteur EJB, cela pourrait il marcher ?

Merci de vos conseils et de votre feedback