Comments (6)
@sachinwalia2k8 thanks for posting the DbUtils link, that's very helpful. It seems like this would live in sql2o as an extension of the Query
class, something like AsyncQuery
. We'll look into it.
from sql2o.
@aldenquimby, I was thinking along the same line. Basically AsyncQuery could extend Query class. All the execute methods in such a case would return java.util.concurrent.Future object or Guava com.google.common.util.concurrent.ListenableFuture as it supports callbacks as well.
from sql2o.
i put up a few ideas on a branch for @aaberg to consider. I think an AsyncExecutor
class would be the best idea, because it's a little clunky to extend Query directly. The usage would be:
Future<User> futureUser = sql2o.createQuery("SELECT * FROM user WHERE name = :name")
.addParameter("name", name)
.async()
.executeAndFetchFirst(User.class);
Unless someone objects to adding this, I'll update the async interface after feedback and add tests to make sure things work as expected.
from sql2o.
This would certainly be a cool addition to the api. At the same time, it might cause all kinds of interesting thread-safety issues. Consider the following:
sql2o.withConnection((Connection con, Object param) -> {
Query q = connection.createQuery("insert into someTable(id, val) values (:id, :val);
Long key1 = q.addParameter("val", val1).addParameter("id", someId).async().executeUpdate().getKey(Long.class);
Long key2 = q.addParameter("val", val1).addParameter("id", someId).async().executeUpdate().getKey(Long.class);
});
In the above example we can't guarantee that key1 and key2 variables actually will hold the right values. They might be switched, or both key1 and key2 may get the same value.
To work it would require all instances of Connection and Query classes to be thread safe, which they aren't today.
I think we should wait to see how the overall architecture of sql2o v. 2.0 will look like, and then reconsider this feature.
from sql2o.
Ok so should we close this issue because we won't be implementing it in the foreseeable future? Do we have a place for backlogged issues? Maybe we could add a Backlog list to the Trello board and make it public?
from sql2o.
I think it is a very good idea to make the board public and put stuff like this in a backlog there.
I'll mark it as wontfix and close it for now.
For reference. The board is here:
https://trello.com/b/8dgYmypY/sql2o
from sql2o.
Related Issues (20)
- Warnings with Java 11, possible future denied operation HOT 2
- ORDER BY does not work with addParameter HOT 2
- Remove case sensitive converter
- Column mappings failed HOT 1
- Issue with ArrayParameters.updateQueryWithArrayParameters when query contains '?' character
- When in jar file I receive No suitable driver for error HOT 1
- Publish version 1.6.0 of oracle extensions
- sql2o can't rolback ? HOT 3
- can i change the Type of return value of executeAndFetch()
- State of the Project
- NPE when return query object is of type Map HOT 1
- How to correctly insert with array type (ex bigint[]) columns?
- Library uses now-private reflection mechanism HOT 2
- Can't add ON DELETE CASCADE to forein key when creating table, using PostgreSQL. HOT 1
- Updated MySQL 8.0.26 connector breaks historically working code HOT 2
- Next release HOT 2
- MethodSetter setProperty failing with generic IllegalArgumentException
- Failed test testAllTypes(org.sql2o.reflect.ReflectionFieldSetterFactoryTest) only in Maven HOT 2
- Collection of enums is not properly mapped to query params HOT 1
- SQL2o 1.6.0 Compatabile with JDK 17/ OpenJDK 17 ? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sql2o.