Hibernate初學之優缺點

火星人 @ 2014-03-09 , reply:0


首先比較一下JDBC的優缺點:
JDBC的優點
直接底層操作,提供了很簡單、便捷的訪問資料庫的方法,跨平台性比較強.靈活性比較強,可以寫很複雜的SQL語句.
JDBC的缺點
1.JAVA是面向對象的,JDBC沒有做到使數據能夠面向對象的編程,使程序員的思考仍停留在SQL語句上.
2.操作比較繁瑣,很多代碼需要重複寫很多次.
3.如果遇到批量操作,頻繁與資料庫進行交互,容易造成效率的下降.
Jdbc是一個比較底層的東西 靈活寫SQL語句
1、註冊驅動
2、獲得連接
3、產生一個Statement
4、進行操作
返回數據ResultSet
1、new List對象
2、把ResultSet數據放入List過程中
A a = new A();
a.setXXX(rs.getString("xxx"));
代碼比較繁瑣
純的JDBC是沒有緩存的
模型不匹配(阻抗不匹配)
Java面向對象語言,對象模型,其主要概念有:繼承、關聯、多態等;資料庫是關係模型,其主要概念有:表、主鍵、外鍵等.
對象模型中對象與對象之間的關聯關係與關係模型中資料庫表之間的關係無法一一對應.
對象模型中對象的繼承關係在關係模型中無法直接表示.
對象模型中對象的等值性(equals)在關係模型中無法直接實現.
對象模型中有關聯的對象之間的導航訪問在關係模型中無法直接實現.
解決辦法
1使用JDBC手工轉換.
2使用ORM(Object Relation Mapping對象關係映射)框架來解決.
Hibernate是一個開源ORM框架.
ORM全稱Object Relation Mapping,即對象關係映射.它是一種用來完成對象模型到關係模型的映射技術.
就是把應用程序中的對象數據持久化到關係資料庫的表的一種技術.
使用ORM( Object Relation Mapping )框架來解決.主流的ORM框架有JBoss公司的Hibernate、Oracle公司的TopLink、Apache組織的OJB、Sun公司的JDO.
簡單的說:ORM能利用面向對象的思想開放基於關係型資料庫的應用程序,它的主要工作是將對象數據保存到關係資料庫的表中,以及將關係資料庫表中數據讀入到對象中.
下載地址http://www.hibernate.org,使用3.3版本.
解壓獲取必需類庫文件
將下載目錄/hibernate3.jar和/lib下的hibernate運行時的包加入classpath中:
安裝配置
配置文件hibernate.cfg.xml和hibernate.properties,XML和properties兩種,這兩個文件的作用一樣,提供一個即可,推薦XML格式,下載目錄/etc下是示例配置文件.
可以在配置文件指定:
資料庫的URL、用戶名、密碼、JDBC驅動類、方言等.


啟動時Hibernate會在CLASSPATH里找這個配置文件.
映射文件(hbm.xml,對象模型和關係模型的映射).在/eg目錄下有完整的hibernate示例.
步驟:
1.新建java項目,並加入相應的jar包,及jdbc驅動.
2.創建持久化類
3. 準備資料庫表
4.創建配置文件 hibernate.cfg.xml
5.創建映射文件 xxx.hbm.xml
6.創建測試文件
Hibernate.connection.url 表示要鏈接的資料庫地址
Hibernate.connection.driver_class 表示要鏈接的資料庫的驅動類
Hibernate.connection.username 要連接的資料庫的用戶名
Hibernate.connection.password 要連接的資料庫的密碼
Hibernate.dialect 表示要使用的資料庫的類型
org.hibernate.dialect.MySQL5Dialect mysql資料庫
org.hibernate.dialect.Oracle9Dialect oracle資料庫
org.hibernate.dialect.SQLServerDialect SQLServer資料庫
hibernate.hbm2ddl.auto
validate:載入hibernate時驗證創建表結構
update:載入hibernate時自動更新資料庫結構,如果表存在不用創建,如果不存在就創建.
create:每一次載入hibernate時都創建表結構
create-drop:載入hibernate時創建,退出時刪除
<hibernate-mapping package="com.hbsi.domain">
<class name="User" table="user">
<id name="id">
<generator class = "native" />
</id>
<property name="name" />
<property name="birthday" type="datetime" />
</class> www.2cto.com
</hibernate-mapping>
<hibernate-configuration>
<session-factory name="foo">
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.password">root</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<mapping resource="com/hbsi/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
這些都是配置文件;還需要創建一個domain類;




[火星人 via ] Hibernate初學之優缺點已經有811次圍觀

http://www.coctec.com/docs/java/show-post-59771.html