在EJB3會話Bean中編寫JDBC(或)HIBERNATE連接代碼並通過EJB3實體Bean(JPA)編寫相同的連接代碼之間有什麼區別。任何人都可以請澄清這一點..通過會話bean和實體bean進行數據庫連接的區別
回答
EJB規範支持瞬態和持久對象。瞬態對象被稱爲會話bean,而持久對象被稱爲實體bean。
A Session Bean
會話bean是由客戶端創建的EJB,通常只存在於單個客戶端 - 服務器會話期間。會話bean通常代表客戶端執行諸如計算或數據庫訪問等操作。雖然會話bean可能是事務性的,但如果發生系統崩潰則無法恢復。會話bean對象可以是無狀態的,也可以在方法和事務之間保持會話狀態。如果會話bean維護一個狀態,那麼如果必須從內存中刪除該對象,則EJB容器將管理此狀態。但是,持久數據必須由會話bean對象本身來管理。
容器工具在部署時爲會話bean生成附加類。這些工具通過檢查其類和接口從EJB體系結構中獲取信息。這些信息被用來動態生成兩個實現bean的home和remote接口的類。這些類使容器能夠調用會話bean上的所有客戶端調用。容器也生成一個可序列化的Handle類,它提供了一種在特定生命週期內識別會話bean實例的方法。可以實現這些類,以便在與容器特定的代碼混合時執行自定義的操作和功能。
除了這些自定義類以外,每個容器還提供了一個爲客戶端提供元數據並實現SessionContext接口的類。這可以訪問有關調用bean的環境的信息。
An Entity Bean
實體bean是永久數據存儲庫(如數據庫)中維護的持久性數據的對象表示形式。主鍵標識實體bean的每個實例。實體bean是事務性的,在發生系統崩潰時可以恢復。
實體bean是顯式數據或數據集合的表示,例如關係數據庫中的行。實體bean方法提供了對bean的數據表示進行操作的過程。一個實體bean是持久的,只要它的數據保留在數據庫中就可以存活。
可以通過兩種方式創建實體bean:通過在bean的home接口上調用create()方法的客戶機的直接操作,或者通過向數據庫添加數據的其他操作(bean類型代表。事實上,在包含遺留數據的環境中,甚至可以在部署EJB之前存在實體對象。
實體bean可以實現bean管理的或容器管理的持久性。對於bean管理的持久性,實體bean的實現者通過直接的數據庫調用來存儲和檢索bean管理的信息。該bean可以爲這種方法使用Java數據庫連接(JDBC)或SQL-Java(SQLJ)。 (會話bean也可以訪問他們使用JDBC或SQLJ管理的數據。)這種方法的一個缺點是它使得更容易將bean管理的持久性調整爲替代數據源。
對於容器管理的持久性,容器提供者可以使用標準API實現對數據庫的訪問。容器提供者可以提供工具來映射實體bean的實例變量以調用底層數據庫。這種方法使得使用具有不同數據庫的實體bean更容易。
兩者都允許您編寫從數據庫中獲取數據的Java數據庫,但實際編碼是非常不同的。
JDBC允許您編寫SQL代碼
INSERT INTO ...
或
SELECT ... WHERE
然後,您必須編寫自己的代碼到你的Java對象和JDBC代碼之間傳輸數據。最終會出現很多反覆的「將該字段放在該列中」類型的代碼。
看看例如link text的例子來得到一種風味。
在JPA/Hibernate中,您只需使用關於哪些表和列與字段對應的說明來註釋Java類。大大減少了你需要編寫的代碼量。
這是因爲這個例子中(從this JPA example視爲簡單:
@Entity
public class Inventory {
@Id
protected long id;
...
public void setItem(Item item) {
this.item = item;
this.id = item.getSKU();
}
...
}
我要說的是會話Bean + JPA比會話Bean + JDBC的努力相當少
- 1. 會話bean和實體bean?
- 2. 會話bean和實體bean以及有狀態會話bean和無狀態會話bean之間的區別
- 3. 實體bean和實體類的區別?
- 4. 管理bean和會話bean之間的區別
- 5. 通過glassfish資源(連接池)從現有數據庫創建實體bean
- 6. 我如何使用EJB實體bean連接到mysql數據庫?
- 7. Netbeans 7.2中的實體類會話Bean
- 8. 通過實體Bean創建數據庫表
- 9. EJB2會話bean中的連接處理
- 10. 的NetBeans從數據庫實體bean和會話bean 7.0應用程序客戶端
- 11. 有狀會話Bean與持久實體
- 12. 將會話bean注入實體
- 13. EntityManager注入在EJB 2.1會話bean中爲空EJB3實體Bean
- 14. 消息 - 爲什麼實體Bean或會話Bean不適合
- 15. 獲取會話Bean實例
- 16. 如何通過會話值在bean類
- 17. 在jsp中用於會話管理的java bean和會話之間的區別
- 18. EJB無狀態會話bean和有狀態會話bean
- 19. 會話bean
- 20. 春會話bean
- 21. 會話bean和EJB3 vs Spring
- 22. 阿卡和會話Bean
- 23. JSP會話和Bean混淆
- 24. ViewParam和會話範圍bean
- 25. 有狀態會話Bean和HTTP會話
- 26. bean和jsf驗證註釋inisde託管bean vs實體bean
- 27. JPA:無狀態會話bean和管理實體
- 28. 會話範圍的bean不是一個會話範圍的bean
- 29. 使用容器管理實體bean時,bean是否通過容器存儲到數據庫?
- 30. java會話bean - 重載數據?
這些天來,我們使用JPA,而不是Entity Beans – djna 2010-07-26 06:27:16
當然,用於對象關係映射的POJO持久化模型是非常好的。我只是試圖清除會話bean和實體bean之間的區別。 – Rupeshit 2010-07-26 06:55:06