導航:首頁 > 編程語言 > java映射資料庫

java映射資料庫

發布時間:2023-08-27 10:56:42

『壹』 java裡面的實體bean就是對資料庫表的完全映射嗎

你可以從這個角度來探討:先建表還是先建實體類
你如何用實體框架,象HIBERNATE這樣的ORM的時候,
首先考慮的肯定是BEAN實體類,也就是面向對象編程,面向對象操作資料庫了.
但是考慮到關聯關系的時候,情況就復雜些了.
比如一對多的情況:
拿博客系統來說吧
一篇文章BLOG,肯定有一個BLOGID,這個BLOGID肯定是唯一的
BLOG(BLOGID,USERID,TITLE,CONTENT,MSGS)(博客ID,用戶ID,標題,內容,評論)
現在有人對這個BLOG進行評論
評論MSG(MSGID,USERID,BLOG,MESSAGE)(評論ID,用戶ID,博客,評論內容)
這有兩個實體類,BLOG和MSG是一對多雙向關聯關系.
也就是說,根據這個BLOG可以知道這個BLOG下面所有的評論.
而某個MSG,肯定是對某一個BLOG進行評論的.
BLOG裡面保存著評論的信息MSGS,MSGS肯定是個集合.
其中MSG裡面保存著BLOG的信息.
實體類大概是上面那樣.
下面就要建立關聯關系的映射了.
一對多的關聯關系的映射,主要體現在多的這一端,而多的這一端在資料庫中體現就是外鍵.
也就是說,BLOG類中的MSGS是帖MSG來決定的,而資料庫中,BLOG表肯定是沒有MSG的任何欄位信息.
但是MSG中肯定有BLOG實體類BLOGID.
有時候多個表也可以設計成一個BEAN.看情況設計嘍.
建立樓主去研究下HIBERNATE裡面的關聯關系及其映射,
看實體類和資料庫中表的詳細情況.

『貳』 Java中如何實現與後台資料庫的連接

