Git Product home page Git Product logo

act-sql-common's Introduction

act-sql-common

APL v2 Maven Central Build Status codecov Javadocs

Common module for SQL database plugin

Versions

Actframework version act-sql-common version
1.1.0 1.0.0
1.1.1 1.0.1

Configurations

1. Data source configuration

url or jdbcUrl or databaseUrl

Specifies the jdbc url of the datasource.

Default value: jdbc:h2:./test if h2 jdbc driver is provided, otherwise it will break the application from bootstrap.

driver or jdbcDriver or databaseDriver

Optionally. Specifies the jdbc driver class. If not specified the framework will infer the driver class from the url

username

Specifies the jdbc connection username

Default value: sa

password

Specifies the jdbc connection password

Default value: empty string

datasource or datasource.provider

Specifies the DataSourceProvider implementation.

About value and default value:

  1. if hikari found in the value then it will use the act.db.sql.datasource.HikariDataSourceProvider
  2. otherwise if druid found in the value then it will use the act.db.sql.datasource.DruidDataSourceProvider
  3. otherwise if the value starts with shared: then it will try to extract the dbId from the value, e.g. if value is shared:ds1 then the dbId is ds1, after that it will try to load the db service with id ds1 and use the datasource of that db service and feed into the current db service being configured. This allows multiple db service share the same datasource instance. Note app must make sure the db service been referenced has already configured and the db service must be an implementation of SqlDbService. If a datasource is configured as shared datasource then it does not need to configure other datasource properties e.g. url, username etc. However the db.naming.convention still needs to be configured to make the db service able to mapping between table/column and class/field.
  4. otherwise if specified then it will try to load the DataSourceProvider instance by using Act.getInstance(<value>)
  5. if not specified then system will probe the class loader by try loading com.zaxxer.hikari.HikariConfig or com.alibaba.druid.pool.DruidDataSource and load the hikari CP provider or druid provider respectively

autoCommit

Specify should datasource auto commit transaction

Default value: false

minConnections

Specify the minimum connections should be created by data source

Default value: 2

maxConnections

Specify the maximum connections can be created by data source

Default value: 10

isolationLevel

Specifies the default transaction isolation level, could be one of the following:

  1. NONE - no transaction
  2. READ_UNCOMMITTED
  3. READ_COMMITTED
  4. REPEATABLE_READ
  5. SERIALIZABLE

Default value: READ_COMMITTED

db.naming.convention

Specify the naming convention to map Entity class name to table name and the property name to column name

Supported values:

  1. matching - map directly (could be case insensitive)
  2. underscore - convert camelcase to underscore notation

Default value: matching

2. DDL configuration

The ddl configuration tells the framework whether or not to generate and run DDL scripts

ddl.create

Specify should framework to generate and run create table DDL

Default value: false unless h2 is used as database

Note about h2: if using h2 anbd the database file exists then ddl.create will always be treated as false unless ddl.drop is specified as true

ddl.drop

Specify should framework to generate and run drop table DDL

Default value: false

3. HikariCP specific configuration

3.1 idleTimeout

String s = miscConf.get("idleTimeout");
if (null != s) {
    int n = Integer.parseInt(s);
    hc.setIdleTimeout(n);
} else {
    hc.setIdleTimeout(conf.maxInactiveTimeSecs * 1000);
}

3.2 connectionInitSql

s = miscConf.get("connectionInitSql");
if (null != s) {
    hc.setConnectionInitSql(s);
}

3.3 maxLifetime

s = miscConf.get("maxLifetime");
if (null != s) {
    long n = Long.parseLong(s);
    hc.setMaxLifetime(n);
} else {
    hc.setMaxLifetime(conf.maxAgeMinutes * 60 * 1000L);
}

3.4 poolName

s = miscConf.get("poolName");
if (null != s) {
    hc.setPoolName(s);
}

4. Druid specific configuration

4.1 initialSize

DruidDataSource source = new DruidDataSource();
String s = miscConf.get("initialSize");
if (null != s) {
    source.setInitialSize(Integer.parseInt(s));
} else {
    source.setInitialSize(source.getMinIdle());
}

4.2 timeBetweenEvictionRunsMillis

s = miscConf.get("timeBetweenEvictionRunsMillis");
if (null != s) {
    source.setTimeBetweenEvictionRunsMillis(Long.parseLong(s));
}

4.3 minEvictableIdleTimeMillis

s = miscConf.get("minEvictableIdleTimeMillis");
if (null != s) {
    source.setMinEvictableIdleTimeMillis(Long.parseLong(s));
}

4.4 testWhileIdle

s = miscConf.get("testWhileIdle");
if (null != s) {
    source.setTestWhileIdle(Boolean.parseBoolean(s));
}

4.5 testOnBorrow

s = miscConf.get("testOnBorrow");
if (null != s) {
    source.setTestOnBorrow(Boolean.parseBoolean(s));
}

4.6 testOnReturn

s = miscConf.get("testOnReturn");
if (null != s) {
    source.setTestOnReturn(Boolean.parseBoolean(s));
}

4.7 filters

s = miscConf.get("filters");
if (null != s) {
    try {
        source.setFilters(s);
    } catch (SQLException e) {
        throw E.unexpected(e);
    }
}

4.8 poolPreparedStatements

s = miscConf.get("poolPreparedStatements");
if (null != s) {
    source.setPoolPreparedStatements(Boolean.parseBoolean(s));
}

act-sql-common's People

Contributors

crosslee avatar greenlaw110 avatar

Watchers

 avatar  avatar

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.