<commit_before># Asynchronous Database Connectivity in Java (ADBCJ)
ADBCJ allows you to access a relational database in a asynchronous, non-blocking fashion. 
The API is inspired by JDBC, but makes all calls asynchronous. 

The asynchronous access prevents any blocked threads, 
which just wait for the result of the database. 

It also allows to pipeline operations, which are independent.
 Depending on the application, this can give a significant performance gain.

ADBCJ is intended as low level foundation. 
Therefore it's is written in Java, so other languages like Scala, Groovy, Kotlin etc can cosume it to

# Getting Started
All the code of this section is in the 'adbcj-demo' directory. 
## Add the dependencies
First add the Maven dependency and repository. Currently only snapshots are available. Fixed releases coming soon

    <repository>
        <id>adbcj-snapshot</id>
        <url>https://gamlor.info/files/mvn/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <layout>default</layout>
    </repository>

    
Add you're dependencies now. For MySQL:

    <dependency>
        <groupId>org.adbcj</groupId>
        <artifactId>adbcj-api</artifactId>
        <version>0.8-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.adbcj</groupId>
        <artifactId>mysql-async-driver</artifactId>
        <version>0.8-SNAPSHOT</version>
    </dependency>
    
Or for H2:

    <dependency>
        <groupId>org.adbcj</groupId>
        <artifactId>adbcj-api</artifactId>
        <version>0.8-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.adbcj</groupId>
        <artifactId>h2-async-driver</artifactId>
        <version>0.8-SNAPSHOT</version>
    </dependency>


## Connect to Database
First we create a connection manager, which holds all connections and other resources, like thread pools.
Usually you have one connection manager in an application.

The connection URL have a similar format to JDBC connection strings. 
For Mysql:
    
    adbcj:mysql://localhost/the-database
    
For H2:

    adbcj:h2://localhost/the-database
    
An H2 example. Let's create the connection manager
    
    final ConnectionManager connectionManager = ConnectionManagerProvider.createConnectionManager(
            "adbcj:h2://localhost/the-datanbase",
            "user",
            "password"
    );<commit_msg>Update readme to point at bintray.<commit_after># Asynchronous Database Connectivity in Java (ADBCJ)
ADBCJ allows you to access a relational database in a asynchronous, non-blocking fashion. 
The API is inspired by JDBC, but makes all calls asynchronous. 

The asynchronous access prevents any blocked threads, 
which just wait for the result of the database. 

It also allows to pipeline operations, which are independent.
 Depending on the application, this can give a significant performance gain.

ADBCJ is intended as low level foundation. 
Therefore it's is written in Java, so other languages like Scala, Groovy, Kotlin etc can cosume it to

# Getting Started
All the code of this section is in the 'adbcj-demo' directory. 
## Add the dependencies
First add the Maven dependency and repository. Currently only snapshots are available.

    <repository>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <id>bintray-gamlor-adbcj-repo</id>
        <name>bintray</name>
        <url>https://dl.bintray.com/gamlor/adbcj-repo</url>
    </repository>
    
Add you're dependencies now. For MySQL:

    <dependency>
        <groupId>org.adbcj</groupId>
        <artifactId>adbcj-api</artifactId>
        <version>0.9</version>
    </dependency>
    <dependency>
        <groupId>org.adbcj</groupId>
        <artifactId>mysql-async-driver</artifactId>
        <version>0.9</version>
    </dependency>
    
Or for H2:

    <dependency>
        <groupId>org.adbcj</groupId>
        <artifactId>adbcj-api</artifactId>
        <version>0.9</version>
    </dependency>
    <dependency>
        <groupId>org.adbcj</groupId>
        <artifactId>h2-async-driver</artifactId>
        <version>0.9</version>
    </dependency>


## Connect to Database
First we create a connection manager, which holds all connections and other resources, like thread pools.
Usually you have one connection manager in an application.

The connection URL have a similar format to JDBC connection strings. 
For Mysql:
    
    adbcj:mysql://localhost/the-database
    
For H2:

    adbcj:h2://localhost/the-database
    
An H2 example. Let's create the connection manager
    
    final ConnectionManager connectionManager = ConnectionManagerProvider.createConnectionManager(
            "adbcj:h2://localhost/the-datanbase",
            "user",
            "password"
    );
{'fraction_non_alphanumeric': 0.08906544010035543, 'fraction_numerical': 0.005854066485469371, 'mean_word_length': 3.043956043956044, 'pattern_counts': {'":': 0, '<': 91, '<?xml version=': 0, '>': 91, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5720201', 'n_tokens_mistral': 1439, 'n_tokens_neox': 1323, 'n_words': 443}