用JAVA連接資料庫主要有兩種方式,一是用JDBC-ODBC橋來連接,二是用脊旅相關廠商提供的相應驅動程序來連接,首先談談第一種連接。 x0dx0ax0dx0aJDBC-ODBC橋接器是用JdbcOdbc.Class和一個用於訪問ODBC驅動程序的本地庫實現的。對於WINDOWS平台,該本地庫是一個動態連接庫DLL(JDBCODBC.DLL)。 x0dx0ax0dx0a由於JDBC在設計上與ODBC很接近。在內部,這個驅動程序把JDBC的方法映射到ODBC調用上,這樣,JDBC就可以和任何可用的ODBC驅動程序進行交互了。這種橋接器的優點是,它使JDBC目前有能力訪問幾乎所有的資料庫。通行方式如圖所示: x0dx0ax0dx0a應用程序---JDBC API---JDBC-ODBC---ODBC API---ODBC層---數據源 x0dx0ax0dx0a具體操作方法為: x0dx0ax0dx0a首先打開控制面板的管理工具,打開數據源(ODBC),在用戶DSN裡面添加數據源(即你要連接的資料庫的名字),在這里假定連接SQL SERVER 2000的GoodsSupply資料庫。名稱填寫你要連接的資料庫的名稱(GoodsSupply),然後逐步設置,如果選用了使用SQL-SERVER密叢賀碼認證的話,就要輸入相應的用戶名及密碼連接到資料庫。一路下一步設置完成。 x0dx0ax0dx0a在JAVA裡面編寫程序進行測試,在這里我的程序是讓用戶輸入任意的表名與與列名,把該列的所有數據輸出。源代碼如下: x0dx0ax0dx0aimport java.io.BufferedReader; x0dx0aimport java.io.InputStreamReader; x0dx0aimport java.sql.*; x0dx0ax0dx0apublic class ODBCBridge { x0dx0ax0dx0apublic static void main(String[] args) { x0dx0aString url="jdbc:odbc:GoodsSupply"; x0dx0aStatement sm=null; x0dx0aString command=null; x0dx0aResultSet rs=null; x0dx0aString tableName=null; x0dx0aString cName=null; x0dx0aString result=null; x0dx0aBufferedReader input=new BufferedReader(new InputStreamReader(System.in)); x0dx0atry { x0dx0atry { x0dx0aClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //載入驅動 x0dx0a}catch(ClassNotFoundException e){ x0dx0aSystem.out.println("Can not load Jdbc-Odbc Bridge Driver"); x0dx0aSystem.err.print("ClassNotFoundException:"); x0dx0aSystem.err.println(e.getMessage()); x0dx0a} x0dx0aConnection con=DriverManager.getConnection(url,"USER","PASSWORD"); //使用SQL-SERVER2000認證 x0dx0aDatabaseMetaData dmd=con.getMetaData(); //DMD為連接的滲野派相應情況 x0dx0aSystem.out.println("連接的資料庫:"+dmd.getURL()); x0dx0aSystem.out.println("驅動程序:"+dmd.getDriverName()); x0dx0asm=con.createStatement(); x0dx0aSystem.out.println("輸入表名"); x0dx0atableName=input.readLine(); x0dx0awhile(true) { x0dx0aSystem.out.println("輸入列名(為空時程序結束):"); x0dx0acName=input.readLine(); x0dx0aif(cName.equalsIgnoreCase("")) x0dx0abreak; x0dx0acommand="select "+cName+" from "+tableName; x0dx0ars=sm.executeQuery(command); //執行查詢 x0dx0aif(!rs.next()) x0dx0aSystem.out.println("表名或列名輸入有誤"); x0dx0aelse { x0dx0aSystem.out.println("查詢結果為:"); x0dx0ado x0dx0a{ x0dx0aresult=rs.getString(cName); x0dx0a//資料庫語言設置為中文,不用轉換編碼 x0dx0a//result=new String(result.getBytes("ISO-8859-1"),"GB2312"); x0dx0aSystem.out.println(result); x0dx0a}while(rs.next()); x0dx0a} x0dx0a} x0dx0a}catch(SQLException ex) { x0dx0aSystem.out.println("SQLException:"); x0dx0awhile(ex!=null) { x0dx0aSystem.out.println("Message:"+ex.getMessage()); x0dx0aex=ex.getNextException(); x0dx0a} x0dx0a}catch(Exception e) { x0dx0aSystem.out.println("IOException"); x0dx0a} x0dx0a} x0dx0a}

『叄』 Java裡面的實體bean就是對資料庫表的完全映射嗎

是完整映射,一個表有多少欄位bean中就會有多少個屬性
但是不一定有多少個資料庫表就有多少個實體bean,有時候bean的數目會大於表的數目,比如有多對多關系時,它除了會生成對應表的bean以外還會生成關系映射bean

『肆』 java框架有哪些常用框架

十大常用框架:

一、SpringMVC

二、Spring

三、Mybatis

四、Dubbo

五、Maven

六、RabbitMQ

七、Log4j

八、Ehcache

九、Redis

十、Shiro

延展閱讀:

一、SpringMVC

SpringWebMVC是一種基於Java的實現了WebMVC設計模式的請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基於請求驅動指的就是使用請求-響應模型,框架的目的就是幫助我們簡化開發,SpringWebMVC也是要簡化我們日常Web開發的。

模型(Model)封裝了應用程序的數據和一般他們會組成的POJO。

視圖(View)是負責呈現模型數據和一般它生成的HTML輸出,客戶端的瀏覽器能夠解釋。

控制器(Controller)負責處理用戶的請求,並建立適當的模型,並把它傳遞給視圖渲染。

Spring的web模型-視圖-控制器(MVC)框架是圍繞著處理所有的HTTP請求和響應的的設計。

SpringWebMVC處理請求的流程

具體執行步驟如下:

1、首先用戶發送請求————>前端控制器,前端控制器根據請求信息(如URL)來決定選擇哪一個頁面控制器進行處理並把請求委託給它,即以前的控制器的控制邏輯部分;圖2-1中的1、2步驟;

2、頁面控制器接收到請求後,進行功能處理,首先需要收集和綁定請求參數到一個對象,這個對象在SpringWebMVC中叫命令對象,並進行驗證,然後將命令對象委託給業務對塌寬知象進行處理;處理完畢後返回一個(模型數據和邏輯視圖名);圖2-1中的3、4、5步驟;

3、前端控制器收回控制權,然後根據返回的邏輯視圖名,選擇相應的視圖進行渲染,並把模型數據傳入以便視圖渲染;圖2-1中的步驟6、7;

4、前端控制器再次收回控制權,將響應返回給用戶,圖2-1中的步驟8;至此整個結束。

二、Spring

2.1、IOC容器:wwwblogs/linjiqin/archive/2013/11/04/3407126.html

IOC容器就是具有依賴注入功能的容器,IOC容器負責實例化、定位、巧和配置應用程序中的對象及建立這些對象間的依賴。應用程序無需直接在代碼中new相關的對象,應用程序由IOC容器進行組裝。在Spring中BeanFactory是IOC容器的實際代表者。

2.2、AOP:blog.csdn.net/moreevan/article/details/11977115

簡單地說,就是將那些與業務無關,卻為業務模塊所共同調用的邏輯或責任封裝起來,便於減少系統的重復代碼,降低模塊間的耦合度,並有利於未來的可操作性團消和可維護性。AOP代表的是一個橫向的關系

AOP用來封裝橫切關注點,具體可以在下面的場景中使用:

許可權

Caching緩存

Contextpassing內容傳遞

Errorhandling錯誤處理

Lazyloading懶載入

Debugging調試

logging,tracing,profilingandmonitoring記錄跟蹤優化校準

Performance性能優化

Persistence持久化

Resourcepooling資源池

同步

事務

三、Mybatis

MyBatis是支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis使用簡單的XML或註解用於配置和原始映射,將介面和Java的POJOs(PlainOldJavaObjects,普通的Java對象)映射成資料庫中的記錄。

總體流程:

(1)載入配置並初始化

觸發條件:載入配置文件

將SQL的配置信息載入成為一個個對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。

(2)接收調用請求

觸發條件:調用Mybatis提供的API

傳入參數:為SQL的ID和傳入參數對象

處理過程:將請求傳遞給下層的請求處理層進行處理。

(3)處理操作請求觸發條件:API介面層傳遞請求過來

傳入參數:為SQL的ID和傳入參數對象

處理過程:

(A)根據SQL的ID查找對應的對象。

(B)根據傳入參數對象解析對象,得到最終要執行的SQL和執行傳入參數。

(C)獲取資料庫連接,根據得到的最終SQL語句和執行傳入參數到資料庫執行,並得到執行結果。

(D)根據對象中的結果映射配置對得到的執行結果進行轉換處理,並得到最終的處理結果。

(E)釋放連接資源。

(4)返回處理結果將最終的處理結果返回。

MyBatis最強大的特性之一就是它的動態語句功能。如果您以前有使用JDBC或者類似框架的經歷,您就會明白把SQL語句條件連接在一起是多麼的痛苦,要確保不能忘記空格或者不要在columns列後面省略一個逗號等。動態語句能夠完全解決掉這些痛苦。

四、Dubbo

Dubbo是一個分布式服務框架,致力於提供高性能和透明化的RPC(遠程過程調用協議)遠程服務調用方案,以及SOA服務治理方案。簡單的說,bbo就是個服務框架,如果沒有分布式的需求,其實是不需要用的,只有在分布式的時候,才有bbo這樣的分布式服務框架的需求,並且本質上是個服務調用的東東,說白了就是個遠程服務調用的分布式框架。

1、透明化的遠程方法調用,就像調用本地方法一樣調用遠程方法,只需簡單配置,沒有任何API侵入。

2、軟負載均衡及容錯機制,可在內網替代F5等硬體負載均衡器,降低成本,減少單點。

3、服務自動注冊與發現,不再需要寫死服務提供方地址,注冊中心基於介面名查詢服務提供者的IP地址,並且能夠平滑添加或刪除服務提供者。

節點角色說明:

Provider:暴露服務的服務提供方。

Consumer:調用遠程服務的服務消費方。

Registry:服務注冊與發現的注冊中心。

Monitor:統計服務的調用次調和調用時間的監控中心。

Container:服務運行容器。

五、Maven

Maven這個個項目管理和構建自動化工具,越來越多的開發人員使用它來管理項目中的jar包。但是對於我們程序員來說,我們最關心的是它的項目構建功能。

六、RabbitMQ

消息隊列一般是在項目中,將一些無需即時返回且耗時的操作提取出來,進行了非同步處理,而這種非同步處理的方式大大的節省了伺服器的請求響應時間,從而提高了系統的吞吐量。

RabbitMQ是用Erlang實現的一個高並發高可靠AMQP消息隊列伺服器。

Erlang是一門動態類型的函數式編程語言。對應到Erlang里,每個Actor對應著一個Erlang進程,進程之間通過消息傳遞進行通信。相比共享內存,進程間通過消息傳遞來通信帶來的直接好處就是消除了直接的鎖開銷(不考慮Erlang虛擬機底層實現中的鎖應用)。

AMQP(AdvancedMessageQueueProtocol)定義了一種消息系統規范。這個規范描述了在一個分布式的系統中各個子系統如何通過消息交互。

七、Log4j

日誌記錄的優先順序,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。

八、Ehcache

EhCache是一個純Java的進程內緩存框架,具有快速、精乾等特點,是Hibernate中默認的。Ehcache是一種廣泛使用的開源Java分布式緩存。主要面向通用緩存,JavaEE和輕量級容器。它具有內存和磁碟存儲,緩存載入器,緩存擴展,緩存異常處理程序,一個gzip緩存servlet過濾器,支持REST和SOAPapi等特點。

優點:

1、快速

2、簡單

3、多種緩存策略

4、緩存數據有兩級:內存和磁碟,因此無需擔心容量問題

5、緩存數據會在虛擬機重啟的過程中寫入磁碟

6、可以通過RMI、可插入API等方式進行分布式緩存

7、具有緩存和緩存管理器的偵聽介面

8、支持多緩存管理器實例,以及一個實例的多個緩存區域

9、提供Hibernate的緩存實現

缺點:

1、使用磁碟Cache的時候非常佔用磁碟空間:這是因為DiskCache的演算法簡單,該演算法簡單也導致Cache的效率非常高。它只是對元素直接追加存儲。因此搜索元素的時候非常的快。如果使用DiskCache的,在很頻繁的應用中,很快磁碟會滿。

2、不能保證數據的安全:當突然kill掉java的時候,可能會產生沖突,EhCache的解決方法是如果文件沖突了,則重建cache。這對於Cache數據需要保存的時候可能不利。當然,Cache只是簡單的加速,而不能保證數據的安全。如果想保證數據的存儲安全,可以使用BekeleyDBJavaEdition版本。這是個嵌入式資料庫。可以確保存儲安全和空間的利用率。

九、Redis

redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字元串)、list(鏈表)、set(集合)、zset(sortedset_有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁碟或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。

Redis資料庫完全在內存中,使用磁碟僅用於持久性。相比許多鍵值數據存儲,Redis擁有一套較為豐富的數據類型。Redis可以將數據復制到任意數量的從伺服器。

1.2、Redis優點:

(1)異常快速:Redis的速度非常快,每秒能執行約11萬集合,每秒約81000條記錄。

(2)支持豐富的數據類型:Redis支持最大多數開發人員已經知道像列表,集合,有序集合,散列數據類型。這使得它非常容易解決各種各樣的問題,因為我們知道哪些問題是可以處理通過它的數據類型更好。

(3)操作都是原子性:所有Redis操作是原子的,這保證了如果兩個客戶端同時訪問的Redis伺服器將獲得更新後的值。

(4)多功能實用工具:Redis是一個多實用的工具,可以在多個用例如緩存,消息,隊列使用(Redis原生支持發布/訂閱),任何短暫的數據,應用程序,如Web應用程序會話,網頁命中計數等。

1.3、Redis缺點:

(1)單線程

(2)耗內存

十、Shiro

ApacheShiro是Java的一個安全框架,旨在簡化身份驗證和授權。Shiro在JavaSE和JavaEE項目中都可以使用。它主要用來處理身份認證,授權,企業會話管理和加密等。Shiro的具體功能點如下:

(1)身份認證/登錄,驗證用戶是不是擁有相應的身份;

(2)授權,即許可權驗證,驗證某個已認證的用戶是否擁有某個許可權;即判斷用戶是否能做事情,常見的如:驗證某個用戶是否擁有某個角色。或者細粒度的驗證某個用戶對某個資源是否具有某個許可權;

(3)會話管理,即用戶登錄後就是一次會話,在沒有退出之前,它的所有信息都在會話中;會話可以是普通JavaSE環境的,也可以是如Web環境的;

(4)加密,保護數據的安全性,如密碼加密存儲到資料庫,而不是明文存儲;

(5)Web支持,可以非常容易的集成到Web環境;

Caching:緩存,比如用戶登錄後,其用戶信息、擁有的角色/許可權不必每次去查,這樣可以提高效率;

(6)shiro支持多線程應用的並發驗證,即如在一個線程中開啟另一個線程,能把許可權自動傳播過去;

(7)提供測試支持;

(8)允許一個用戶假裝為另一個用戶(如果他們允許)的身份進行訪問;

(9)記住我,這個是非常常見的功能,即一次登錄後,下次再來的話不用登錄了。

『伍』 怎麼使用JAVA連接資料庫

1、載入驅動程序。

處理結果兩種情況:

1、執行更新返回的是本次操作影響到的記錄數。

2、執行查詢返回的結果是一個ResultSet對象。

ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些 行中數據的訪問。

(5)java映射資料庫擴展閱讀:


Statement

要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3 種類型:

1、執行靜態SQL語句。通常通過Statement實例實現。

2、執行動態SQL語句。通常通過PreparedStatement實例實現。

3、執行資料庫存儲過程。通常通過CallableStatement實例實現。

『陸』 怎樣不通過框架,將javabean映射到資料庫中

你如何用實體框架,象HIBERNATE這樣的ORM的時候,
首先考慮的肯定是BEAN實體類,也就是面向對象編程,面向對象操作資料庫了.
但是考慮到關聯關系的時候,情況就復雜些了.
比如一對多的情況:
拿博客系統來說吧
一篇文章BLOG,肯定有一個BLOGID,這個BLOGID肯定是唯一的
BLOG(BLOGID,USERID,TITLE,CONTENT,MSGS)(博客ID,用戶ID,標題,內容,評論)
現在有人對這個BLOG進行評論
評論MSG(MSGID,USERID,BLOG,MESSAGE)(評論ID,用戶ID,博客,評論內容)
這有兩個實體類,BLOG和MSG是一對多雙向關聯關系.
也就是說,根據這個BLOG可以知道這個BLOG下面所有的評論.
而某個MSG,肯定是對某一個BLOG進行評論的.
BLOG裡面保存著評論的信息MSGS,MSGS肯定是個集合.
其中MSG裡面保存著BLOG的信息.
實體類大概是上面那樣.
下面就要建立關聯關系的映射了.
一對多的關聯關系的映射,主要體現在多的這一端,而多的這一端在資料庫中體現就是外鍵.
也就是說,BLOG類中的MSGS是帖MSG來決定的,而資料庫中,BLOG表肯定是沒有MSG的任何欄位信息.
但是MSG中肯定有BLOG實體類BLOGID.

有時候多個表也可以設計成一個BEAN.看情況設計嘍.

建立樓主去研究下HIBERNATE裡面的關聯關系及其映射,
看實體類和資料庫中表的詳細情況.

『柒』 java配置類應該怎麼存資料庫

對象和關系再映射存入資料庫。
將對象映射到資料庫的關繫上類對應表,欄位對應列,聚合欄位對應一對多或者多對多,這樣用起來很方便,可以只寫java就完成資料庫操作可能還要寫jpql,對於簡單的邏輯可以用criteria,純對象化的查詢,java有個ORM的規范,叫JPA,hibernate實現了JPA,它還有EclipseLink等實現。

閱讀全文

與java映射資料庫相關的資料

熱點內容
普信app為什麼用不了 瀏覽:252
linux查找rpm包 瀏覽:114
怎麼把安卓手機繁體字改為現代字 瀏覽:896
pdf簽名如何刪除 瀏覽:410
按摩解壓腿部足部 瀏覽:293
app切圖用什麼軟體 瀏覽:5
訂購命令英語 瀏覽:661
java正則網址 瀏覽:779
程序員上班可不可以自學 瀏覽:428
空調壓縮機排空氣視頻 瀏覽:285
centos72nginxphp 瀏覽:186
游戲平台用什麼伺服器好 瀏覽:754
保密櫃里的圖片是加密文件嗎 瀏覽:911
php判斷最後一個字元 瀏覽:637
pdf腦區 瀏覽:635
at命令已棄用 瀏覽:492
買點賣出指標源碼 瀏覽:614
36位單片機 瀏覽:431
英雄聯盟山東伺服器地址 瀏覽:214
sd伺服器什麼意思 瀏覽:621