標籤:提高 news ddl generator 簡單的 factory 方便 resource actor
先來瞭解兩個概念
一、什麼是持久層?
持久是相對於瞬時來說的,簡單說就是把資料儲存到資料庫中,然後持久儲存到存放裝置上,不像放在記憶體中斷電就消失。公司專屬應用程式中資料很重要(各種訂單資料、客戶資料、庫存資料之類的),比應用程式本身更重要,所以需要把資料持久化。
二、什麼是對象關係映射(ORM)
ORM是一種為瞭解決物件導向與關聯式資料庫存在的互不匹配的現象的技術。簡單的說,ORM是通過使用描述對象和資料庫之間映射的中繼資料,將java程式中的對象自動持久化到關聯式資料庫中。本質上就是將資料從一種形式轉換到另外一種形式。
Hibernate
一、什麼是Hibernate?
Hibernate是一個基於Java的開放原始碼的持久化中介軟體,是持久層的一種實現方式,它對JDBC做了輕量級封裝,不僅提供ORM映射服務,還提供資料查詢和資料緩衝功能,Java人員可以方便地通過Hibernate API來操縱資料庫。
二、Hibernate優點
- l 提高生產力。不用寫大量的sql語句。
- l 更加物件導向了,重點考慮對象,不用考慮sql。
- l 移植性,用hibernate寫的代碼不需要改變,如改變資料庫,只要修改dialet(適配器就可以)。
- l 透明持久化對象。(News對象不繼承任何架構。重用性更好)
三、Hibernate體繫結構和開發步驟
四、Hibernate第一個程式
官網地址: www.hibernate.org
(不同的Hibernate版本使用方法會有稍許差異)
3.6.0版本百度網盤分享:http://pan.baidu.com/s/1i4I1mcd
1 建立Java工程,並添加如下jar包:
- {hibernate-_home}/hibernate3.jar
- {hibernate-_home}/lib/required/*.jar
- {hibernate-_home}/lib/jpa/hibernate-jpa-2.0-api-1.0.0.Final.jar (如果不加此包,會有異常:java.lang.ClassNotFoundException: javax.persistence.EntityListeners)
- 資料庫對應的JDBC驅動(例如oarcle資料庫對應ojdbc14.jar)
- 還可以加入日誌相關的jar包(不加也可以):因已經添加了{hibernate-_home}/lib/required/slf4j-api-1.6.1.jar只需要下載slf4j-1.6.1.zip,添加其中的slf4j-nop-1.6.1.jar
2 建立持久化對象
package com.silvan.pojo;
/**
* 新聞
*/
public class News {
private Integer id;
private String newsTitle;
private String newsContent;
get/set……
}
3 建立對象關係對應檔
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.silvan.pojo.News" table="t_news">
<id name="id" column="id">
<generator class="native"><!-- id的建置原則:從序列中產生 -->
<param name="sequence">news_sequence</param>
</generator>
</id>
<property name="newsTitle" column="news_title"></property>
<property name="newsContent" column="news_content"></property>
</class>
</hibernate-mapping>
4 建立Hibernate設定檔
<?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" >
<hibernate-configuration>
<!-- 一個sessionfactory配置一個資料庫 -->
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.username">zhouyq</property>
<property name="hibernate.connection.password">123456</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:zhou</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">udpate</property>
<!-- 載入對應檔 -->
<mapping resource="com/silvan/pojo/News.hbm.xml"/>
</session-factory>
</hibernate-configuration>
5 通過Hibernate API訪問資料庫
未完待續
Hibernate入門