Skip to content

Commit

Permalink
Remove spring support from JDBC and Hibernate (micronaut-projects#947)
Browse files Browse the repository at this point in the history
* Remove spring support from JDBC and Hibernate

* Disable binaryCompatibility

* Correct BOM
  • Loading branch information
dstepanov authored Jun 8, 2023
1 parent 69aa46b commit 63eaf49
Show file tree
Hide file tree
Showing 31 changed files with 231 additions and 326 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,3 @@ plugins {
id 'io.micronaut.build.internal.module'
id 'io.micronaut.build.internal.sql-base'
}

configurations.all {
resolutionStrategy {
force 'org.graalvm.sdk:graal-sdk:22.3.2'
}
}
18 changes: 0 additions & 18 deletions hibernate-jpa-spring/build.gradle

This file was deleted.

This file was deleted.

This file was deleted.

1 change: 0 additions & 1 deletion hibernate-jpa/src/test/resources/logback.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,4 @@
<root level="error">
<appender-ref ref="STDOUT" />
</root>
<!-- <logger name="org.springframework.transaction" level="TRACE"/>-->
</configuration>
3 changes: 1 addition & 2 deletions hibernate-reactive/src/test/resources/logback.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,4 @@
<root level="error">
<appender-ref ref="STDOUT" />
</root>
<!-- <logger name="org.springframework.transaction" level="TRACE"/>-->
</configuration>
</configuration>
4 changes: 0 additions & 4 deletions jdbc-dbcp/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,9 @@ dependencies {
testRuntimeOnly(libs.managed.h2)

testAnnotationProcessor(mn.micronaut.inject.java)
testAnnotationProcessor(mnSpring.micronaut.spring.annotation)
testImplementation(mnSpring.micronaut.spring)
testImplementation(mn.micronaut.http.server.netty)
testImplementation(mn.micronaut.http.client)
testImplementation(mn.micronaut.management)
testImplementation(mnMicrometer.micronaut.micrometer.core)
testImplementation(mnCache.micronaut.cache.core)

testImplementation(mnSpring.spring.jdbc)
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

import jakarta.inject.Named;
import jakarta.inject.Singleton;
import org.springframework.transaction.annotation.Transactional;

import javax.sql.DataSource;
import java.sql.Connection;
Expand Down Expand Up @@ -48,45 +47,54 @@ public BookService(DataSource dataSource, @Named("secondary") DataSource seconda
}
}

@Transactional
public String save(String title) throws SQLException {
try (Connection connection = dataSource.getConnection()) {
connection.setAutoCommit(false);

connection.createStatement().execute("UPDATE foo SET id = id + 1;");

ResultSet resultSet = connection.createStatement().executeQuery("SELECT id FROM foo");
resultSet.next();
int value = resultSet.getInt("id");

connection.commit();

return Integer.toString(value);
}
}

@Transactional
public String longsave(String title) throws SQLException {
try (Connection connection = dataSource.getConnection()) {
connection.setAutoCommit(false);

connection.createStatement().execute("UPDATE foo SET id = id + 1;");
Thread.sleep(10);
ResultSet resultSet = connection.createStatement().executeQuery("SELECT id FROM foo");
resultSet.next();
int value = resultSet.getInt("id");

connection.commit();

return Integer.toString(value);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "";
}


@Transactional("secondary")
public String saveTwo(String title) throws SQLException {
try (Connection connection = secondary.getConnection()) {
connection.setAutoCommit(false);

connection.createStatement().execute("UPDATE foo SET id = id + 1;");

ResultSet resultSet = connection.createStatement().executeQuery("SELECT id FROM foo");
resultSet.next();
int value = resultSet.getInt("id");

connection.commit();

return Integer.toString(value);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@
*/
package io.micronaut.configuration.jdbc.dbcp

import io.micronaut.jdbc.DataSourceResolver
import org.apache.commons.dbcp2.BasicDataSource
import io.micronaut.context.ApplicationContext
import io.micronaut.context.DefaultApplicationContext
import io.micronaut.context.env.MapPropertySource
import io.micronaut.inject.qualifiers.Qualifiers
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy
import spock.lang.Specification

import javax.sql.DataSource
Expand Down Expand Up @@ -49,13 +49,14 @@ class DatasourceConfigurationSpec extends Specification {
['datasources.default': [:]]
))
applicationContext.start()
DataSourceResolver dataSourceResolver = applicationContext.findBean(DataSourceResolver).orElse(DataSourceResolver.DEFAULT)

expect:
applicationContext.containsBean(BasicDataSource)
applicationContext.containsBean(DatasourceConfiguration)

when:
BasicDataSource dataSource = applicationContext.getBean(DataSource).targetDataSource as BasicDataSource
BasicDataSource dataSource = dataSourceResolver.resolve(applicationContext.getBean(DataSource))

then: //The default configuration is supplied because H2 is on the classpath
dataSource.url == 'jdbc:h2:mem:default;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE'
Expand All @@ -76,13 +77,14 @@ class DatasourceConfigurationSpec extends Specification {
['datasources.default': [:]]
))
applicationContext.start()
DataSourceResolver dataSourceResolver = applicationContext.findBean(DataSourceResolver).orElse(DataSourceResolver.DEFAULT)

expect:
applicationContext.containsBean(BasicDataSource)
applicationContext.containsBean(DatasourceConfiguration)

when:
BasicDataSource dataSource = applicationContext.getBean(DataSource).targetDataSource as BasicDataSource
BasicDataSource dataSource = dataSourceResolver.resolve(applicationContext.getBean(DataSource)) as BasicDataSource
ResultSet resultSet = dataSource.getConnection().prepareStatement("SELECT H2VERSION() FROM DUAL").executeQuery()
resultSet.next()
String version = resultSet.getString(1)
Expand All @@ -105,13 +107,14 @@ class DatasourceConfigurationSpec extends Specification {
'datasources.default.defaultCatalog': 'catalog']
))
applicationContext.start()
DataSourceResolver dataSourceResolver = applicationContext.findBean(DataSourceResolver).orElse(DataSourceResolver.DEFAULT)

