Skip to content

Instantly share code, notes, and snippets.

@dzagorovsky
Last active September 25, 2019 09:55
Show Gist options
  • Save dzagorovsky/b8064c97ba647ed453ab to your computer and use it in GitHub Desktop.
Save dzagorovsky/b8064c97ba647ed453ab to your computer and use it in GitHub Desktop.
import play.db.jpa.JPA;
public class FirstDao {
public int dbCall() {
return JPA.em()
.createNativeQuery("DELETE FROM table WHERE id=1")
.executeUpdate();
}
}
import play.db.jpa.JPAApi;
import play.libs.F.Promise;
import javax.inject.Singleton;
import static play.libs.F.Promise.promise;
@Singleton
public class SomeService {
private JPAApi jpaApi;
private FirstDao firstDao;
private SecondDao secondDao;
public SomeService(JPAApi jpaApi, FirstDao firstDao, SecondDao secondDao) {
this.jpaApi = jpaApi;
this.firstDao = firstDao;
this.secondDao = secondDao;
}
public Promise<Void> doWork() {
return promise(() -> jpaApi.withTransaction(() -> {
firstDao.dbCall();
secondDao.dbCall();
return null;
}), dbExecutionContext);
}
}
import play.db.jpa.JPAApi;
import play.libs.F.Promise;
import javax.inject.Singleton;
import static play.libs.F.Promise.promise;
@Singleton
public class SomeService {
private JPAApi jpaApi;
private FirstDao firstDao;
private SecondDao secondDao;
public SomeService(JPAApi jpaApi, FirstDao firstDao, SecondDao secondDao) {
this.jpaApi = jpaApi;
this.firstDao = firstDao;
this.secondDao = secondDao;
}
public Promise<Void> doWork() {
return promise(new F.Function0<Object>() {
@Override
public Object apply() throws Throwable {
return jpaApi.withTransaction(new F.Function0<Object>() {
@Override
public Object apply() throws Throwable {
firstDao.dbCall();
secondDao.dbCall();
return null;
}
});
}
}, dbExecutionContext);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment