ha-jdbc入門demo
4485 ワード
ha-jdbcは何をしているのか紹介しません.公式サイトに直接移動してください.
このdemoを実行するには、mysqlで次の表を作成する必要があります.
両方のデータベースのテーブルが作成されることに注意してください.次に、ローカル・データベースにzylとzylxcの2つのデータベースを作成します.両方のデータベースで、上記の文を使用してデータベース・テーブルを初期化します.
次はha-jdbc-clasterです.xml構成:
springMVCを使用してテストし、コードをテストします.
上記のテストコードでは、コメントを1つずつ選択してテストできます.2つのデータベースのテーブルが同期されているのが見えます.データベースが1台のマシンの上にない場合は、mysqlの1台を勝手に停止して再起動すると、新しく挿入したデータが自動的に同期されます.Spring mvc他のくだらないことは言わないで、直接demoの添付ファイルに行きます.
このdemoを実行するには、mysqlで次の表を作成する必要があります.
CREATE TABLE `account` (
`ACC_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`ACC_FIRST_NAME` varchar(50) COLLATE utf8_bin DEFAULT NULL,
`ACC_LAST_NAME` varchar(50) COLLATE utf8_bin DEFAULT NULL,
`ACC_EMAIL` varchar(50) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`ACC_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
両方のデータベースのテーブルが作成されることに注意してください.次に、ローカル・データベースにzylとzylxcの2つのデータベースを作成します.両方のデータベースで、上記の文を使用してデータベース・テーブルを初期化します.
次はha-jdbc-clasterです.xml構成:
<ha-jdbc>
<!--<distributable config="" stack="sequencer" /> -->
<sync id="diff" class="net.sf.hajdbc.sync.DifferentialSynchronizationStrategy" >
<property name="fetchSize">1000</property>
<property name="maxBatchSize">100</property>
</sync>
<cluster default-sync="diff" balancer="load" meta-data-cache="none"
dialect="net.sf.hajdbc.dialect.MySQLDialect"
transaction-mode="parallel"
auto-activate-schedule="0 * * ? * *"
failure-detectschedule="0 * * ? * *">
<datasource id="database1">
<name>org.apache.commons.dbcp.BasicDataSource</name>
<property name="defaultReadOnly">false</property>
<property name="url">jdbc:mysql://localhost:3306/zyl</property>
<property name="validationQuery">SELECT 1</property>
<property name="username">root</property>
<property name="password">123456</property>
<property name="maxIdle">3</property>
<property name="maxActive">15</property>
<property name="driverClassName">com.mysql.jdbc.Driver</property>
<property name="minIdle">5</property>
<property name="defaultAutoCommit">true</property>
<property name="testOnBorrow">true</property>
<property name="initialSize">5</property>
</datasource>
<datasource id="database2">
<name>org.apache.commons.dbcp.BasicDataSource</name>
<property name="defaultReadOnly">false</property>
<property name="url">jdbc:mysql://localhost:3306/zylxc</property>
<property name="validationQuery">SELECT 1</property>
<property name="username">root</property>
<property name="password">123456</property>
<property name="maxIdle">3</property>
<property name="maxActive">15</property>
<property name="driverClassName">com.mysql.jdbc.Driver</property>
<property name="minIdle">5</property>
<property name="defaultAutoCommit">true</property>
<property name="testOnBorrow">true</property>
<property name="initialSize">5</property>
</datasource>
</cluster>
</ha-jdbc>
springMVCを使用してテストし、コードをテストします.
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
Account a = new Account();
a.setFirstName("zhang");
a.setLastName("yuliang");
//
accountDao.insert(a);
// ,
List<Account> list = accountDao.getAccountListByAccount(a);
request.setAttribute("account", list.get(0));
//
a.setId(a.getId());
a.setLastName("san");
accountDao.update(a);
return new ModelAndView("index");
}
上記のテストコードでは、コメントを1つずつ選択してテストできます.2つのデータベースのテーブルが同期されているのが見えます.データベースが1台のマシンの上にない場合は、mysqlの1台を勝手に停止して再起動すると、新しく挿入したデータが自動的に同期されます.Spring mvc他のくだらないことは言わないで、直接demoの添付ファイルに行きます.