/p>
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
上面的代码部分,就指定了Schema.
如果在操作的时候想切换Schema.操作如下:
默认的配置
POI_BEIJING
上面的映射文件改为:
/p>
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
在操作的,可以用下面的方法来重新build你的SessionFactory
public static void rebuildSessionFactoryForChangeSchema(String newSchema){
try {
Properties p = configuration.getProperties();
System.out.println("---" + p);
p.put("hibernate.default_schema", newSchema);
sessionFactory = configuration.buildSessionFactory();
System.out.println(" change schema successfully ......... ");
} catch (Exception e) {
System.err
.println("%%%% rebuild session factory failed for changing schema %%%%");
e.printStackTrace();
}
}
如果需要改变Schema,就需要在需要的时候调用此方法
比如在SchemaAction中,
HibernateSessionFactory.rebuildSessionFactoryForChangeSchema("POI_SHANGHAI");
System.out.println(" change successfully ---");
PoiDAO pd = new PoiDAO();
Transaction t =pd.getSession().beginTransaction();
pd.save(new Poi("jsfjksdf"));
t.commit();
那么,原来,是向POI_BEIJING中插入数据的,变成了向POI_SHANGHAI中插入一条数据了。
通过这种方法,可以实现在操作不同的Schema的时候实现切换。
问题:
此处改变的是静态工厂。所以,会对所有的用户产生影响。如果不想对所有的用户改变,那么可以根据Schema的名称来取得自己对应的SessionFactoy就可以了。
|----------------------------------------------------------------------------------------|
版权声明 版权所有 @zhyiwww
引用请注明来源 http://www.blogjava.net/zhyiwww
|----------------------------------------------------------------------------------------|
posted on 2008-12-24 18:24 zhyiwww 阅读(3571) 评论(5) 编辑 收藏 所属分类: j2ee 、database