hibernate mysql schema指什么意思_Hibernate 映射 schema简析(异常:Missing column)

Hibernate有很多值得学习的地方,这里我们主要介绍Hibernate

schema,包括介绍切换Schema等方面。

Hibernate

schema

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

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

encoding="utf-8"?>

/p>

PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

name="com.csc.poimanager.dao.Poi" table="POI"

schema="P_BEIJING">

type="java.lang.Long">

precision="10" scale="0"

/>

/>

type="java.lang.String">

length="1000" />

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

默认的配置

name="hibernate.default_schema">POI_BEIJING

上面的映射文件改为:

encoding="utf-8"?>

/p>

PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

name="com.csc.poimanager.dao.Poi" table="POI"

>

type="java.lang.Long">

precision="10" scale="0"

/>

/>

type="java.lang.String">

length="1000" />

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值