使用Hibernate 串連SQL Server 2000

來源:互聯網
上載者:User
server
以下代碼在 JDK 5.0, Hibernate 2.1, SQL Server 2000 SP3 中測試通過。


 


 



       第一次使用Hibernate作持久層,感覺使用起來還是比較複雜的,尤其是調試起來很不方便。Hibernate 基於反射的機制雖然很靈活,但明顯給跟蹤代碼製造了障礙,給出的異常資訊量也太少。個人感覺其改進的餘地還很大,比如Java新增加了Annotation文法後,是否可使用它來定義ORM,而取代hbm.xml的形式。

       好了,進入正題。

       首先,必須設定資料庫,下面以在資料庫yufan中的操作為例。

       CREATE TABLE CUSTOMER(CID INTEGER NOT NULL PRIMARY KEY,  USERNAME VARCHAR(12) NOT NULL,  PASSWORD VARCHAR(12));







       然後是一個資料對象,必須為它的每個欄位提供讀寫屬性方法,Hibernate 會用反射來檢索。

// Customer.java

public class Customer {







    private int id;







    private String username;







    private String password;







    public int getId() {







        return id;







    }







    public String getPassword() {







        return password;







    }







    public String getUsername() {







        return username;







    }







    public void setId(int id) {







        this.id = id;







    }







    public void setPassword(String password) {







        this.password = password;







    }







    public void setUsername(String username) {







        this.username = username;







    }







}


 


 



然後是Hibernate的映射Customer.hbm.xml


 


 



<?xml version="1.0" encoding="utf-8" ?>







<!DOCTYPE hibernate-mapping PUBLIC







"-//Hibernate/Hibernate Mapping DTD//EN"







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







<hibernate-mapping>







<class name="Customer" table="Customer" proxy="Customer">







<id name="id" column="CID">







<generator class="increment"/>







</id>







<property name="username" column="USERNAME" />







<property name="password" column="PASSWORD" />







</class>







</hibernate-mapping>


 


 



類和映射結合在一起,定義了ORM。


 


 



下面是Hibernate的設定檔,包含資料庫連接,對應檔引用等。檔案名稱必須是hibernate.cfg.xml


 


 



<?xml version="1.0" encoding="utf-8" ?>







<!DOCTYPE hibernate-configuration







PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"







"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">








 


 



<hibernate-configuration>







<session-factory name="java:/hibernate/HibernateFactory">







<property name="show_sql">true</property>







<property name="connection.driver_class">







com.jnetdirect.jsql.JSQLDriver







</property>







<property name="connection.url">







jdbc:JSQLConnect://localhost:1433;database=yufan;







</property>







<property name="connection.username">







sa







</property>







<property name="connection.password">







yufan







</property>







<property name="dialect">







net.sf.hibernate.dialect.SQLServerDialect







</property>







<mapping resource="Customer.hbm.xml"/>







</session-factory>







</hibernate-configuration>


 


 



重要的property包括connection.driver_class,指定JDBC資料庫驅動。connection.url 制定資料庫的Url。我使用的是JSQLDriver,功能上比MS 的 JDBC 驅動強大。但必須注意的是,在指定資料庫的時候,必須使用database= 或 databaseName=的文法,而DatabaseName則會出錯。MS的驅動則無此問題。我剛遇到此問題時真是茫然無緒。。。最後發現是如此。。。


 


 



在這個檔案中,不能使用XML注釋,感覺是Hibernate的缺陷。

     最後是Test.java

import net.sf.hibernate.*;







import net.sf.hibernate.cfg.*;








 


 



public class Test {








 


 



    public static void main(String[] args) {







        try {







            SessionFactory sf = new Configuration().configure().buildSessionFactory();







            Session session = sf.openSession();







            Transaction tx = session.beginTransaction();







            for (int i = 0; i < 20; i++) {







                Customer customer = new Customer();







                customer.setUsername("customer" + i);







                customer.setPassword("customer");







                session.save(customer);







            }








 


 



            tx.commit();







            session.close();







        }







        catch (HibernateException e) {







            e.printStackTrace();







        }







    }







}








 


 



好了,在項目中添加對Hibernate庫檔案的引用,編譯執行,你會在資料庫中找到新添加的記錄。


 


 


代碼部分取自史上最簡單的Hibernate入門簡介by watano_cc,根據SQL Server改動。



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。