SqlMapperContext.java
package com.github.mygreen.sqlmapper.core;
import javax.sql.DataSource;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.support.TransactionTemplate;
import com.github.mygreen.messageformatter.MessageFormatter;
import com.github.mygreen.splate.SqlTemplateEngine;
import com.github.mygreen.sqlmapper.core.config.JdbcTemplateProperties;
import com.github.mygreen.sqlmapper.core.dialect.Dialect;
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;
import lombok.Getter;
import lombok.Setter;
/**
* SqlMapperの設定情報を保持します。
*
* @version 0.3
* @author T.TSUCHIE
*
*/
@Getter
@Setter
public class SqlMapperContext {
/**
* テーブル、カラムなどの命名規則。
*/
private NamingRule namingRule;
/**
* エラーメッセージなどのフォーマッター。
*/
private MessageFormatter messageFormatter;
/**
* RDMSごとの方言。
*/
private Dialect dialect;
/**
* エンティティのメタ情報の作成処理。
*/
private EntityMetaFactory entityMetaFactory;
/**
* ストアドプロシージャ/ファンクションのパラメータのメタ情報の作成処理。
*/
private StoredParamMetaFactory storedParamMetaFactory;
/**
* Java ⇔ SQL の相互変換処理を管理。
*/
private ValueTypeRegistry valueTypeRegistry;
/**
* 接続先DBのデータソース。
*/
private DataSource dataSource;
/**
* {@link JdbcTemplate} の初期値。
*/
private JdbcTemplateProperties jdbcTemplateProperties;
/**
* トランザクションマネージャ。
* <p>主キー生成時のトランザクション設定に使用します。
*/
private PlatformTransactionManager transactionManager;
/**
* 各SQL実行時のイベントを配信する機能
*/
private ApplicationEventPublisher applicationEventPublisher;
/**
* SQLテンプレートエンジン
*/
private SqlTemplateEngine sqlTemplateEngine;
/**
* トランザクションの伝搬タイプが {@link TransactionDefinition#PROPAGATION_REQUIRES_NEW} のトランザクションテンプレートを作成します。
* <p>ID生成用のトランザクションテンプレートとして使用します。
*
* @since 0.3
* @return トランザクションテンプレート。
*/
public TransactionTemplate txRequiresNew() {
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
return transactionTemplate;
}
}