一.繼承關系和關聯聚集關系映射
1.整個類層次使用一張表
2.每個葉結點使用一張表,該表保存了該類自己的和所繼承的所有屬性
3.每個類使用一張表,該表只保存OID以及對應類自己的屬性(不含所繼承的屬性)
1.“1對1”或“1對多”關系的映射,簡單地利用外鍵即可
2.“多對多”關系的映射,引入一個新的表,專門記錄這種“多對多”關系
二.編程步驟:事前準備包括建立一個project并且加入外部庫
新建一個Project HibernateSample,然后在Project上點右鍵,選擇Properties ? Java Build Path ? Libraries。選擇Add External JARs,然后將Hibernate目錄下的hibernate3.jar,以及Hibernate目錄下的lib文件夾中所有的jar文件添加進來。
另外我們還必須有MySQL的JDBC驅動,用上面的辦法同樣把mysql-connector-java-3.1.12-bin.jar添加進我們的Build Path中。
1.創建數據庫(例如User表)
2.建立對應數據庫的類的屬性與操作(例如User類)
3.編寫映射數據庫表hibernate mapping,命名為***.hbm.xml(例如User.hbm.xml)
<?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="sample.User" table="user">
<id name="id" column="id" type="java.lang.Integer">
<generator class="native" />
</id>
<property name="name" column="name" type="java.lang.String" />
<property name="age" column="age" type="java.lang.Integer" />
</class>
</hibernate-mapping>
明顯可見關注點包括
A)class中包中的類與數據庫中table的對應
B)property中 類中ID和屬性與table中字段的對應
4.編寫Hibernate配置文件hibernate configurarion file,通常命名:
<?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>
<session-factory>
<!-- 是否顯示實際操作數據庫時的SQL -->
<property name="show_sql">true</property>
<!-- SQL方言,這邊設定的是MySQL -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- JDBC驅動程序 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- JDBC URL -->
<property name="connection.url">jdbc:mysql://localhost/Sample</property>
<!-- 數據庫用戶名 -->
<property name="connection.username">root</property>
<!-- 數據庫密碼 -->
<property name="connection.password">123456</property>
<!-- 以下設置對象與數據庫表格映像文件 -->
<mapping resource="sample/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
關注點包括:
A)數據庫路徑, 數據庫用戶名, 數據庫密碼,
B)還有就是指定數據庫映射文件mapping resource
5.配置log4j.properties
在src目錄下點右鍵,選擇import,然后選擇General ? File System,接著選擇Hibernate文件夾下的etc文件夾,再選擇log4j.properties文件,最后選擇Finish。
關鍵配置文件:
hbm是映射配置
cfg是密碼,用戶,以及hbm指定配置
properties是用于配置當前數據庫連接的屬性配置
6.編程操作數據庫過程
使用對象增加數據項:
A)Configuration配置Configuration config = new Configuration().configure();
B)Session工廠獲得SessionFactory sessionFactory = config.buildSessionFactory();
C)Session獲得Session session = sessionFactory.openSession();
D)Transaction事務啟動Transaction tx = session.beginTransaction();
E)建立映射數據的實體類(例如User的一個實例)
F)session操作(例如session.save(user)插入到數據庫一個user的對象)
G)關鍵的Transaction事務提交,tx.commit();
H)清理包括Transaction對象,session對象,sessionFactory對象的有順序清理
使用Criteria查詢數據
A)配置Configuration,SessionFactory,Session與上面相同
B)創建Criteria criteria=session.createCriteria(User.class);
C)創建User列表List users = criteria.list();
D)使用迭代器Iterator iterator = users.iterator();
E)iterator.hasNext(),iterator.next()的使用
F)criteria.add(Expression.eq("name","hibernateUser2"));加上查詢約束
G)users = criteria.list();將會按照查詢約束得到列表.
使用鼓勵的HQL的Query查詢
A)創建Query例如Query query = session.createQuery("from User");
B)獲得數據List uers = query.list();
C)遍歷器使用Iterator iterator = users.iterator();又如iterator.hasNext();和iterator.next();
D)使用過濾查詢
query = session.createQuery("from User user where user.name like ?");
query.setParameter(0, "hibernateUser2");Query的setParameter()方法第一個參數是指定 ? 出現的位置,從 0 開始,第二個參數則是設定查詢條件。
然后再List uers = query.list();獲得的將是滿足username==hibernateUser2的條件的結果
E)清除session和sessionFactory使用close方法.
hibernate_rar