成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么我喜歡EJB 3.0并且尤其喜歡EJB 3.1

開發(fā) 后端
本文作者是一個(gè)忠實(shí)的EJB用戶。在他兩年多的項(xiàng)目經(jīng)驗(yàn)中,他總結(jié)出了EJB 3.0的十幾個(gè)優(yōu)點(diǎn)如下。EJB 3.1在撰文時(shí)尚未發(fā)布,但作者就EJB 3.1中將出現(xiàn)的新特性也包含在內(nèi)。

Marc Fleury在2002年寫了一篇值得一讀的文章 藍(lán)皮書 "為什么我愛EJB"  (下載),他的觀點(diǎn)在當(dāng)時(shí)是令人驚訝的。我那是已經(jīng)在使用EJB,但并不真正地愛他們 :-)。我沒有到哪個(gè)程度,但我真的喜歡EJB 3.0。原因如下:

◆性能開銷低。Glassfish v2中 只有大約3%.

◆EJB 3.0是線程安全的(thread save)。這是一個(gè)巨大的優(yōu)點(diǎn)。 每個(gè)線程所都擁有的實(shí)例,包括所有注入的資源比如實(shí)體管理器(Entity Manager),數(shù)據(jù)源(Data Source)和JMS,都是線程安全的。最棒的是:容器為你做到了這一切。你只需要一個(gè)標(biāo)識(shí)(annotation),比如引用EJB的@EJB,獲取持久化上下文的@PersistenceContext以及引用資源的@Resource :-))。更多討論請(qǐng)參看"plain old Web Container" :-)(想想POJO-Plain Old Java Object,譯者注)。提醒一下:Servlet作為一種單例(singletons)模式不是線程安全的。

◆EJB 3.0 支持 事務(wù)(transactional)。 所以只要成功調(diào)用了EJB方法,所有的資源將都是同步的(synchronized),比如寫到數(shù)據(jù)庫中的數(shù)據(jù),發(fā)給服務(wù)器的消息等。容器會(huì)為你做到這些,你只要知道你所要做的是什么 (這和平臺(tái)無關(guān),但有時(shí)難以實(shí)現(xiàn) :-))
在我所有的項(xiàng)目中都將部署描述符而替換成了annotation。這樣就只有一個(gè)persistence.xml文件需要部署。EJB在重構(gòu),部署和移植方面都表現(xiàn)良好。

◆EJB 3.0是真正可移植的(它可以讓你中立于實(shí)現(xiàn)提供商和架構(gòu))。 相比EJB 2.1,這點(diǎn)更加突出,因?yàn)樗接械牟渴鹈枋龇辉傩枰?shí)際上,EJB 3不再需要任何描述符。你只要部署干干凈凈的jar文件,然后附上在meta-inf中的persistence.xml,而其他都是可選的。

◆在EJB 3 中,慣例優(yōu)先原則(Convention Over Configuration)或正式地稱為基于期望的配置( Configuration By Exception) ,它們和依賴注入(Dependency Injection) 的結(jié)合非常完美。大多數(shù)場合,開發(fā)EJB只需要少量的代碼(比如沒有"new"的調(diào)用,而只需要做個(gè)聲明)

@Stateless
public class SampleBean implements Sample {
    @PersistenceContext
    private EntityManager em;

    @EJB
    private Another anotherBean;

◆Getters 和Setters方法是可選的: 不僅對(duì)于EJB,同樣對(duì)于JPA。 資源可以直接注入到字段之中。
缺省和annotation的配置能夠被XML描述符覆蓋。而XML描述符不需面面俱到 - 你只要指定感興趣的部分。你可以為某個(gè)特定階段(比如測試、集成)開發(fā)通過XML描述對(duì)產(chǎn)品進(jìn)行重新設(shè)置。

◆不需要特別的工具。你只需要annotation,一個(gè)Java 6 的編輯器和一個(gè)Jar文件。 無論是IntelliJ,Eclipse (含500附件的插件:-))還是Netbeans 6.1都對(duì)EJB 3提供了完善的支持,并對(duì)應(yīng)用服務(wù)器也做了很好的集成,EJB的部署、取消部署、配置等都可以直接由IDE來管理。

◆EJB 3.1可嵌入的特性很可能將獲得支持。Glassfish v3已經(jīng)對(duì)此提供支持。在GlassFish的測試中,我發(fā)現(xiàn)容器的啟動(dòng)只要令人驚訝的500ms。 此外,JBoss也支持可嵌入。

◆EJB 3.1將提供許多有用的特性:Singletons (更便于配置和用于啟動(dòng)類等), 更好的timer支持 (cron-like),將來的異步方法,可選的local-interfaces 和基于WAR包的部署。

◆池的設(shè)置和線程池的配置對(duì)伸縮性的控制非常有幫助(除非容器崩潰,否則你不會(huì)為無法確定伸縮性而頭痛:-))

◆和腳本語言交互的良好支持(包括JavaScript, Groovy)

