@Override @Nullable public Object beginTransaction(EntityManager entityManager, TransactionDefinition definition) throws PersistenceException, SQLException, TransactionException { if (definition.getIsolationLevel() != TransactionDefinition.ISOLATION_DEFAULT) { // Pass custom isolation level on to EclipseLink's DatabaseLogin configuration // (since Spring 4.1.2) UnitOfWork uow = entityManager.unwrap(UnitOfWork.class); uow.getLogin().setTransactionIsolation(definition.getIsolationLevel()); } entityManager.getTransaction().begin(); if (!definition.isReadOnly() && !this.lazyDatabaseTransaction) { // Begin an early transaction to force EclipseLink to get a JDBC Connection // so that Spring can manage transactions with JDBC as well as EclipseLink. entityManager.unwrap(UnitOfWork.class).beginEarlyTransaction(); } return null; }
method.addLine("login.usePlatform(new " + login.getPlatformClassName() + "());"); method.addLine("login.setDriverClass(" + login.getDriverClassName() + ".class);"); method.addLine("login.setConnectionString(\"" + login.getConnectionString() + "\");"); if (login.getUserName() != null) { method.addLine("login.setUserName(\"" + login.getUserName() + "\");"); if (login.getPassword() != null) { method.addLine("login.setPassword(\"" + login.getPassword() + "\");"); method.addLine("login.setUsesNativeSequencing(" + login.shouldUseNativeSequencing() + ");"); if (!login.shouldUseNativeSequencing()) { method.addLine("login.setSequenceTableName(\"" + ((TableSequence)login.getDefaultSequence()).getTableName() + "\");"); method.addLine("login.setSequenceNameFieldName(\"" + ((TableSequence)login.getDefaultSequence()).getNameFieldName() + "\");"); method.addLine("login.setSequenceCounterFieldName(\"" + ((TableSequence)login.getDefaultSequence()).getCounterFieldName() + "\");"); method.addLine("login.setShouldBindAllParameters(" + login.shouldBindAllParameters() + ");"); method.addLine("login.setShouldCacheAllStatements(" + login.shouldCacheAllStatements() + ");"); method.addLine("login.setUsesByteArrayBinding(" + login.shouldUseByteArrayBinding() + ");"); method.addLine("login.setUsesStringBinding(" + login.shouldUseStringBinding() + ");"); method.addLine("if (login.shouldUseByteArrayBinding()) { // Can only be used with binding."); method.addLine("\tlogin.setUsesStreamsForBinding(" + login.shouldUseStreamsForBinding() + ");"); method.addLine("}"); method.addLine("login.setShouldForceFieldNamesToUpperCase(" + login.shouldForceFieldNamesToUpperCase() + ");"); method.addLine("login.setShouldOptimizeDataConversion(" + login.shouldOptimizeDataConversion() + ");"); method.addLine("login.setShouldTrimStrings(" + login.shouldTrimStrings() + ");"); method.addLine("login.setUsesBatchWriting(" + login.shouldUseBatchWriting() + ");"); method.addLine("if (login.shouldUseBatchWriting()) { // Can only be used with batch writing."); method.addLine("\tlogin.setUsesJDBCBatchWriting(" + login.shouldUseJDBCBatchWriting() + ");");
DatabaseLogin databaseLogin = new DatabaseLogin(); try { Class driverClass = m_classLoader.loadClass(driverClassName); databaseLogin.setDriverClass(driverClass); } catch (Exception exception) { throw SessionLoaderException.failedToLoadTag("driver-class", driverClassName, exception); databaseLogin.setConnectionString(connectionString); JNDIConnector jndiConnector = new JNDIConnector(new javax.naming.InitialContext(), datasourceName); jndiConnector.setLookupType(databaseLoginConfig.getLookupType().intValue()); databaseLogin.setConnector(jndiConnector); } catch (Exception exception) { throw SessionLoaderException.failedToLoadTag("datasource", datasourceName, exception); databaseLogin.setShouldBindAllParameters(databaseLoginConfig.getBindAllParameters()); databaseLogin.setShouldCacheAllStatements(databaseLoginConfig.getCacheAllStatements()); databaseLogin.setUsesByteArrayBinding(databaseLoginConfig.getByteArrayBinding()); databaseLogin.setUsesStringBinding(databaseLoginConfig.getStringBinding()); databaseLogin.setUsesStreamsForBinding(databaseLoginConfig.getStreamsForBinding()); databaseLogin.setShouldForceFieldNamesToUpperCase(databaseLoginConfig.getForceFieldNamesToUppercase()); databaseLogin.setShouldOptimizeDataConversion(databaseLoginConfig.getOptimizeDataConversion());
/** * This method provides client with access to add a new connection pool to a EclipseLink * ServerSession. * @param poolName the name of the new pool * @param maxSize the maximum number of connections in the pool * @param minSize the minimum number of connections in the pool * @param platform the fully qualified name of the EclipseLink platform to use with this pool. * @param driverClassName the fully qualified name of the JDBC driver class * @param url the URL of the database to connect to * @param userName the user name to connect to the database with * @param password the password to connect to the database with * @exception ClassNotFoundException if any of the class names are misspelled. */ public void addNewConnectionPool(String poolName, int maxSize, int minSize, String platform, String driverClassName, String url, String userName, String password) throws ClassNotFoundException { if (ClassConstants.ServerSession_Class.isAssignableFrom(getSession().getClass())) { DatabaseLogin login = new DatabaseLogin(); login.setPlatformClassName(platform); login.setDriverClassName(driverClassName); login.setConnectionString(url); login.setUserName(userName); login.setEncryptedPassword(password); ((ServerSession)getSession()).addConnectionPool(poolName, login, minSize, maxSize); } }
/** * PUBLIC: * The database URL is the JDBC URL for the database server. * The driver header is <i>not</i> be included in this URL * (e.g. "dbase files"; not "jdbc:odbc:dbase files"). */ public String getDatabaseURL() { if (!(getConnector() instanceof DefaultConnector)) { return ""; } return getDefaultConnector().getDatabaseURL(); }
/** * PUBLIC: * Print all of the connection information. */ public String toString() { StringWriter stringWriter = new StringWriter(); PrintWriter writer = new PrintWriter(stringWriter); writer.println("DatabaseLogin("); writer.println("\t" + ToStringLocalization.buildMessage("platform", (Object[])null) + "=>" + getDatasourcePlatform()); writer.println("\t" + ToStringLocalization.buildMessage("user_name", (Object[])null) + "=> \"" + getUserName() + "\""); writer.print("\t"); getConnector().toString(writer); if (getServerName() != null) { writer.println("\t" + ToStringLocalization.buildMessage("server_name", (Object[])null) + "=> \"" + getServerName() + "\""); } if (getDatabaseName() != null) { writer.println("\t" + ToStringLocalization.buildMessage("database_name", (Object[])null) + "=> \"" + getDatabaseName() + "\""); } writer.write(")"); return stringWriter.toString(); }
/** * PUBLIC: * Print all of the connection information. */ public String toString() { StringWriter stringWriter = new StringWriter(); PrintWriter writer = new PrintWriter(stringWriter); writer.println("DatabaseLogin("); writer.println("\t" + ToStringLocalization.buildMessage("platform", (Object[])null) + "=>" + getPlatform()); writer.println("\t" + ToStringLocalization.buildMessage("user_name", (Object[])null) + "=> \"" + getUserName() + "\""); writer.print("\t"); getConnector().toString(writer); if (getServerName() != null) { writer.println("\t" + ToStringLocalization.buildMessage("server_name", (Object[])null) + "=> \"" + getServerName() + "\""); } if (getDatabaseName() != null) { writer.println("\t" + ToStringLocalization.buildMessage("database_name", (Object[])null) + "=> \"" + getDatabaseName() + "\""); } writer.write(")"); return stringWriter.toString(); }
DatabaseLogin databaseLogin = session.getLogin(); String jdbcDriver = databaseLogin.getDriverClassName(); String jdbcUrl = databaseLogin.getDatabaseURL(); String username = databaseLogin.getUserName(); databaseLogin.setConnector(new JNDIConnector(dataSource));
/** * INTERNAL: * Create and return a session broker. * Used internally to set the Names by Class from the parent. Reduces garbage. */ protected SessionBroker(Map sessionNames) { super(new org.eclipse.persistence.sessions.DatabaseLogin()); this.sessionsByName = new HashMap<String, AbstractSession>(); this.sessionNamesByClass = sessionNames; }
public static Project loadDynamicProject(Project project, DatabaseLogin login, DynamicClassLoader dynamicClassLoader) { if (project != null) { if (login == null) { if (project.getLogin() == null) { project.setLogin(new DatabaseLogin()); } } else { project.setLogin(login); } if (project.getLogin().getPlatform() == null) { project.getLogin().setPlatform(new DatabasePlatform()); } project.getLogin().getPlatform().getConversionManager().setLoader(dynamicClassLoader); for (Iterator<?> i = project.getAliasDescriptors().values().iterator(); i.hasNext();) { ClassDescriptor descriptor = (ClassDescriptor) i.next(); if (descriptor.getJavaClass() == null) { createType(dynamicClassLoader, descriptor, project); } } project.convertClassNamesToClasses(dynamicClassLoader); } return project; }
/** * PUBLIC: * Specify the J2EE DataSource name to connect to. * Also enable external connection pooling. * @see JNDIConnector */ public void useDataSource(String dataSource) { setConnector(new JNDIConnector(dataSource)); useExternalConnectionPooling(); }
/** * Return db driver class name. This only applies to DefaultConnector. Return "N/A" otherwise. */ public synchronized String getDriver() { if (getSession().getLogin().getConnector() instanceof DefaultConnector) { return getSession().getLogin().getDriverClassName(); } return "N/A"; }
/** * PUBLIC: * Connect to the JDBC driver via DriverManager. * @see #useDirectDriverConnect(String, String, String) */ public void useDefaultDriverConnect(String driverClassName, String driverURLHeader, String databaseURL) { setConnector(new DefaultConnector(driverClassName, driverURLHeader, databaseURL)); }
/** * INTERNAL: * Return the connector that will instantiate the java.sql.Connection. */ protected DefaultConnector getDefaultConnector() throws ValidationException { try { return (DefaultConnector)getConnector(); } catch (ClassCastException e) { throw ValidationException.invalidConnector(connector); } }
public void customize(Session session) throws Exception { DatabaseLogin login = session.getLogin(); Connector connector = login.getConnector(); login.setConnector(new ConnectorWrapper(connector, m_onCreationQuery)); }
/** * INTERNAL: * Return whether the specified Oracle JDBC driver is being used. */ protected boolean oracleDriverIs(String urlPrefix) { try { if (getDriverURLHeader().length() != 0) { return getDriverURLHeader().indexOf(urlPrefix) != -1; } else { return getDatabaseURL().indexOf(urlPrefix) != -1; } } catch (ValidationException e) { // this exception will be thrown if we are using something other than a DefaultConnector return false; } }
/** * Return connection pool type. Values include: "Internal", "External" and "N/A". */ public synchronized String getConnectionPoolType() { if (getSession().getLogin().shouldUseExternalConnectionPooling()) { return "External"; } else { return "N/A"; } }
/** * PUBLIC: * The data source name is required if connecting through ODBC (JDBC-ODBC, etc.). * This is the ODBC name given in the ODBC Data Source Administrator. * This is just the database part of the URL. */ public String getDataSourceName() throws ValidationException { return getDatabaseURL(); }
/** * INTERNAL: * Return whether the specified driver is being used. */ protected boolean driverIs(String driverName) { try { return getDriverClassName().equals(driverName); } catch (ValidationException e) { // this exception will be thrown if we are using something other than a DefaultConnector return false; } }
qualifier = session.getDatasourcePlatform().getTableQualifier(); if ((qualifier == null) || (qualifier.length() == 0)) { qualifier = session.getLogin().getUserName();