All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.test4j.module.database.environment.DBEnvironment Maven / Gradle / Ivy

package org.test4j.module.database.environment;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.test4j.module.database.transaction.TransactionManagementConfiguration;

public interface DBEnvironment {
    /**
     * 默认的数据源名称
     */
    public final static String DEFAULT_DATASOURCE_NAME    = "DEFAULT";

    /**
     * test4j配置文件
     */
    public final static String DEFAULT_DATASOURCE_FROM    = "TEST4J-PROPERTIES";

    /**
     * 自定义数据源
     */
    public final static String CUSTOMIZED_DATASOURCE_NAME = "CUSTOMIZED";

    /**
     * 设置数据库连接属性
     * 
     * @param driver 驱动类
     * @param url 连接url
     * @param username 数据库用户
     * @param password 用户密码
     */
    void setDataSource(String driver, String url, String schemas, String username, String password);

    /**
     * 获取当前的DataSource
     * 
     * @param withTransactionManager 是否包装事务
     * @return
     */
    DataSource getDataSource();

    /**
     * 连接数据源
     * 
     * @throws SQLException
     */
    Connection connect();

    /**
     * Retrieve an exception code from a database exception. This method should
     * perform any required conversion between a JDBC exception and the real
     * database error code.
     */
    int getExceptionCode(SQLException ex);

    /**
     * Create a {@link PreparedStatement} object and binds fixture symbols to
     * SQL statement parameters with matching names.
     */
    PreparedStatement createStatementWithBoundFixtureSymbols(String commandText) throws SQLException;

    /**
     * 获得数据表的元信息
     * 
     * @param table
     * @return
     * @throws Exception
     */
    TableMeta getTableMetaData(String table);

    /**
     * 返回指定类型的默认值
     * 
     * @param javaType
     * @return
     */
    Object getDefaultValue(String javaType);

    /**
     * 将字符串类型转换为java对象
     * 
     * @param input
     * @param javaType
     * @return
     */
    Object toObjectValue(String input, String javaType);

    /**
     * 返回数据库的字段引号符(mysql:"'"),oracle(")
     * 
     * @return
     */
    String getFieldQuato();

    /**
     * 将java对象转换为对应的SQL对象
* 比如: java.util.Date对象在oracle插入时必须转为java.sql.Date对象 * * @param value * @return */ Object converToSqlValue(Object value); // ======================================= /** * 获取事务包装的数据源 * * @return */ DataSource getDataSourceAndActivateTransactionIfNeeded(); /** * 注册事务配置信息,如果配置为空,则注册默认的配置 * * @param transactionManagementConfiguration */ void registerTransactionManagementConfiguration(TransactionManagementConfiguration transactionManagementConfiguration); /** * 事务开始 */ void startTransaction(); /** * 结束事务,提交或回滚 */ void endTransaction(); /** * Commit current transaction. */ void commit(); /** * Rollback current transaction. */ void rollback(); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy