hibernate連接多個數據庫?----其實什麼也不用擔心

 

實際工作應用中,經常要和多個數據庫打交道. (偶說的是同一個Sqlserver數據庫服務器上的多個數據庫,可不是跨平臺,異種數據庫 :(( )

hibernate.cfg.xml通常在這個時候指定一個數據庫,也就是:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>
<session-factory>

 <!--數據庫連接池-->
... 略

 <!--數據庫 -->
 <property name="connection.username">sa</property>
 <property name="connection.url">
  jdbc:sqlserver://127.0.0.1:1433;databaseName=MyDatabaseName;SelectMethod=cursor;

...

然後就是反向映射.

那位說,我現在不僅要連接MyDatabaseName,而且還要訪問另一個數據庫AnotherDatabase,咋辦?

該咋辦還咋辦,一點也不用擔心.

依舊使用hibernage 反向工程嚮導,建立另一個庫的連接,選定你要訪問的表,生成OR Mapping,POJO,DAO等.

結束了....就是這樣....

其實,稍微注意一下就會發現,映射文件已經變爲這樣了:

<?xml version="1.0"?>
<!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 - Hibernate Tools
-->
<hibernate-mapping>
    <class name="com.My.POJO.TUser" table="T_User" schema="dbo" catalog="AnotherDatabase">
        <id name="id" type="java.lang.Long">
            <column name="ID" />
            <generator class="identity" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="Name" length="10" not-null="true" />
        </property>

 ... ...

在這裏catalog對應數據庫名,schema對應數據庫擁有者dbo.hibernate 生成最終SQL語句時,自動在表名前加上
AnotherDatabase.dbo.

比如,HQL寫成: "From TUser WHERE UId=?"

那麼最終SQL就是 select xxxxxx from AnotherDatabase.dbo.T_User where U_Id=?

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章