128 synchronized (
this) {
130 KeycloakModelUtils.suspendJtaTransaction(session.getKeycloakSessionFactory(), () -> {
131 logger.debug(
"Initializing JPA connections");
133 Map<String, Object> properties =
new HashMap<String, Object>();
135 String unitName =
"keycloak-default";
137 String dataSource =
config.get(
"dataSource");
138 if (dataSource != null) {
140 properties.put(AvailableSettings.JTA_DATASOURCE, dataSource);
142 properties.put(AvailableSettings.NON_JTA_DATASOURCE, dataSource);
145 properties.put(AvailableSettings.JDBC_URL,
config.get(
"url"));
146 properties.put(AvailableSettings.JDBC_DRIVER,
config.get(
"driver"));
148 String user =
config.get(
"user");
150 properties.put(AvailableSettings.JDBC_USER, user);
152 String password =
config.get(
"password");
153 if (password != null) {
154 properties.put(AvailableSettings.JDBC_PASSWORD, password);
159 if (schema != null) {
160 properties.put(JpaUtils.HIBERNATE_DEFAULT_SCHEMA, schema);
164 boolean initializeEmpty =
config.getBoolean(
"initializeEmpty",
true);
167 properties.put(
"hibernate.show_sql",
config.getBoolean(
"showSql",
false));
168 properties.put(
"hibernate.format_sql",
config.getBoolean(
"formatSql",
true));
175 if (driverDialect != null) {
176 properties.put(
"hibernate.dialect", driverDialect);
179 migration(migrationStrategy, initializeEmpty, schema, databaseUpdateFile, connection, session);
181 int globalStatsInterval =
config.getInt(
"globalStatsInterval", -1);
182 if (globalStatsInterval != -1) {
183 properties.put(
"hibernate.generate_statistics",
true);
186 logger.trace(
"Creating EntityManagerFactory");
189 properties.put(
org.hibernate.cfg.AvailableSettings.JTA_PLATFORM,
new AbstractJtaPlatform() {
191 protected TransactionManager locateTransactionManager() {
196 protected UserTransaction locateUserTransaction() {
201 emf = JpaUtils.createEntityManagerFactory(session, unitName, properties, getClass().getClassLoader(),
jtaEnabled);
202 logger.trace(
"EntityManagerFactory created");
204 if (globalStatsInterval != -1) {
209 if (connection != null) {
212 }
catch (SQLException e) {
213 logger.warn(
"Can't close connection", e);
String detectDialect(Connection connection)
Definition: DefaultJpaConnectionProviderFactory.java:244
TransactionManager getTransactionManager()
void prepareOperationalInfo(Connection connection)
Definition: DefaultJpaConnectionProviderFactory.java:228
File getDatabaseUpdateFile()
Definition: DefaultJpaConnectionProviderFactory.java:223
boolean jtaEnabled
Definition: DefaultJpaConnectionProviderFactory.java:70
String getSchema()
Definition: DefaultJpaConnectionProviderFactory.java:378
Config.Scope config
Definition: DefaultJpaConnectionProviderFactory.java:66
Connection getConnection()
Definition: DefaultJpaConnectionProviderFactory.java:362
void startGlobalStats(KeycloakSession session, int globalStatsIntervalSecs)
Definition: DefaultJpaConnectionProviderFactory.java:278
MigrationStrategy getMigrationStrategy()
Definition: DefaultJpaConnectionProviderFactory.java:387
volatile EntityManagerFactory emf
Definition: DefaultJpaConnectionProviderFactory.java:64
static final Logger logger
Definition: DefaultJpaConnectionProviderFactory.java:58
void migration(MigrationStrategy strategy, boolean initializeEmpty, String schema, File databaseUpdateFile, Connection connection, KeycloakSession session)
Definition: DefaultJpaConnectionProviderFactory.java:284
JtaTransactionManagerLookup jtaLookup
Definition: DefaultJpaConnectionProviderFactory.java:71