Giter VIP home page Giter VIP logo

Comments (6)

aldenquimby avatar aldenquimby commented on August 18, 2024

@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.

sachin-walia avatar sachin-walia commented on August 18, 2024

@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.

aldenquimby avatar aldenquimby commented on August 18, 2024

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.

aaberg avatar aaberg commented on August 18, 2024

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.

aldenquimby avatar aldenquimby commented on August 18, 2024

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.

aaberg avatar aaberg commented on August 18, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.