日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
連Hibernate技術(shù)都不清楚,你敢說你自己會ORM框架?

 前言

成都創(chuàng)新互聯(lián)公司專注于郫都網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供郫都營銷型網(wǎng)站建設(shè),郫都網(wǎng)站制作、郫都網(wǎng)頁設(shè)計、郫都網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造郫都網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供郫都網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

ORM框架不是一個新話題,它已經(jīng)伴隨我們很多年了。它提供了概念性的、易于理解的數(shù)據(jù)模型,將數(shù)據(jù)庫中的表和內(nèi)存中的對象建立了很好的映射關(guān)系。在Java中常用的ORM框架主要有兩個:Hibernate和iBatis。本篇文章主要介紹Hibernate的使用方法,后續(xù)會出介紹iBatis的文章。

傳統(tǒng)的MVC開發(fā)模式

  1. M:Model包括pojo、service、dao。
  2. V:View 包括jsp、html、模塊引擎。
  3. C:Controll 包括我們動態(tài)網(wǎng)絡(luò)資源的技術(shù):Servlet。

SSH框架在開發(fā)中的作用

  • S:Struts/SpringMVC: 實際上解決的是我們的控制器的問題(簡單的可以認(rèn)為是Servlet的封裝)。
  • Spring: 整合其余的第三方框架,就是為 Srvice 層提供事務(wù)。
  • Hibernate:其實就是DAO層的解決方案。

同時可以看下其余框架(SSM、SSS)的含義:

Hibernate是什么

1.Hibernate是一個非侵入式ORMapping框架

  • 非侵入式框架:我們在使用這個框架的時候,不需要繼承或者實現(xiàn)這個框架中的類或者接口,這種類型的框架就叫做非侵入式的框架,非侵入式的框架在使用的時候更好的和原有的框架實現(xiàn)了解耦
  • 侵入式框架:我們在使用這個框架的時候,需要繼承或者實現(xiàn)這個框架中的某些類或者接口,這種框架叫做侵入式框架

2.ORMapping解析

  • O:Object
  • R:Relation
  • M:Mapping 映射
  • a.Hibernate能夠?qū)ava對象通過映射的關(guān)系映射到數(shù)據(jù)庫
  • b.Hibernate能夠?qū)?shù)據(jù)庫的數(shù)據(jù)通過映射關(guān)系映射到Java對象

Hibernate就是能夠通過操作Java對象來達到操作數(shù)據(jù)庫的一門技術(shù)。

Hibernate能干什么

簡單的說:實現(xiàn)數(shù)據(jù)庫的所有操作(CRUD),是原有DAO層的一個解決方案,也是一個替代品。

Hibernate的簡單使用

「簡單使用:」

導(dǎo)包,將下載下來的required+jpa相關(guān)的包放到一個文件里面

在src下面創(chuàng)建hibernate.cfg.xml配置文件

 
 
 
 
  1.  
  2. "-//Hibernate/Hibernate Configuration DTD//EN"
  3. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  4.  
  5.     
  6.         
  7.         com.mysql.jdbc.Driver
  8.         
  9.         jdbc:mysql:///qianyu
  10.         
  11.         root
  12.         
  13.         root
  14.         
  15.         org.hibernate.dialect.MySQL5Dialect
  16.         
  17.         update
  18.         
  19.         
  20.         
  21.         
  22.         
  23.     
  24.  

創(chuàng)建Java的類的對象

 
 
 
 
  1.  public class User implements Serializable{
  2.  private static final long serialVersionUID = -6949433888868762441L;
  3.  private int uId;
  4.  
  5.  private String userName;
  6.  
  7.  private String userPwd;
  8.  public User(int uId, String userName, String userPwd) {
  9.   super();
  10.   this.uId = uId;
  11.   this.userName = userName;
  12.   this.userPwd = userPwd;
  13.  }
  14.  public User() {
  15.   super();
  16.  }
  17.  public int getuId() {
  18.   return uId;
  19.  }
  20.  public void setuId(int uId) {
  21.   this.uId = uId;
  22.  }
  23.  public String getUserName() {
  24.   return userName;
  25.  }
  26.  public void setUserName(String userName) {
  27.   this.userName = userName;
  28.  }
  29.  public String getUserPwd() {
  30.   return userPwd;
  31.  }
  32.  public void setUserPwd(String userPwd) {
  33.   this.userPwd = userPwd;
  34.  }
  35.  @Override
  36.  public String toString() {
  37.   return "User [uId=" + uId + ", userName=" + userName + ", userPwd=" + userPwd + "]";
  38.  }
  39.  
  40. }

