Hibernate schema怎么使用

2023-05-21,

本篇内容介绍了“Hibernate schema怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Hibernate schema

如果你在调用Hibernate的时候需要切换schema怎么办呢。

在oracle中,不同的用户,使用不同的schema.在Hibernate的POJO中,会指定了schema

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!--  Mapping file autogenerated by MyEclipse Persistence Tools  --> <hibernate-mapping> <class name="com.csc.poimanager.dao.Poi" table="POI" schema="P_BEIJING"> <id name="poiId" type="java.lang.Long"> <column name="POI_ID" precision="10" scale="0" /> <generator class="increment" /> </id> <property name="cnName" type="java.lang.String"> <column name="CN_NAME" length="1000" /> </property> </class> </hibernate-mapping>

上面的代码部分,就指定了Schema.如果在操作的时候想切换Schema.操作如下:

默认的配置<property name="Hibernate.default_schema">POI_BEIJING</property>

上面的映射文件改为:

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!--  Mapping file autogenerated by MyEclipse Persistence Tools  --> <hibernate-mapping> <class name="com.csc.poimanager.dao.Poi" table="POI" > <id name="poiId" type="java.lang.Long"> <column name="POI_ID" precision="10" scale="0" /> <generator class="increment" /> </id> <property name="cnName" type="java.lang.String"> <column name="CN_NAME" length="1000" /> </property> </class> </hibernate-mapping>

在操作的,可以用下面的方法来重新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就可以了。

“Hibernate schema怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注本站网站,小编将为大家输出更多高质量的实用文章!

《Hibernate schema怎么使用.doc》

下载本文的Word格式文档,以方便收藏与打印。