다중 데이터 소스 지원


ActiveRecordPlugin은 여러 데이터 소스, 여러 방언, 여러 캐시, 여러 트랜잭션 수준 및 기타 기능을 동시에 지원할 수 있습니다. 각 ActiveRecordPlugin은 서로 독립적으로 구성될 수 있습니다. 즉, JFinal은 동시에 여러 데이터 소스를 사용할 수 있으며 이러한 여러 데이터 소스에 대해 독립적인 방언, 캐시, 트랜잭션 수준 등을 구성할 수 있습니다.


여러 데이터 소스를 사용하는 경우 각 ActiveRecordPlugin에 대해 configName만 지정하면 됩니다. 다음은 코드 예제입니다.


public void configPlugin(Plugins me) {
// mysql 데이터 소스
C3p0Plugin dsMysql = new C3p0Plugin(…); me.add(dsMysql);

// mysql ActiveRecrodPlugin 인스턴스, configName을 mysql ActiveRecordPlugin arpMysql = new ActiveRecordPlugin(" mysql", dsMysql) ; me.add(arpMysql);
arpMysql.setCache(new EhCache()); arpMysql.addMapping("user", User.class);

// 오라클 데이터 소스
C3p0Plugin dsOracle = new C3p0Plugin(…); me.add(dsOracle);

// oracle ActiveRecrodPlugin 인스턴스, configName을 oracle ActiveRecordPlugin arpOracle = new ActiveRecordPlugin("oracle", dsOracle); me.add(arpOracle);
arpOracle로 지정합니다. setDialect(new OracleDialect()); arpOracle.setTransactionLevel(8); arpOracle.addMapping("blog", Blog.class);
}

위 코드는 두 개의 ActiveRecordPlugin 인스턴스 arpMysql 및 arpOrace를 생성합니다. 인스턴스를 생성할 때 configName을 각각 mysql 및 oracle로 지정하는 데 주의하세요. arpMysql과 arpOracle은 각각 서로 다른 모델을 매핑하고 서로 다른 방언을 구성합니다.



모델을 사용하는 경우 다양한 모델이 데이터베이스 작업을 위한 ActiveRecrodPlugin 인스턴스 및 관련 구성을 자동으로 찾습니다. 동일한 모델을 다른 데이터 소스로 전환하려는 경우 매우 편리합니다. 이 사용법은 동일한 테이블 구조를 가진 다른 데이터 소스의 테이블에 매우 적합합니다. .table의 샘플 코드는 다음과 같습니다.

public void multiDsModel() {
// arp.addMapping(...)이 기본적으로 사용될 때 관련된 데이터 소스
Blog blog = Blog. me .findById(123);

// 다른 데이터 소스로 전환하려면 use 메소드를 한 번만 호출하면 됩니다.
blog.use("backupDatabase").save();
}

In 예제의 코드, blog.use("backupDatabase") 메소드는 데이터 소스를 backupDatabase로 전환하고 데이터를 직접 저장합니다.


특별 참고 사항: 동일한 모델이 여러 데이터 소스의 테이블에 대응하려는 경우에만 사용 방법을 사용해야 합니다. 동일한 모델이 하나의 데이터 소스에서 하나의 테이블에만 대응하는 경우 데이터 소스는 전환은 자동이므로 사용 방법을 사용할 필요가 없습니다.


Db + Record를 사용하려면 데이터 소스를 전환하려면 Db.use(cnfigName) 메서드를 사용하여 데이터베이스 작업 개체를 가져와야 하며, 이후 데이터베이스 작업을 수행할 수 있습니다.

// 소스의 dsMysql 데이터 사용자 쿼리
List<Record> users = Db.use("mysql").find("select * from user");
// 쿼리 blog
List<Record> dsOracle 데이터 소스에서 ; blogs = Db.use("oracle").find("select * from blog");

위 두 줄의 코드는 mysql 및 oracle에 대한 각각의 데이터베이스 작업 개체를 가져옵니다. configName을 통해 단일 데이터와 동일한 방식으로 데이터베이스 작업 API를 사용할 수 있습니다. 즉, Db + Record의 경우 여러 데이터 소스는 단일 데이터 소스보다 Db.use(configName)에 대한 호출을 한 번만 더하면 되며 이후 API 사용법은 완전히 동일합니다.


처음 생성된 ActiveRecrodPlugin 인스턴스가 기본 데이터 소스가 되며 configName은 생략할 수 있습니다. 처음 생성된 ActiveRecrodPlugin 인스턴스의 구성은 기본 구성으로 기본 설정됩니다. 또한 configName을 DbKit.MAIN_CONFIG_NAME 상수로 설정하여 기본 구성을 설정할 수도 있습니다.