ORM框架通過映射(反射)獲取數據庫的數據


  ORM(Object Relational Mapping)框架采用元數據來描述對象一關系映射細節,元數據一般采用XML格式,並且存放在專門的對象一映射文件中。
只要提供了持久化類與表的映射關系,ORM框架在運行時就能參照映射文件的信息,把對象持久化到數據庫中。當前ORM框架主要有四種:Hibernate(Nhibernate),iBATIS,mybatis,EclipseLink。
  ORM是通過使用描述對象和數據庫之間映射的元數據,在我們想到描述的時候自然就想到了xml和特性(Attribute).目前的ORM框架中,Hibernate就是典型的使用xml文件作為描述實體對象的映射框架,而大名鼎鼎的Linq則是使用特性(Attribute)來描述的。

元數據(Metadata)

  是描述其它數據的數據(data about other data),或者說是用於提供某種資源的有關信息的結構數據(structured data)。元數據是描述信息資源或數據等對象的數據,其使用目的在於:識別資源;評價資源;追蹤資源在使用過程中的變化;實現簡單高效地管理大量網絡化數據;實現信息資源的有效發現、查找、一體化組織和對使用資源的有效管理。

對映射獲得數據庫的數據放大做簡單的介紹

創建一個數據表相對應的類Student   包含:屬性stuid、stuname、tid以及相對應的set/get方法,右側是數據庫對應的表信息

下面是數據庫個字段對應的數據類型

1.通過映射獲取student類的實例

path表示Student類的全類名      object表示通過映射(反射)獲得的student的實例

2.通過JDBC方法獲取數據連接、執行sql語句、獲得查詢結果集

步驟:加載Driver驅動、獲取數據庫連接connection、通過連接獲得prepareDstatement對象、Resultset接受執行sql語句的結果集

ps.setInt(1,3)----設置查詢stuid=3;

3.遍歷結果集

通過rs.getMetaDate()(返回數據類型是ResultSetMetaData)獲取結果集的元數據 ,再由元數據的getColumnCount()方法獲得數據庫表Student的字段個數

通過循環逐一獲得字段對應的數據,這里注意在循環過程中下標從1開始,下標最大值等於字段的個數

  獲得字段對應的set方法

寫一個字符串拼接方法,獲得給定字符串的set方法

例如:傳入name  返回setName

  循環獲得數據

  通過元數據的getColumnName(int index)(返回結果是String類型)方法,獲得字段的名稱;再通過元數據的getColumnTypeName(int index)(返回值String)獲得

字段對應的數據類型,將字段名傳入寫好的上述寫好的方法setMethod(String name)中獲得字段對應的set方法名稱

  判斷字段的數據類型,調用對應的set方法

  Student實體類的getClass()方法,運行時獲得Student類,通過類的getMethod(setMethod,Integer.class)(以integer類型距離)方法獲得set方法,通過invoke()傳入Student的實體類和字段對應的值re.getInt(column_name)執行set方法

執行打印結果

 將Student的實體類轉換成Student類型,並打印出來

 

============================================================================================

循環打印出對應的數據類型

 

元數據的getColumnType(int index)返回字段數據對應的字段長度

 

 

============以上內容是個人學習總結=================

================僅供參考======================

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM