Skip to main content

[jpa-spec issues] [JIRA] Commented: (JPA_SPEC-17) Dynamic persistence unit

  • From: "c.beikov (JIRA)" < >
  • To:
  • Subject: [jpa-spec issues] [JIRA] Commented: (JPA_SPEC-17) Dynamic persistence unit
  • Date: Wed, 24 Apr 2013 15:57:58 +0000 (UTC)
  • Auto-submitted: auto-generated


    [ 
https://java.net/jira/browse/JPA_SPEC-17?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=362376#action_362376
 ] 

c.beikov commented on JPA_SPEC-17:
----------------------------------

This would be something really nice to have but I also think that this is 
already possible.
You coud have e.g. a CDI producer for the EntityManager which returns a proxy 
that is actually capable of that switching.
This is really nice, I think I will implement this in my application too :)

{code}
public class EnvironmentAwareEntityManager implements EntityManager {

  @Inject
  @Any
  private Instance<EntityManager> ems;

  private EntityManager select(){
    for(EntityManager em : ems) {
      if(!(em instanceof EnvironmentAwareEntityManager)) {
        // Do your selection based on your needs
      }
    }
  }

  // ... delegate all calls to the result of select()
}
{code}

> Dynamic persistence unit
> ------------------------
>
>                 Key: JPA_SPEC-17
>                 URL: https://java.net/jira/browse/JPA_SPEC-17
>             Project: jpa-spec
>          Issue Type: New Feature
>            Reporter: likenootherufo
>            Assignee: ldemichiel
>
> Without changing code and redeploying my application, I need to be able to 
> switch persistence units in some of my EJBs based on client connected to 
> system. 
> It is similar to multitenancy, but whereas there a single DB is divided 
> into equal shares and shared between multiple tenants, here a single tenant 
> wants multiple DBs appearing as a single one. 
> During runtime based on the client connected to the EJB, the specific 
> database should be selected.
> Currently I achieve this using JDBC connections and just changing the 
> database connection details based on client connected.
> The database connection details are stored in the main system database and 
> retrieved when the client connects.
> This allows the system to grow with ease as new client databases can be 
> created on the fly and simply linked to the client
> in the database.
> Ideally I would like to dynamically add new persistence units to the system 
> (persistence.xml) and then in my database
> link these persistence units to a given client. When the client connects, 
> the system loads the required persistence unit. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://java.net/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


[jpa-spec issues] [JIRA] Commented: (JPA_SPEC-17) Dynamic persistence unit

c.beikov (JIRA) 04/24/2013

<Possible follow-up(s)>

[jpa-spec issues] [JIRA] Commented: (JPA_SPEC-17) Dynamic persistence unit

arjan tijms (JIRA) 04/24/2013

[jpa-spec issues] [JIRA] Commented: (JPA_SPEC-17) Dynamic persistence unit

c.beikov (JIRA) 04/24/2013
 
 
Close
loading
Please Confirm
Close