日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate的核心API

發布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate的核心API 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Configuration:負責管理Hibernate的配置信息
  1.加載核心配置文件
    核心配置有兩種:
      hibernate.properties
        加載:Configuration configuration = new Configuration();
      hibernate.cfg.xml:
        加載:Configuration configuration = new Configuration().configure();

  2.加載映射文件
    第一種寫法:
      configuration.addResource("cn/yzu/hibernate3/demo1/Customer.hbm.xml");
    第二種寫法:(要求:映射文件名稱要規范,類與映射在同一個包下)
      configuration.addClass(Customer.class);

SessionFactory:Session工廠
  Configuration對象根據當前的配置信息生成 SessionFactory對象,SessionFactory 對象中保存了當前的數據庫配置信息和所有映射關系以及預定義的SQL語句
  SessionFactory 對象是線程安全的,SessionFactory還負責維護Hibernate的二級緩存,SessionFactory對象根據數據庫信息,維護連接池,創建Session(相當于Connection)對象

  抽取工具類

public class HibernateUtils {private static Configuration configuration;private static SessionFactory sessionFactory;static{configuration = new Configuration().configure();sessionFactory = configuration.buildSessionFactory();}public static Session openSession(){return sessionFactory.openSession();}public static void main(String[] args) {openSession();} }

?

  在Hibernate中使用c3p0連接池
    引入c3p0的jar包:c3p0-0.9.1.jar
    在核心配置中添加一段配置:

<!-- C3P0連接池設定--> <!-- 使用c3po連接池 配置連接池提供的供應商--> <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider </property> <!--在連接池中可用的數據庫連接的最少數目 --> <property name="c3p0.min_size">5</property> <!--在連接池中所有數據庫連接的最大數目 --> <property name="c3p0.max_size">20</property> <!--設定數據庫連接的過期時間,以秒為單位, 如果連接池中的某個數據庫連接處于空閑狀態的時間超過了timeout時間,就會從連接池中清除 --> <property name="c3p0.timeout">120</property> <!--每3000秒檢查所有連接池中的空閑連接 以秒為單位--> <property name="c3p0.idle_test_period">3000</property>

?

Session(相當于 JDBC的 Connection)
  Session 是應用程序與數據庫之間交互操作的一個單線程對象,是 Hibernate 運作的中心,是線程不安全的,所有持久化對象必須在 session 的管理下才可以進行持久化操作,Session 對象有一個一級緩存,顯式執行 flush 之前,所有的持久化操作的數據都緩存在 session 對象處,持久化類與 Session 關聯起來后就具有了持久化的能力,Session維護了Hiberante一級緩存.

  方法:

    save()/persist()    :添加
    update()       ? :修改
    saveOrUpdate()   ? :增加和修改對象
    delete()        ??:刪除對象
    get()/load()      :根據主鍵查詢
    createQuery()    ? :創建一個Query接口,編寫HQL語句
    createSQLQuery()  ?:創建一個SQLQuery接口,編寫SQL語句數據庫操作對象
    createCriteria()    ?:返回一個Criteria接口.條件查詢

Transaction
  獲得:Transaction tx = session.beginTransaction();

  常用方法:
    commit() :提交相關聯的session實例
    rollback() :撤銷事務操作
    wasCommitted() :檢查事務是否提交

  如果沒有開啟事務,那么每個Session的操作,都相當于一個獨立的事務

Query
  Query代表面向對象的一個Hibernate查詢操作
  session.createQuery 接收一個HQL語句
    HQL是Hibernate Query Language縮寫, 語法很像SQL語法,但是完全面向對象的

  例子:

// 1.簡單查詢 List<Customer> list = session.createQuery("from Customer").list();// 2.條件查詢: List<Customer> list = session.createQuery("from Customer where name = ?").setParameter(0, "芙蓉").list();// 3.分頁查詢:select * from customer limit a,b; a:從哪開始 b:每頁顯示記錄數. Query query = session.createQuery("from Customer"); query.setFirstResult(3); query.setMaxResults(3); List<Customer> list = query.list();

?

Criteria(條件查詢接口)

// 1.簡單查詢 List<Customer> list = session.createCriteria(Customer.class).list();// 2.條件查詢: Criteria criteria = session.createCriteria(Customer.class); criteria.add(Restrictions.eq("name","芙蓉")); List<Customer> list = criteria.list();// 3.分頁查詢: Criteria criteria = session.createCriteria(Customer.class); criteria.setFirstResult(3); criteria.setMaxResults(3); List<Customer> list = criteria.list();

轉載于:https://www.cnblogs.com/fengmingyue/p/6166329.html

新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的Hibernate的核心API的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。