pre*_*sor 5 java spring hibernate multiple-databases
我使用的是spring mvc + hibernate +两个数据库
例如:我创建了2个sessionFactories.sessionFactory1(使用datasource1)和sessionFactory2(使用datasource2).
是否可以在运行时更改sessionFactory1或更改sessionFactory2sessionFactory,以便dao/s引用它们.sessionFactory已经自动连接到所有dao/s.
我正在寻找它我认为@Configuration可以帮助我,但我不确定.
我正在尝试AbstractRoutingDataSource,但不认为它有帮助.
小智 0
AbstractRoutingDataSource 将为您工作。
首先,您需要创建一个类来存储当前使用的数据库:
public class MyContextHolder {
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
public static void setDBContext(String dBContext) {
contextHolder.set(dBContext);
}
public static String getDBContext() {
return (String) contextHolder.get();
}
public static void clearDBContext() {
contextHolder.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
您需要创建一个类来扩展该类并实现确定当前查找键(),并返回上下文持有者中的当前数据库:
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
public class MyRoutingDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
return MyContextHolder.getDBContext();
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅http://blog.springsource.org/2007/01/23/dynamic-datasource-routing/中的示例。这对我来说效果很好。
| 归档时间: |
|
| 查看次数: |
2632 次 |
| 最近记录: |