編寫測試類

 
 
 
 
  1. @Test
  2.  public void testHelloWord() throws Exception {
  3.   //引入配置文件
  4.   Configuration cfg=new Configuration().configure("hibernate.cfg.xml");
  5.   //創(chuàng)建SessionFactory對象
  6.   SessionFactory sf=cfg.buildSessionFactory();
  7.   //創(chuàng)建會話
  8.   Session session=sf.openSession();
  9.   //開啟事務(wù)
  10.   session.beginTransaction();
  11.   //操作對象
  12.   
  13.   User user=new User(1,"小羽","110");
  14.   
  15.   //開始操作
  16.   session.save(user);
  17.   
  18.   //進行事務(wù)的提交
  19.   
  20.   session.getTransaction().commit();
  21.   
  22.   session.close();
  23.  
  24.  }

Hibernate中的hibernate.cfg.xml配置文件的詳解

 
 
 
 
  1. "-//Hibernate/Hibernate Configuration DTD//EN"
  2. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  3.  
  4.     
  5.     
  6.         
  7.         com.mysql.jdbc.Driver
  8.         
  9.         jdbc:mysql:///qianyu
  10.         
  11.         root
  12.         
  13.         root
  14.         
  15.         
  16.         
  17.         org.hibernate.dialect.MySQL5Dialect
  18.         
  19.         
  20.         update
  21.         
  22.         true
  23.         
  24.         true
  25.           
  26.         
  27.         
  28.        
  29.        
  30.        
  31.         
  32.     
  33.  

Hibernate的xxx.hbm.xml配置文件的詳解

 
 
 
 
  1.  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  2.  "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  3.     
  4.  
  5.  
  6.      
  7.   
  8.       
  9.    
  10.   
  11.   
  12.   
  13.   
  14.     
  15.  

Hibernate中的CRUD的實現(xiàn)

 
 
 
 
  1. 添加數(shù)據(jù)
  2.     session.save(user);  
  3.   session.persist(user);
  4. 修改數(shù)據(jù)
  5.         session.beginTransaction(); 
  6.   //查詢數(shù)據(jù)(積極的加載)
  7.   User user=session.get(User.class,1);
  8.   //下面支持的是懶加載
  9.   user.setUserName("xxxxx");
  10.   user.setUserPwd("yyyyy");
  11.   session.getTransaction().commit();
  12. 數(shù)據(jù)查詢
  13.         //查詢數(shù)據(jù)(積極的加載)
  14.   User user=session.get(User.class,1);
  15.   //下面支持的是懶加載
  16.   User user2=session.load(User.class,1); 
  17.    刪除數(shù)據(jù)
  18.        //查詢數(shù)據(jù)(積極的加載)
  19.   User user=session.get(User.class,1);
  20.   session.delete(user);

Hibernate中的幫助類的編寫

 
 
 
 
  1. public class HibernateUtils {
  2.  private static Configuration cfg=null;
  3.  private static SessionFactory sf=null;
  4.  private static ThreadLocal threadLocal=null;
  5.  static{
  6.   //初始化線程的局部變量
  7.   threadLocal=new ThreadLocal();
  8.   //加載配置文件
  9.   cfg=new Configuration().configure("config/hibernate.cfg.xml");
  10.   //生成我們的工廠
  11.   sf=cfg.buildSessionFactory();
  12.  }
  13.  
  14.  /**
  15.   * 獲取session的玩法
  16.   * @Title: getSession   
  17.   * @Description: TODO
  18.   * @param: @return      
  19.   * @return: Session      
  20.   * @throws
  21.   */
  22.  public static Session getSession(){
  23.    Session session=threadLocal.get();
  24.    if(null==session){
  25.     session=sf.openSession();
  26.     session.beginTransaction();
  27.     threadLocal.set(session);
  28.    }
  29.    return session;
  30.  }
  31.  
  32.  /**
  33.   * 關(guān)閉Session
  34.   * @Title: close   
  35.   * @Description: TODO
  36.   * @param:       
  37.   * @return: void      
  38.   * @throws
  39.   */
  40.  public static void close(){
  41.   Session session=threadLocal.get();
  42.   if(null!=session){
  43.    session.getTransaction().commit();
  44.    session.close();
  45.    threadLocal.remove();
  46.   }
  47.  }
  48. }

注意事項

  1. 我們hibernate.cfg.xml配置文件中這個括hibernate.是可以省略
  2. 為什么不開啟事務(wù)也能查詢到數(shù)據(jù)?是因為默認(rèn)Hibernate存在只讀事務(wù),只讀事務(wù)是可以完成數(shù)據(jù)的讀的操作的,如果是要完成增刪改的話那么就需要讀寫事務(wù),這個時候就需要開啟事務(wù)

Save和Persist的區(qū)別

  • Save在保存數(shù)據(jù)的時候,如果id是自增長,你給定id和不給定id都是對的。
  • Persist在保存數(shù)據(jù)的時候,如果id是自增長的,你給定id是會報錯的。

結(jié)語

本篇關(guān)于Hibernate的介紹就先到這里結(jié)束了,后續(xù)會出更多關(guān)于Hibernate系列更多文章,謝謝大家支持!


網(wǎng)頁題目:連Hibernate技術(shù)都不清楚,你敢說你自己會ORM框架?
分享路徑:http://www.5511xx.com/article/cdpogio.html