◆EJB是缺省可以被管理和監(jiān)控的。EJB部署到容器后,你就可以對(duì)其方法調(diào)用和性能等進(jìn)行監(jiān)控。

◆不需事先依賴任何的架構(gòu)和庫等。ejb-jar和容器為你的應(yīng)用代碼打理一切,所以拋出像NoClassDefFoundErrors,ClassCastExceptions這樣異常的可能會(huì)降到最低。

◆EJB 3.0是超級(jí)緊湊的技術(shù)。實(shí)際上你已經(jīng)不可能再為它做些什么簡化 :-)。當(dāng)然,這方面我也愿意聽大家的意見。

◆他們非常容易測試-因?yàn)镋JB就是一些類和接口。你甚至可以在容器之外啟動(dòng)它們。

◆即使最簡單的use cases也可以用EJB 3高效的實(shí)現(xiàn)。比如關(guān)于增刪查改的 CRUD的例子:

@Stateless
public class CrudServiceBean implements CrudService<Integer,Customer> {
   
    @PersistenceContext
    private EntityManager em;

    public Customer create(Customer t) {
        this.em.persist(t);
        return t;
    }

    public void delete(Customer t) {
        t = this.em.merge(t);
        this.em.remove(t);
    }

    public Customer find(Integer id) {
        return this.em.find(Customer.class, id);
    }

    public Customer update(Customer t) {
        return this.em.merge(t);
    }
 }

◆他們工作的非常棒:近兩年來,我在項(xiàng)目中使用EJB 3.0 + JPA 1.0。它們的出色表現(xiàn)不僅給我?guī)淼捏@喜,也給我們團(tuán)隊(duì)的帶來了驚喜。

然而,Java EE6平臺(tái)仍有可以提升的空間。JMS規(guī)范應(yīng)該重新設(shè)計(jì),讓其更加“流暢”(fluent)。JNDI注冊(cè)機(jī)制顯得陳舊,有關(guān)JNDI的API的改進(jìn)和簡化將不僅有助于EJB的開發(fā),而且整個(gè)Java EE平臺(tái)也將因此受惠。

【編輯推薦】

  1. EJB3.1新特性一覽 Time服務(wù)更強(qiáng)大
  2. 關(guān)于EJB的一些常見問題
  3. JavaBean與EJB的區(qū)別與應(yīng)用
  4. EJB初學(xué)者常見的12個(gè)困惑問與答
  5. Java語言中關(guān)于EJB技術(shù)的概論
責(zé)任編輯:yangsai 來源: 譯言
相關(guān)推薦

2012-04-04 22:07:12

Android

2019-10-23 15:53:16

JavaScript可選鏈對(duì)象

2009-06-11 16:53:09

什么是EJBEJB

2009-06-12 12:46:59

EJB3.0

2019-08-28 10:53:35

JavaScriptOptional Ch代碼

2025-01-15 09:06:58

CSSRegEx前端

2023-09-14 08:00:00

基于主干的開發(fā)分支模型

2020-06-11 09:09:33

Ansible模塊Linux

2009-06-15 16:06:25

JBoss IDE

2017-09-11 19:58:06

PostgreSQLMySQL數(shù)據(jù)庫

2017-11-30 15:25:04

EclipseGo項(xiàng)目

2020-07-28 10:45:51

數(shù)據(jù)庫三范式MySQL

2015-10-26 09:58:53

程序員主流

2009-06-11 15:26:05

EJB組件EJB容器

2009-06-12 09:41:07

EJB3.0Spring

2018-01-15 05:54:45

數(shù)據(jù)庫讀寫分離互聯(lián)網(wǎng)

2018-01-09 18:46:44

數(shù)據(jù)庫架構(gòu)讀寫分離

2012-05-14 08:55:23

Android

2009-06-22 16:59:33

POJOSpringEJB 3.0

2024-03-01 16:36:12

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲精品久久久久久一区二区 | 欧美h版 | 精品日韩 | 99久久精品免费看国产免费软件 | 亚洲国产高清在线 | 日韩中文字幕一区二区 | 性色综合 | 羞羞视频在线观看免费观看 | 亚洲人在线观看视频 | 国产电影一区二区三区爱妃记 | 国产午夜精品视频 | 999精品视频| 亚洲国产小视频 | 国产一区二区三区在线 | 波多野结衣中文视频 | 天天色天天色 | 久久久久免费精品国产小说色大师 | 成人欧美一区二区三区 | 亚洲自拍偷拍欧美 | 91视频一区二区 | 国产一级淫片免费视频 | 毛片久久久 | 狠狠久久久 | 九九九视频精品 | 久在草| 国产aa| 国产视频日韩 | 国产一区91精品张津瑜 | 一区二区三区欧美在线观看 | 91黄色免费看 | 天天天操| 在线观看免费av网 | 日韩免费高清视频 | 日本成人福利视频 | 亚洲小说图片 | 国产精品视频久久久久久 | 成人h片在线观看 | 久久国内精品 | 五月婷婷激情网 | 国产成人小视频 | 午夜精品久久久久久久久久久久 |