[英]Database connection pool and database connection?
我創建了一個桌面應用程序,並通過數據庫連接(bean / class)將其連接到MySQL數據庫,並且可以CRUD。 我在NetBeans站點上看到他們在Web應用程序上創建了一個連接池。
連接池與桌面應用程序上的類/ bean是否相同?
這是否意味着我創建了一個與桌面應用程序連接到數據庫模型(MVC)的bean /類,還是必須做其他事情?
在Glassfish服務器上,使用向導創建連接池。 在Apache上您不需要。 我必須為Apache創建數據庫連接bean嗎?
將數據庫連接到Web應用程序有哪些實踐(bean,還有其他方法)?
我還閱讀了有關Hibernate的信息,但我不了解它的用法。 冬眠在哪里可以提供幫助? 我的意思是,它是ORM,但是Hibernate可以為我做什么,以便使我的代碼更容易? 我想我錯過了ORM的要點
Hibernate將幫助您進行事務管理。 這將使您能夠打開到數據庫的多個不同連接,並在使用不可用的對象(例如從不同線程拉入的bean)時向您發出警告。
當查詢數據庫時,Hibernate的ORM將使您的代碼更容易使用的一個具體示例。 您可以使用Criteria -queries,而不是將標准SQL查詢編寫為字符串。
在Java中,數據庫連接始終使用JDBC驅動程序。 據我所知,沒有一個數據庫允許在一個連接上同時運行多個SQL命令,因此,如果您的應用程序可以同時運行多個SQL命令,則每個連接都會成為瓶頸(Web服務器通常會出現數百個這種情況)的用戶可以同時與數據庫進行交互)。
UPDATE :我的意思是:您可以通過單個連接輕松地菊花鏈式命令(例如UPDATE ... ; COMMIT
),但不能同時發送兩個UPDATE
命令-您總是必須等待在發送下一個命令之前,請先完成第一個命令。 一些數據庫允許在單個查詢中發送多個命令,但是它們一個接一個地執行,而不是同時執行 。 想一想:如果您可以在單個連接上同時運行多個命令,您怎么知道它們以什么順序執行?
最重要的是,對於大多數數據庫而言,創建數據庫連接非常昂貴。 因此,它們是在應用程序啟動期間預先創建的,並保存在一個池中。 一旦使用池化的JDBC驅動程序“連接”到數據庫,它就會從池中選擇一個未使用的連接並返回它。 那(幾乎)不需要時間。 當您“關閉”連接時,它將返回到池中。
另一個好處是,池可以使連接保持活動狀態。 因此,當您需要新的連接時(只要數據庫正在運行),您就不必擔心連接錯誤。
從應用程序方面看,這是透明的(大多數JDBC驅動程序現在在內部進行池化,或者具有池化API)。 如果您的JDBC驅動程序沒有,則可以始終使用DBCP之類的池。 池處理所有令人討厭的細節,您針對池API編寫應用程序,而不是直接使用JDBC。 該文檔將告訴您如何操作。
冬眠如何與眾不同。 Hibernate是JDBC之上的一層,可以將POJO轉換為SQL,然后轉換回SQL。
因此,您無需說INSERT INTO data(ID, VALUE) values (?, ?)
,
class Pojo { long id; String value; }
Pojo demo = new Pojo();
demo.value = "Test";
session.persist(demo);
然后Hibernate將為您創建SQL並將其發送到數據庫。 在現階段,這並不能使您的生活更輕松。 更改Pojos時,Hibernate開始發光:
class Pojo { long id; String value;
String name; // Oops ... forget the name
}
Pojo demo = new Pojo();
demo.name = "John";
demo.value = "Test";
session.persist(demo);
Hibernate將相應地更改數據庫定義,並更新它加載和保存對象所需的所有SQL命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.