文章標題

Hibernate 學習筆記
Hibernate :面向持久層的框架
hibernate環境搭建:
1.導入hibernate jar 包,sql 驅動 jar 包
2.創建配置文件 hibernate(xml)
3.創建實體類,與數據庫對應
4.實體關係映射文件(多表關聯體現比較明顯)
5.調用Hibernate API訪問數據庫,實現增刪改查功能
save()–insert into :實體關係映射文件+配置文件完成封裝
6.配置文件 hibernate.cfg.xml
dtd 約束

<hibernate-configuration>
<session-factory>
<--!配置連接數據庫信息-->
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/*</property>
<!-- Hibernate基本配置 -->
<!-- 配置Hibernate數據庫方言 -->
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<--!是否打印sql語句-->
<property name="show_sql">true</property>
       <--!是否自動生成數據庫表-->
        <property name="hbm2ddl.auto">update</property>
  <--!-->
    <!-- 是否對 SQL 進行格式化 -->
    <property name="format_sql">true</property>
        <mapping resource="hbm/User.hbm.xml" />
</session-factory>
</hibernate-configuration>

7.配置實體關係映射文件
注:表名和實體類名相同(在classname.hbm.xml中配置)

<hibernate-mapping>
<class name="class-name "  table="table-name">
<--!primary key-->
<id  name="id_name" type="java.lang.Integer">
<column name="id_name"> </column>
<generator class="native"></generator>
<--!屬性(property)-->
<property >
<!-- 實體關係映射文件 -->
        <mapping resource="com/hzit/entity/News.hbm.xml"/>
    </session-factor
</hibernate-mapping>

8使用Hibernate 訪問數據庫

1)創建sessionFactory 對象

SessionFactory  sessionFactory = null;

2)創建 Configuration 對象:解析Hibernate.cfg.xml 以及實體關係映射‘
//無參構造函數,解析hibernate.cfg.xml,也可以調用有參構造,指定解析的xml文件
Configuratiuon configuration = new Configuration ().configure();
3)創建 serviceFactory 對象:hibernate 基本配置 和服務都需要在該對象中進行註冊才能生效

ServiceRegistry  serviceRegistry = new ServiceRegistryBuilder().applySettinggs(configuration.getProperties()).buildServiceRegistry(); 

4)創建 session對象
注:HttpSession與Hibernate中session不一樣,區別見下面
Session session = sessionFactory.openSession();

5)創建事物
Transaction transction = session.beginTransction();
set對象的屬性
……
6)調用 hibernate API完成保存操作
session.save(“對象”);
//提交事務
transction.commit();
7)關閉資源

session.close();
sessionFactory.close();

注:javax.servlet.http.HttpSession是一個抽象接口
  它的產生:J2EE的Web程序在運行的時候,會給每一個新的訪問者建立一個HttpSession,這個Session是用戶身份的唯一表示。注意,是容器(Tomcat,Resin)自動創建的。
  用途:存放這個用戶的一些經常被用到的信息,例如:用戶名,權限。例如在購物車程序裏,存放用戶買的商品。
  銷燬:一定時間(跟容器有關)內,用戶無任何動作,session自動銷燬。
得到的方法:
  

HttpSession session = request.getSession();

  常用方法setAttribute

  session.setAttribute(key,value);

  這樣在另一個jsp或者Servlet裏,可以用
  session.getAttribute(key); 得到value
  類似一個Map
二、org.hibernate.Session
  它是hibernate操作數據庫的一個句柄對象。它跟上面那個Session唯一的相似處就是名字有點像,其他沒任何一樣的地方。
  一般的Hibernate程序中,Session由用戶手動獲取,手動關閉。
  正規項目中,在業務層獲取Session
  

Session session = HibernateSessionFactory.openSession();

  然後把此session傳給dao層,將數據持久化或其他的操作。
  一次業務邏輯可能調用多個dao方法,例如銀行轉帳,是一個先減後增的過程,所以會調用2個dao裏的方法(甲帳戶減,乙帳戶增)。因此,可以利用業務層產生的同一個Session來做這件事

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章