expect:
applicationContext.containsBean(BasicDataSource)
applicationContext.containsBean(DatasourceConfiguration)

when:
BasicDataSource dataSource = applicationContext.getBean(DataSource).targetDataSource as BasicDataSource
BasicDataSource dataSource = dataSourceResolver.resolve(applicationContext.getBean(DataSource))

then:
dataSource.maxWaitMillis == 5000
Expand All @@ -133,13 +136,14 @@ class DatasourceConfigurationSpec extends Specification {
'datasources.foo': [:]]
))
applicationContext.start()
DataSourceResolver dataSourceResolver = applicationContext.findBean(DataSourceResolver).orElse(DataSourceResolver.DEFAULT)

expect:
applicationContext.containsBean(BasicDataSource)
applicationContext.containsBean(DatasourceConfiguration)

when:
BasicDataSource dataSource = (applicationContext.getBean(DataSource, Qualifiers.byName("foo")) as TransactionAwareDataSourceProxy).targetDataSource
BasicDataSource dataSource = dataSourceResolver.resolve(applicationContext.getBean(DataSource, Qualifiers.byName("foo")))

then: //The default configuration is supplied because H2 is on the classpath
dataSource.url == 'jdbc:h2:mem:foo;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,23 @@
*/
package io.micronaut.configuration.jdbc.dbcp

import io.micronaut.jdbc.spring.SpringDataSourceResolver
import io.micronaut.jdbc.DataSourceResolver
import org.apache.commons.dbcp2.BasicDataSource
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy
import spock.lang.Specification

class DatasourceFactorySpec extends Specification {

DatasourceFactory datasourceFactory
import javax.sql.DataSource

def setup() {
datasourceFactory = new DatasourceFactory(new SpringDataSourceResolver())
}
class DatasourceFactorySpec extends Specification {

def "create basic datasource"() {
given:
def dataSource = new BasicDataSource(validationQuery: "SELECT 1")

DatasourceFactory datasourceFactory = new DatasourceFactory(new DataSourceResolver() {
@Override
DataSource resolve(DataSource ds) {
return ds
}
})
when:
def metadata = datasourceFactory.dbcpDataSourcePoolMetadata(dataSource)

Expand All @@ -44,13 +44,23 @@ class DatasourceFactorySpec extends Specification {
metadata.usage >= 0
}

def "create transactional datasource"() {
def "create proxy datasource"() {
given:
def dataSource = new BasicDataSource(validationQuery: "SELECT 1")
def transactionalDataSource = new TransactionAwareDataSourceProxy(targetDataSource: dataSource)
def proxyDataSource = Spy(dataSource)
def dataSourceResolver = new DataSourceResolver() {
@Override
DataSource resolve(DataSource ds) {
if (ds.is(proxyDataSource)) {
return dataSource
}
return ds
}
}
DatasourceFactory datasourceFactory = new DatasourceFactory(dataSourceResolver)

when:
def metadata = datasourceFactory.dbcpDataSourcePoolMetadata(transactionalDataSource)
def metadata = datasourceFactory.dbcpDataSourcePoolMetadata(proxyDataSource)

then:
metadata
Expand Down
3 changes: 0 additions & 3 deletions jdbc-hikari/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,10 @@ dependencies {
testRuntimeOnly(libs.managed.h2)

testAnnotationProcessor(mn.micronaut.inject.java)
testImplementation(mnSpring.micronaut.spring)
testImplementation(mn.micronaut.http.server.netty)
testImplementation(mn.micronaut.http.client)
testImplementation(mn.micronaut.management)

testImplementation(mnMicrometer.micronaut.micrometer.core)
testImplementation(mnCache.micronaut.cache.core)

testImplementation(mnSpring.spring.jdbc)
}
Loading

0 comments on commit 63eaf49

Please sign in to comment.