国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

簡介Java的Hibernate框架中的Session和持久化類

2019-11-26 14:45:23
字體:
來源:轉載
供稿:網友

Session
Session對象用于獲取與數據庫的物理連接。 Session對象是重量輕,設計了一個互動是需要與數據庫每次被實例化。持久化對象被保存,并通過一個Session對象中檢索。

會話中的對象不應該保持開放很長一段時間,因為他們通常不被線程安全的,他們應該被創建并根據需要摧毀他們。這次會議的主要功能是提供創建,讀取和刪除操作映射的實體類的實例。實例中可能存在以下三種狀態之一在給定時間點:

短暫性: 持久化類的未與會話相關聯,并在數據庫中沒有代表性,沒有標識值的新實例被Hibernate認為是暫時的。

持久性: 可以做一個瞬態的實例持久化通過將它與一個會話相關聯。持久性實例都有一個表示在數據庫中,一個標識符值,與會話相關聯。

獨立性: 一旦我們關閉Hibernate的Session,持久化實例將成為一個分離的實例。

一個Session實例是可序列化的,如果它的持久化類是可序列化的。一個典型的事務應該使用下面的語句:

Session session = factory.openSession();Transaction tx = null;try {  tx = session.beginTransaction();  // do some work  ...  tx.commit();}catch (Exception e) {  if (tx!=null) tx.rollback();  e.printStackTrace(); }finally {  session.close();}

如果Session拋出異常,事務必須回滾,會話必須被丟棄。

持久化類
Hibernate的整個概念是采取從Java類屬性的值,并將持久到數據庫表。一個映射文件Hibernate的幫助確定如何從拉動類的值,并將它們映射與表和相關的域。

其對象或實例將存儲在數據庫表中的Java類在Hibernate中稱為持久化類。 Hibernate的效果最好,如果這些類遵循一些簡單的規則,也稱為普通Java對象(POJO)編程模型。有下列持久化類的主要規則,但是,這些規則并不是必需的。

將所有的持久化Java類需要一個默認的構造函數。

所有類應該包含為了讓容易識別對象內Hibernate和數據庫的ID。此屬性映射到數據庫表的主鍵列。

所有屬性將被持久化應該聲明為private,并已在JavaBean風格的定義的getXXX和setXXX方法。

Hibernate的關鍵功能,代理,取決于持久化類或者是非final的,或者說聲明的所有公共方法的接口的實現。

所有的類不擴展或實現的EJB框架需要進行一些專門的類和接口。

POJO名稱用于強調一個給定的對象是一個普通的Java對象,而不是一個特殊的對象,好更不是Enterprise JavaBean。

一個簡單的POJO例子:
基于上面提到的一些規則,我們可以如下定義一個POJO類:

public class Employee {  private int id;  private String firstName;   private String lastName;    private int salary;   public Employee() {}  public Employee(String fname, String lname, int salary) {   this.firstName = fname;   this.lastName = lname;   this.salary = salary;  }  public int getId() {   return id;  }  public void setId( int id ) {   this.id = id;  }  public String getFirstName() {   return firstName;  }  public void setFirstName( String first_name ) {   this.firstName = first_name;  }  public String getLastName() {   return lastName;  }  public void setLastName( String last_name ) {   this.lastName = last_name;  }  public int getSalary() {   return salary;  }  public void setSalary( int salary ) {   this.salary = salary;  }}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武夷山市| 行唐县| 永平县| 安龙县| 安宁市| 怀柔区| 城步| 榆中县| 大安市| 江陵县| 大余县| 鹰潭市| 台州市| 尼勒克县| 浙江省| 兴城市| 疏附县| 怀化市| 高陵县| 海城市| 凤冈县| 桦川县| 皮山县| 微博| 金山区| 鄂尔多斯市| 上犹县| 沭阳县| 光泽县| 临漳县| 陈巴尔虎旗| 义乌市| 肇州县| 林西县| 彭阳县| 昌邑市| 醴陵市| 恩施市| 乳山市| 浮梁县| 阳城县|