DefaultJpaConnectionProviderFactory.java
Home
/
connections /
jpa /
src /
main /
java /
org /
keycloak /
connections /
jpa /
DefaultJpaConnectionProviderFactory.java
package org.keycloak.connections.jpa;
import org.keycloak.Config;
import org.keycloak.models.KeycloakSession;
import org.keycloak.util.JpaUtils;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
public class DefaultJpaConnectionProviderFactory implements JpaConnectionProviderFactory {
private EntityManagerFactory emf;
@Override
public JpaConnectionProvider create(KeycloakSession session) {
EntityManager em = emf.createEntityManager();
em = PersistenceExceptionConverter.create(em);
session.getTransaction().enlist(new JpaKeycloakTransaction(em));
return new DefaultJpaConnectionProvider(em);
}
@Override
public void close() {
emf.close();
}
@Override
public String getId() {
return "default";
}
@Override
public void init(Config.Scope config) {
String unitName = config.get("unitName", "jpa-keycloak-identity-store");
emf = Persistence.createEntityManagerFactory(unitName, JpaUtils.getHibernateProperties());
}
}