標籤:des style blog class c code
1、直接通過JDBC API持久化實體域對象:
A、java.sql常用介面和類:
DriverManager:驅動程式管理器,負責建立資料庫連接。
Connection:代表資料庫連接。
Statement:負責執行SQL語句。
PreparedStatement:負責執行SQL語句,具有預定義SQL語句的功能。
ResultSet:代碼SQL查詢語句的查詢結果集。
2、常用的ORM中介軟體:
Hibernate\Mybatis\Toplink\Torque\ObjectRelationBridge\FrontierSuite\Castor\FreeFROM\Expresso\JRelationFramework\VBSF\Jgrinder
3、Hibernate 核心介面:
A、Configuration類:用來讀取Hibernate設定檔,並產生SessionFactory對象。在Hibernate 的啟動過程中,Configuration 類的執行個體首先定位映射文檔的位置,讀取這些配置,然後建立一個SessionFactory對象。
B、SessionFactory介面:產生Session執行個體工廠。SessionFactory在Hibernate中實際起到了一個緩衝區的作用,它緩衝了Hibernate自動產生的SQL語句和一些其它的映射資料,還緩衝了一些將來有可能重複利用的資料。
C、Session介面:用來操作PO。它有get(),load(),save(),update()和delete()等方法用來對PO進行載入,儲存,更新及刪除等操作。它是Hibernate的核心介面。Session 對象是非安全執行緒的,因此在你的設計中,最好是一個線程只建立一個Session對象。
D、Query介面:來對PO進行查詢操。它可以從Session的createQuery()方法產生。Query介面讓你方便地對資料庫及持久對象進行查詢,它可以有兩種表達方式:HQL語言或本地資料庫的SQL語句。Query經常被用來綁定查詢參數、限制查詢記錄數量,並最終執行查詢操作。
E、Criteria介面:Criteria介面與Query介面非常類似,它允許你建立並執行物件導向的標準化查詢。
F、Transaction介面:用來管理Hibernate事務,它主要方法有commit()和rollback(),可以從Session的beginTrancation()方法產生。
G、Callback 介面:當一些有用的事件發生時――例如持久對象的載入、儲存、刪除時,Callback 介面會通知Hibernate去接收一個通知訊息。Interceptor,Lifecycle,和Validatable介面。
H、策略介面:當你感覺到Hibernate 的某些功能不足,或者有某些缺陷時,你可以開發一個自己的策略來替換它,而你所要做的僅僅只是繼承它的某個策略介面,然後實現你的新策略就可以了
主鍵的產生 (IdentifierGenerator 介面)
本地SQL語言支援 (Dialect 抽象類別)
緩衝機制 (Cache 和CacheProvider 介面)
JDBC 串連管理 (ConnectionProvider介面)
交易管理 (TransactionFactory, Transaction, 和 TransactionManagerLookup 介面)
ORM 策略 (ClassPersister 介面)
屬性存取原則 (PropertyAccessor 介面)
代理對象的建立 (ProxyFactory介面)
I、用於擴充Hibernate的功能的介面:UserType,CompositeUserType
四、使用hibernate的一般步驟:
A、建立hibernate的設定檔。
B、建立持久化類。
C、建立對象-關係對應檔。
D、通過hibernate API編寫訪問資料庫的代碼。
五、第一個hibernate程式:
A、hibernate.properties:
?
| 1 2 3 4 5 6 |
hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class=com.mysql.jdbc.Driver hibernate.connection.url=jdbc:mysql://localhost:3306/SAMPLEDB hibernate.connection.username=root hibernate.connection.password=root hibernate.show_sql=true |
B、建立持久化類:
C、建立對象-關係對應檔:
?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="mypack.Customer" table="CUSTOMERS"> <id name="id" column="ID" type="long"> <generator class="increment"/> </id> <property name="name" column="NAME" type="string" not-null="true" /> <property name="email" column="EMAIL" type="string" not-null="true" /> <property name="password" column="PASSWORD" type="string" not-null="true"/> <property name="phone" column="PHONE" type="int" /> <property name="address" column="ADDRESS" type="string" /> <property name="sex" column="SEX" type="character"/> <property name="married" column="IS_MARRIED" type="boolean"/> <property name="description" column="DESCRIPTION" type="text"/> <property name="image" column="IMAGE" type="binary"/> <property name="birthday" column="BIRTHDAY" type="date"/> <property name="registeredTime" column="REGISTERED_TIME" type="timestamp"/> </class> </hibernate-mapping> |
D、通過hibernate API編寫訪問資料庫的代碼: