Hibernate有很多值得学习的地方,这里我们主要介绍Hibernate schema,包括介绍切换Schema等方面。
Hibernate schema
如果你在调用Hibernate的时候需要切换schema怎么办呢。在oracle中,不同的用户,使用不同的schema.在Hibernate 的POJO中,会指定了schema
1.
2.
3."
rnate-mapping-3.0.dtd">
4.
7.
8.
9. > 10. 11. 12.
13.
14.
15.
16.
17.
上面的代码部分,就指定了Schema.如果在操作的时候想切换Schema.操作如下:
默认的配置 name="Hibernate.default_schema">POI_BEIJING 上面的映射文件改为: 1. 2. 3." rnate-mapping-3.0.dtd"> 4. 7. 8. 9. > 10. 11. 12. 13. 14. 15.
16.
17.
在操作的,可以用下面的方法来重新build你的SessionFactory 1.public static void rebuildSessionFacto ryForChangeSchema(String newSchema){
2.try {
3.
4.Properties p = configuration.getProper
ties();
5.System.out.println("---" + p);
6.p.put("hibernate.default_schema", newS
chema);
7.sessionFactory = configuration.buildSe
ssionFactory();
8.System.out.println(" change schema suc
cessfully ......... ");
9.} catch (Exception e) {
10.System.err
11..println("%%%% rebuild session fa
ctory failed for changing schema %%%%") ;
12. e.printStackTrace();
13.}
14.}
如果需要改变Schema,就需要在需要的时候调用此方法。比如在SchemaAction中
1.HibernateSessionFactory.rebuildSession
FactoryForChangeSchema("POI_SHANGHAI");
2.
3.System.out.println(" change successful
ly---");
4.
5.PoiDAO pd = new PoiDAO();
6.Transaction t =pd.getSession().beginTr
ansaction();
7.
8.pd.save(new Poi("jsfjksdf"));
https://www.wendangku.net/doc/9215674419.html,mit();
那么,原来,是向POI_BEIJING中插入数据的,变成了向POI_SHANGHAI中插入一条数据了。通过这种方法,可以实现在操作不同的Schema的时候实现切换。
问题:此处改变的是静态工厂。所以,会对所有的用户产生影响。如果不想对所有的用户改变,那么可以根据Schema 的名称来取得自己对应的SessionFactoy 就可以了。以上介绍Hibernate schema。