ORM框架通过映射(反射)获取数据库的数据
ORM(Object Relational Mapping)框架采用元數(shù)據(jù)來描述對象一關(guān)系映射細(xì)節(jié),元數(shù)據(jù)一般采用XML格式,并且存放在專門的對象一映射文件中。
只要提供了持久化類與表的映射關(guān)系,ORM框架在運(yùn)行時就能參照映射文件的信息,把對象持久化到數(shù)據(jù)庫中。當(dāng)前ORM框架主要有四種:Hibernate(Nhibernate),iBATIS,mybatis,EclipseLink。
ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),在我們想到描述的時候自然就想到了xml和特性(Attribute).目前的ORM框架中,Hibernate就是典型的使用xml文件作為描述實體對象的映射框架,而大名鼎鼎的Linq則是使用特性(Attribute)來描述的。
元數(shù)據(jù)(Metadata)
是描述其它數(shù)據(jù)的數(shù)據(jù)(data about other data),或者說是用于提供某種資源的有關(guān)信息的結(jié)構(gòu)數(shù)據(jù)(structured data)。元數(shù)據(jù)是描述信息資源或數(shù)據(jù)等對象的數(shù)據(jù),其使用目的在于:識別資源;評價資源;追蹤資源在使用過程中的變化;實現(xiàn)簡單高效地管理大量網(wǎng)絡(luò)化數(shù)據(jù);實現(xiàn)信息資源的有效發(fā)現(xiàn)、查找、一體化組織和對使用資源的有效管理。
對映射獲得數(shù)據(jù)庫的數(shù)據(jù)放大做簡單的介紹
創(chuàng)建一個數(shù)據(jù)表相對應(yīng)的類Student ? 包含:屬性stuid、stuname、tid以及相對應(yīng)的set/get方法,右側(cè)是數(shù)據(jù)庫對應(yīng)的表信息
下面是數(shù)據(jù)庫個字段對應(yīng)的數(shù)據(jù)類型
1.通過映射獲取student類的實例
path表示Student類的全類名 ? ? ?object表示通過映射(反射)獲得的student的實例
2.通過JDBC方法獲取數(shù)據(jù)連接、執(zhí)行sql語句、獲得查詢結(jié)果集
步驟:加載Driver驅(qū)動、獲取數(shù)據(jù)庫連接connection、通過連接獲得prepareDstatement對象、Resultset接受執(zhí)行sql語句的結(jié)果集
ps.setInt(1,3)----設(shè)置查詢stuid=3;
3.遍歷結(jié)果集
通過rs.getMetaDate()(返回數(shù)據(jù)類型是ResultSetMetaData)獲取結(jié)果集的元數(shù)據(jù) ,再由元數(shù)據(jù)的getColumnCount()方法獲得數(shù)據(jù)庫表Student的字段個數(shù)
通過循環(huán)逐一獲得字段對應(yīng)的數(shù)據(jù),這里注意在循環(huán)過程中下標(biāo)從1開始,下標(biāo)最大值等于字段的個數(shù)
獲得字段對應(yīng)的set方法
寫一個字符串拼接方法,獲得給定字符串的set方法
例如:傳入name ?返回setName
循環(huán)獲得數(shù)據(jù)
通過元數(shù)據(jù)的getColumnName(int index)(返回結(jié)果是String類型)方法,獲得字段的名稱;再通過元數(shù)據(jù)的getColumnTypeName(int index)(返回值String)獲得
字段對應(yīng)的數(shù)據(jù)類型,將字段名傳入寫好的上述寫好的方法setMethod(String name)中獲得字段對應(yīng)的set方法名稱
判斷字段的數(shù)據(jù)類型,調(diào)用對應(yīng)的set方法
Student實體類的getClass()方法,運(yùn)行時獲得Student類,通過類的getMethod(setMethod,Integer.class)(以integer類型距離)方法獲得set方法,通過invoke()傳入Student的實體類和字段對應(yīng)的值re.getInt(column_name)執(zhí)行set方法
執(zhí)行打印結(jié)果
?將Student的實體類轉(zhuǎn)換成Student類型,并打印出來
?
============================================================================================
循環(huán)打印出對應(yīng)的數(shù)據(jù)類型
?
元數(shù)據(jù)的getColumnType(int index)返回字段數(shù)據(jù)對應(yīng)的字段長度
?
?
============以上內(nèi)容是個人學(xué)習(xí)總結(jié)=================
================僅供參考======================
?
轉(zhuǎn)載于:https://www.cnblogs.com/kuoAT/p/6145755.html
總結(jié)
以上是生活随笔為你收集整理的ORM框架通过映射(反射)获取数据库的数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解析可变参数函数的实现原理(printf
- 下一篇: java毕业设计水库洪水预报调度系统源码