<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-1  評論-68  文章-98  trackbacks-0

    1/ 數據庫驅動

       1.1/ Oracle
            jdbc驅動需要注意版本,class111.jar;o_jdbc.jar。
       1.2/ MS SQL Server
            注意版本和網絡配置(tcp和管道的權限)。
            官方驅動:2000,3個jar包;2005,一個jar包。
            jrds驅動:評價普遍比官方的好,注意各個版本。
       1.3/ MySQL

    2/ 數據庫連接/session

       2.1/ hibernate.cfg.xml配置jdbc驅動
       2.2/ hibernate.cfg.xml配置datasource
       2.3/ 在獲取session時加載Connection
            struts的datasource
            web server的datasource
            dbcp的datasource

    3/ 事務Transaction 與 commit
     
       一次事務只可以提交一次,多次提交會報錯。
       javax.servlet.ServletException: JDBC commit failed

    4/ 一張表轉換成了2個對象,修正為一個對象

       4.1 修改*.hbm.xml,去除composite-id標簽,將主鍵對應的key-property改為id,其它key-property改為property;
       4.2 刪除*.java和Abstract*.java,將*Id.java和Abstract*Id.java分別重構為*.java和Abstract*.java;
       4.3 修改*DAO.jar,將findById的參數修正為主鍵的類型,注意與*.hbm.xml匹配。

    修改前:

    < hibernate-mapping >
        
    < class  name ="com.inc.xschool.entity.PositionInfo"  table ="POSITION_INFO"  schema ="dbo"  catalog ="xschool" >
            
    < composite-id  name ="id"  class ="com.inc.xschool.entity.PositionInfoId" >
                
    < key-property  name ="positionId"  type ="java.lang.Long" >
                    
    < column  name ="POSITION_ID"   />
                
    </ key-property >
                
    < key-property  name ="positionName"  type ="java.lang.String" >
                    
    < column  name ="POSITION_NAME"  length ="50"   />
                
    </ key-property >
                
    < key-property  name ="custId"  type ="java.lang.String" >
                    
    < column  name ="CUST_ID"  length ="50"   />
                
    </ key-property >
            
    </ composite-id >
        
    </ class >
    </ hibernate-mapping >

    修改后:
    <hibernate-mapping>
        
    <class name="com.inc.xschool.entity.PositionInfo" table="POSITION_INFO" schema="dbo" catalog="xschool">
            
    <id name="positionId" type="java.lang.Long">
                
    <column name="POSITION_ID" precision="2" scale="0" />
                
    <generator class="assigned"></generator>
            
    </id>
            
    <property name="positionName" type="java.lang.String">
                
    <column name="POSITION_NAME" length="50" />
            
    </property>
            
    <property name="custId" type="java.lang.String">
                
    <column name="CUST_ID" length="50" />
            
    </property>
        
    </class>
    </hibernate-mapping>

    5/ 遞增字段(整型)
       5.1 Oracle  <generator class="sequence">SEQ_NAME</generator>
       5.2 MySQL  <generator class="increment"/>
       5.3 SQL SERVER <generator class="identity"/>

    6/ MS SQL SERVER Exception

    6.1 [Microsoft][SQLServer 2000 Driver for JDBC]Underlying input stream returned zero bytes
    jdbc bug,text字段的值設為了空或'',改成' '即可,2005中也許修正此bug。

    6.2 [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode.
    在手工事務模式 (AutoCommit=false) 下,如果使用直接 (SelectMethod=direct) 模式,當您嘗試對使用 JDBC 驅動程序的 SQL Server 數據庫執行多個語句時,將會出現此問題。直接模式是該驅動程序的默認模式。
    url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=whm;SelectMethod=cursor

    6.3 [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
        com.microsoft.sqlserver.jdbc.SQLServerException: 到主機  的 TCP/IP 連接失敗。

    客戶端:10.170.10.2; WinXP SP2; SQL Server 2000(SP4)
    服務端:10.170.10.3; Win2003 Server; SQL Server 2000(SP4)

    1/ Microsoft SQL Server 2000 Driver for JDBC(Service Pack 1)
    msbase.jar;mssqlserver.jar;msutil.jar

    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
    String url  = "jdbc:microsoft:sqlserver://10.170.10.3:1433;DatabaseName=xschool";

    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
     at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
     at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
     at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
     at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
     at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
     at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
     at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
     at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
     at java.sql.DriverManager.getConnection(DriverManager.java:512)
     at java.sql.DriverManager.getConnection(DriverManager.java:171)
     at com.inc.xchool.test.TestJDBC.main(TestJDBC.java:31)

    2/ Microsoft SQL Server 2005 JDBC Driver
    sqljdbc.jar

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
    String url  = "jdbc:sqlserver://10.170.10.3:1433;DatabaseName=xschool";

    com.microsoft.sqlserver.jdbc.SQLServerException: 到主機  的 TCP/IP 連接失敗。 java.net.ConnectException: Connection timed out: connect
     at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)
     at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
     at java.sql.DriverManager.getConnection(DriverManager.java:512)
     at java.sql.DriverManager.getConnection(DriverManager.java:171)
     at com.inc.xchool.test.TestJDBC.main(TestJDBC.java:34)

    3/ Win的數據源(ODBC),系統DSN
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
    可以建立連接

    解決方法:在10.3的防火墻設置中開通1433的TCP權限。
    SQL SERVER TCP 1433

    6.4 org.eclipse.core.internal.resources.ResourceException: A resource exists with a different case: /ok/hibernate.reveng.xml.
    狀況:新建了2個web項目,一個叫ok,一個叫okadmin,都添加了hibernate關聯,后者反轉數據庫結構的時候,eclipse在.log中留下以上的log。
    解決方法:臨時remove另外一個項目。

    6.5 ORA-01461 can bind a LONG value only for insert into a LONG column
    狀況:JDBC驅動與連接的Oracle數據庫版本不一致。
    解決方法:置換JDBC驅動為Oracle系統自帶的。

    posted on 2007-02-08 15:51 Xu Jianxiang 閱讀(1821) 評論(1)  編輯  收藏 所屬分類: Open Source

    評論:
    # re: Hibernate FAQ 2009-10-09 10:19 | ajaxor
    剛好解決我的問題,謝謝!

    可惡的windows防火墻~  回復  更多評論
      
    主站蜘蛛池模板: 亚洲性猛交XXXX| 国产又黄又爽又刺激的免费网址| 精品国产亚洲男女在线线电影| 精品久久久久亚洲| 在线精品免费视频无码的| 亚洲性色AV日韩在线观看| 97无码免费人妻超级碰碰夜夜| 亚洲精品456人成在线| 日本精品人妻无码免费大全 | 青青草原亚洲视频| 高清免费久久午夜精品| 中文字幕人成人乱码亚洲电影 | 亚洲午夜未满十八勿入| 久久久久久AV无码免费网站下载| 亚洲A∨无码一区二区三区| 国产成人精品免费久久久久| 亚洲视频一区二区三区| 亚洲精品免费在线视频| 亚洲中文字幕日本无线码| 国产免费69成人精品视频| 美女被免费网站视频在线| 77777亚洲午夜久久多人| 久久精品视频免费播放| 亚洲乱人伦精品图片| 韩国免费三片在线视频| 日韩在线视频免费| 亚洲成AV人片在线播放无码| 亚洲免费福利在线视频| 老外毛片免费视频播放| 国产成人精品日本亚洲网站| 免费福利在线播放| 直接进入免费看黄的网站| 国产亚洲综合色就色| 毛片a级毛片免费播放下载| 一级日本高清视频免费观看| 亚洲国产成人片在线观看无码| 又大又硬又爽又粗又快的视频免费| 亚洲精品无码不卡在线播放| 亚洲欧洲精品无码AV| 最近2019中文免费字幕| 中文字幕成人免费高清在线视频 |