Compare commits

...
Author SHA1 Message Date
rob a9575048b4 Change to support Ebean 13.13.0
FYI: Also put the provided slf4j-api back to 1.7.x to see the logs when running tests
2023-02-17 21:02:46 +13:00
rob 82fd6dc65f Add badges to README 2023-02-14 23:24:09 +13:00
rob 5b4ff2627c Bump provided spring dependency to latest in 5.3 to avoid security pings on the older dependency 2023-02-14 22:36:27 +13:00
rob 2aa92d63fd Bump test dependency Jackson 2023-02-14 22:32:04 +13:00
rob 658b5b7e06 Bump version to 13.10.0 2023-02-14 22:29:45 +13:00
rob 4e3cd83e36 #33 - Update internals from using deprecated TransactionSynchronizationAdapter to TransactionSynchronization 2023-02-14 22:29:02 +13:00
Rob Bygrave e00e490e73 Update use example in README 2022-09-07 14:09:49 +12:00
Rob Bygrave dd95081e63 Update use example in README 2022-09-07 14:03:37 +12:00
5 changed files with 34 additions and 24 deletions
+21 -5
View File
@@ -1,3 +1,6 @@
[![Maven Central : ebean](https://maven-badges.herokuapp.com/maven-central/io.ebean/ebean-spring-txn/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.ebean/ebean-spring-txn)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/ebean-orm/ebean-spring-txn/blob/master/LICENSE)
ebean-spring-txn
=====================
@@ -9,21 +12,34 @@ to integrate with Springs JDBC Transaction manager.
## To use
```java
ServerConfig serverConfig = new ServerConfig();
DatabaseConfig config = new DatabaseConfig();
// set SpringJdbcTransactionManager ... as the external transaction manager
serverConfig.setExternalTransactionManager(new SpringJdbcTransactionManager());
config.setExternalTransactionManager(new SpringJdbcTransactionManager());
...
EbeanServer server = EbeanServerFactory.create(serverConfig);
Database database = DatabaseFactory.create(config);
```
## Notes
You can use Ebean in Spring/Spring Boot *without* this and that case Ebean
manages the Transactions itself. With Ebean managing the transactions there
manages the Transactions itself. With Ebean managing the transactions there
are some benefits with more control over JDBC batch, getGeneratedKeys
and a simpler abstraction (as Spring transactions is designed to manage
multiple resources such as JDBC Transactions and JPA EntityManager and Ebean
only needs to manage JDBC Transactions).
only needs to manage JDBC Transactions).
## Java modules
Add `requires io.ebean.spring.txn` to module-info.
```java
module foo {
requires io.ebean.spring.txn;
...
}
```
+6 -6
View File
@@ -10,14 +10,14 @@
<groupId>io.ebean</groupId>
<artifactId>ebean-spring-txn</artifactId>
<version>13.9.1</version>
<version>13.13.0</version>
<name>ebean-spring-txn</name>
<packaging>jar</packaging>
<description>Ebean support for Spring transactions</description>
<properties>
<spring.framework.version>5.3.22</spring.framework.version>
<spring.framework.version>5.3.25</spring.framework.version>
<spring.boot.version>2.7.3</spring.boot.version>
<surefire.useModulePath>false</surefire.useModulePath>
</properties>
@@ -32,28 +32,28 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.0</version>
<version>1.7.32</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean</artifactId>
<version>13.9.2</version>
<version>13.13.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-ddl-generator</artifactId>
<version>13.9.2</version>
<version>13.13.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.3</version>
<version>2.14.1</version>
<scope>test</scope>
</dependency>
@@ -9,7 +9,7 @@ final class SpringJdbcTransaction extends ExternalJdbcTransaction {
private final ConnectionHolder holder;
SpringJdbcTransaction(ConnectionHolder holder, TransactionManager manager) {
super("s" + holder.hashCode(), true, holder.getConnection(), manager);
super(true, holder.getConnection(), manager);
this.holder = holder;
}
@@ -7,7 +7,6 @@ import io.ebeaninternal.api.SpiTransaction;
import io.ebeaninternal.server.transaction.TransactionManager;
import org.springframework.jdbc.datasource.ConnectionHolder;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import javax.persistence.PersistenceException;
@@ -91,12 +90,10 @@ public final class SpringJdbcTransactionManager implements ExternalTransactionMa
private SpringTxnListener listener() {
if (TransactionSynchronizationManager.isSynchronizationActive()) {
List<TransactionSynchronization> synchronizations = TransactionSynchronizationManager.getSynchronizations();
if (synchronizations != null) {
// search for our specific listener
for (TransactionSynchronization synchronization : synchronizations) {
if (synchronization instanceof SpringTxnListener) {
return (SpringTxnListener) synchronization;
}
// search for our specific listener
for (TransactionSynchronization synchronization : synchronizations) {
if (synchronization instanceof SpringTxnListener) {
return (SpringTxnListener) synchronization;
}
}
}
@@ -117,7 +114,7 @@ public final class SpringJdbcTransactionManager implements ExternalTransactionMa
* When Ebean is notified (of the commit/rollback) it can then manage its cache, notify
* BeanPersistListeners etc.
*/
private static class SpringTxnListener extends TransactionSynchronizationAdapter {
private static class SpringTxnListener implements TransactionSynchronization {
private final TransactionManager transactionManager;
+1 -4
View File
@@ -1,8 +1,5 @@
<configuration scan="true" scanPeriod="10 seconds">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>TRACE</level>
</filter>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
@@ -29,4 +26,4 @@
<!-- elasticSearch query logging -->
<!--<logger name="io.ebean.ELA" level="TRACE"/>-->
</configuration>
</configuration>