Apache ShardingSphere uses ThreadLocal
to manage primary database routing marks for mandatory routing. A primary database routing mark can be added to HintManager
through programming, and this value is valid only in the current thread.
Hint
is mainly used to perform mandatory data operations in the primary database for read/write splitting scenarios.
HintManager.getInstance()
to obtain HintManager instance.HintManager.setWriteRouteOnly()
method to set the primary database routing marks.HintManager.close()
to clear the content of ThreadLocal.The same as sharding based on hint.
hintManager.setWriteRouteOnly
to configure primary database route.The same as data sharding based on hint.
String sql = "SELECT * FROM t_order";
try (HintManager hintManager = HintManager.getInstance();
Connection conn = dataSource.getConnection();
PreparedStatement preparedStatement = conn.prepareStatement(sql)) {
hintManager.setWriteRouteOnly();
try (ResultSet rs = preparedStatement.executeQuery()) {
while (rs.next()) {
// ...
}
}
}
The same as sharding based on hint.
hintManager.setDataSourceName
to configure database route.String sql = "SELECT * FROM t_order";
try (HintManager hintManager = HintManager.getInstance();
Connection conn = dataSource.getConnection();
PreparedStatement preparedStatement = conn.prepareStatement(sql)) {
hintManager.setDataSourceName("ds_0");
try (ResultSet rs = preparedStatement.executeQuery()) {
while (rs.next()) {
// ...
}
}
}