¿Qué controladores se requieren para que Spring4 configure las fuentes de datos de Oracle?
fuente de datos propia de Spring (DriverManagerDataSource), fuente de datos DBCP, fuente de datos C3P0 y fuente de datos JNDI.
1. Spring viene con fuente de datos
DriverManagerDataSource
Código XML:
[html] Ver texto sin formato
lt;bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"gt;
lt;property name="driverClassName" value=" oracle.jdbc .driver.OracleDriver" /gt;
2.OracleDriver" /gt
lt; nombre de propiedad="url" valor="jdbc:oracle:thin: @172.19.34.6: 1521: ORCL" /gt;
lt; nombre de propiedad="nombre de usuario" valor="orclight" /gt;
lt;nombre de propiedad="contraseña" value="123456" /gt;
lt;/beangt;
2.Fuente de datos DBCP
La configuración de DBCP depende de 2 paquetes jar commons-dbcp. jar, commons-pool.jar
Código XML:
[html] Ver texto sin formato
lt bean id="dataSource" class=" org; .apache.commons.dbcp.BasicDataSource"
destroy-method="close"gt;
lt;property name="driverClassName" value="oracle.jdbc.driver. " /gt;
lt; nombre de propiedad="url" valor="jdbc:oracle:thin:@172.19.34.6:1521:ORCL" /gt;
lt; propiedad nombre="url" valor="jdbc:oracle:thin:@172.19.34.6:1521:ORCL" /gt;
lt; propiedad nombre="nombre de usuario" valor="orclight" /gt; /p>
lt;property name="contraseña" value="123456" /gt;
lt;/beangt;
Descripción del código anterior:
BasicDataSource proporciona un método close() para cerrar la fuente de datos, por lo que debe configurar el atributo destroy-method="close" para que la fuente de datos se pueda cerrar normalmente cuando se cierra el contenedor Spring.
Además de estas propiedades obligatorias de la fuente de datos, existen otras propiedades de uso común:
defaultAutoCommit: establece si la conexión devuelta por la fuente de datos se envía automáticamente; el valor predeterminado es verdadero
defaultReadOnly: establece los datos si la fuente es de solo lectura, el valor predeterminado es falso
maxCommit: confirmación máxima: establece si la fuente de datos es de solo lectura, el valor predeterminado es falso
maxMethod="cerrar "propiedad.
maxActive: el número máximo de conexiones a la base de datos, no hay límite cuando se establece en 0
maxIdle: el número máximo de conexiones en espera, no hay límite cuando se establece en 0;
maxWait: el número máximo de segundos a esperar, en milisegundos. Si se excede este tiempo, se informará un error;
validationQuery: se utiliza para verificar la consulta de validación. validationQuery: una declaración SQL de consulta utilizada para verificar si la conexión es exitosa. La declaración SQL debe devolver al menos una fila de datos. Por ejemplo, simplemente puede configurarla para "seleccionar recuento (*) del usuario";
removeAbandoned: si la conexión se desconecta automáticamente, el valor predeterminado es falso
removeAbandonedTimeout: la conexión de datos se desconectará automáticamente después de unos segundos, este valor se proporciona cuando removeAbandoned es verdadero
logAbandoned: si se debe registrar la situación de interrupción;
fuente de datos C3P0
C3P0 es un proyecto de implementación de fuente de datos JDBC de código abierto. C3P0 depende del paquete jar c3p0.
p>Código XML:
[html] Ver texto sin formato
lt bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method=" close"gt;
lt; nombre de propiedad=" driverClass" value=" oracle.jdbc.driver.OracleDriver"/gt;
lt; nombre de propiedad="jdbcUrl" valor= "jdbc:oracle:thin:@172.19.34.6:1521:
lt;nombre de propiedad="jdbcUrl" valor=":ORCL"/gt;
lt;nombre de propiedad= "usuario" valor="orclight"/gt;
lt;nombre de propiedad="contraseña" valor="123456"/gt;
lt;/beangt;
ComboPooledDataSource, al igual que BasicDataSource, proporciona un método close() para cerrar la fuente de datos, de modo que podamos garantizar que la fuente de datos se libere correctamente cuando se cierre el contenedor Spring.
C3P0 tiene un conjunto de propiedades de configuración más rico que DBCP, a través del cual se pueden realizar varios controles efectivos en la fuente de datos:
acquireIncrement: cuando se agotan las conexiones en el grupo de conexiones, la cantidad de nuevas conexiones que C3P0 puede crear a la vez;
acquireRetryAttempts: define la cantidad de intentos repetidos para obtener una nueva conexión después de no poder obtener una nueva conexión de la base de datos, el valor predeterminado es 30; /p>
acquireRetryDelay: dos El intervalo entre conexiones (en milisegundos), el valor predeterminado es 1000;
autoCommitOnClose: el valor predeterminado es revertir todas las operaciones no confirmadas cuando se cierra la conexión. El valor predeterminado es falso;
automaticTestTable (tabla de prueba automática): C3P0 creará una tabla vacía llamada Prueba y la probará con su propia declaración de consulta. Si se define este parámetro, se ignorará la propiedad preferidaTestQuery. No puede hacer nada con esta tabla de prueba, C3P0 la utilizará para realizar pruebas y está vacía de forma predeterminada;
breakAfterAcquireFailure: si no se logra adquirir una conexión, todos los subprocesos que esperan adquirir una conexión generarán una excepción. . Sin embargo, la fuente de datos se conservará y seguirá intentando obtener una conexión la próxima vez que se llame a getConnection(). Si se establece en verdadero, la fuente de datos se afirmará como desconectada y cerrada permanentemente después de un intento fallido de obtener una conexión. El valor predeterminado es falso;
Tiempo de espera: cuando el grupo de conexiones se agota, el cliente espera una nueva conexión después de llamar a getConnection(). Después del tiempo de espera, se generará una excepción SQL. cero, lanzará SQLException indefinidamente. La unidad es milisegundos, el valor predeterminado es 0;
connectionTesterClassName: pruebe la conexión implementando la clase ConnectionTester o QueryConnectionTester. El nombre de la clase debe establecerse en el nombre completo. El valor predeterminado es com.mchange.v2.C3P0.impl.DefaultConnectionTester;
idleConnectionTestPeriod: verifica la cantidad de segundos para las conexiones inactivas en todos los grupos de conexiones. El valor predeterminado es 0, lo que significa que no hay verificación. >
inicialPoolSize: el número de conexiones creadas durante la inicialización. El valor debe estar entre minPoolSize y maxPoolSize. El valor predeterminado es 3;
maxIdleTime: tiempo máximo de inactividad. Las conexiones que excedan el tiempo de inactividad serán abandonadas. Si el valor es 0 o negativo, la conexión no se abandonará. El valor predeterminado es 0;
maxPoolSize: el número máximo de conexiones retenidas en el grupo de conexiones. El valor predeterminado es 15;
maxStatements: parámetro JDBC estándar utilizado para controlar el número de PreparedStatements cargados en la fuente de datos. Sin embargo, debido a que las declaraciones de prepache pertenecen a una única conexión y no a todo el grupo de conexiones, hay muchos factores a considerar al configurar este parámetro. Por lo tanto, es necesario considerar varios factores al configurar este parámetro. Si maxStatements y maxStatementsPerConnection son ambos 0, el almacenamiento en caché está desactivado. El valor predeterminado es 0;
maxStatementsPerConnection: el número máximo de declaraciones almacenadas en caché para una única conexión en el grupo de conexiones. El valor predeterminado es 0;
numHelperThreads (número de subprocesos auxiliares): C3P0 se ejecuta de forma asincrónica y las operaciones JDBC lentas se completan a través de procesos auxiliares.
Escalar estas operaciones puede mejorar efectivamente el rendimiento al realizar múltiples operaciones simultáneamente con múltiples subprocesos. El valor predeterminado es 3;
preferredTestQuery: define la declaración de prueba que se ejecutará para todas las pruebas de conexión. Cuando se utilizan pruebas de conexión, este parámetro puede mejorar en gran medida la velocidad de la prueba. La tabla que se va a probar debe existir en el momento de la fuente de datos inicial. El valor predeterminado está vacío;
propertyCycle: el número máximo de segundos que se deben esperar antes de que el usuario modifique los parámetros de configuración del sistema. El valor predeterminado es 300;
testConnectionOnCheckout: debido al alto consumo de rendimiento, utilícelo solo cuando sea necesario. Si se establece en "verdadero", se comprobará la validez de cada conexión cuando se envíe. Se recomienda utilizar métodos como idleConnectionTestPeriod o automaticTestTable
para mejorar el rendimiento de las pruebas de conexión. El valor predeterminado es falso;
testConnectionOnCheckin: si se establece en verdadero, se verificará la validez de la conexión cuando se obtenga. El valor predeterminado es falso.
Fuente de datos 4.JNDI
Si la aplicación está configurada en un servidor de aplicaciones de alto rendimiento (como WebLogic o Websphere, Tomcat, etc.), es posible que prefiramos utilizar el El propio servidor de aplicaciones Fuente de datos proporcionada. Las fuentes de datos del servidor de aplicaciones se utilizan mediante llamadores abiertos JNDI, para lo cual Spring proporciona una clase JndiObjectFactoryBean que hace referencia a un recurso JNDI.
código xml:
[html] Ver texto sin formato
lt; bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"gt ;
lt;property name="jndiName" value="java:comp/env/jdbc/orclight"/gt;
lt;/beangt;
[html] Ver texto sin formato
lt. bean xmlns=p/env/jdbc/orclight"/gt;
lt;/beansgt;
[ html] Ver texto sin formato
lt.