山那边是海 发表于 2015-1-18 11:16:33

了解下JAVA的EJB Extended 与Seam-managed Persistence Context

首先第一点:jsp,servlet,javabean这些最基本的,嘿嘿,就算你是高手的话,在大行的企业级应用的话还是需要框架的,一个好的框架确实能构解决许多问题。
本文将复杂谈谈我对EJB3.0的两种PersistenceContext和Seam-managedPersistenceContext的分歧点的了解、所要办理的成绩和我本人所困惑的成绩。
EJB3.0(JPA)的PersistenceContext
人人在利用EJB3.0的时分会注重到EJB3.0中的容器办理PersistenceContext有两品种型,一种是Transaction,另外一种是Extended。这是一个较Hibernate的Session所没有的观点,Session没有两种分歧的范例,并且最主要的是Session不是容器办理的,这里的容器指的是Appserver容器。这里临时不议论PersistenceContext与Session之间的异同,次要谈谈两种PersistenceContext之间的分歧。学过ORM的同砚都晓得,当PersistenceContext是翻开形态的时分,Model就处于被办理的形态中;当PersistenceContext封闭以后,Model就处于了Detached形态。
下面这些特征关于Transaction或Extended的PersistenceContext都是一样的,分歧的中央在于PersistenceContext什么时候被翻开封闭。因为尽年夜多半情形下PersistenceContext是被容器办理的(假如你不嫌累也能够本人把持PersistenceContext),以是在EJB3.0使用中看不到翻开或封闭PersistenceContext的代码(Spring+Hibernate的使用也一样云云,HibernateSession的办理事情能够交给Spring来做)。
实在,Transaction和ExtendedPersistenceContext的分歧的地方也就在于容器什么时候翻开或封闭PersistenceContext。Transaction范例的PersistenceContext的翻开和封闭是和事件的翻开和封闭是同步的。也就是说在一个事件入手下手以后,PersistenceContext才会入手下手;在事件封闭的时分,响应的PersistenceContext也会被封闭。
Extended范例的PersistenceContext的翻开和封闭是和StatefulSessionBean的性命周期同步的,是超过事件的。也就是说,从SFSB的初始化入手下手,直到烧毁,PersistenceContext都是存在的。你能够在事件以外实行写操纵,可是这是其实不会实行真实的数据库操纵,写操纵只是放进了行列,直到下一个事件,写操纵才会真正地被实行。二者的分歧复杂说来就是ExtendedPersistenceContext存在的工夫更长。那为何要有两种分歧的PersistenceContext呢?
当一个Web哀求到来时,服务器会翻开一个线程,这个线程大概会挪用一个事件办法,这是一个事件便入手下手了,当这个哀求停止时,线程封闭,事件也随之停止。因为Transaction范例的PersistenceContext的保存周期是在事件局限以内的,以是一个Web哀求的停止也意味着响应的PersistenceContext的封闭。因为多半Web使用在一次Web哀求内便可完成一个自力的操纵,以是年夜部分情形下Transaction的PersistenceContext是合用的。可是关于一些庞大的使用,一次操纵必要超过屡次哀求。这类情形下,假如仍旧利用Transcation的PersistenceContext,因为每次哀求停止后,响应的PersistenceContext都被封闭,响应的Model也就变成Detached形态。假如接上去的哀求仍旧必要这些已变成Detached形态的Model就必要从头load,利用merge()办法来耐久化。稍有不适就会发生LazyInitializationException和NonUniqueObjectException。同时,这也进步了操纵的庞大水平。
假如利用ExtendedPersistenceContext就可以办理这些成绩。因为ExtendedPersistenceContext的性命周期是与SFSB的性命周期同步的,以是只需屡次哀求挪用的都是统一个SFSB中的办法,有几次的哀求,PersistenceContext老是统一个,个中的Model也一直是被办理的。很好地办理了PersistenceContext在线程之间传送的成绩,也不会有LazyInitializationException和NonUniqueObjectException成绩的产生。
<p>
最后就是我对java的几点希望:首先是IDE工具,有人说java已经很好了,有jbuilder,eclipse,net网页编程Beans等等,但是我认为如果java想超越.net网页编程,那么他首先要解决的就是IDE工具的整合。

admin 发表于 2015-1-18 22:52:58

是一种使网页(Web Page)产生生动活泼画面的语言

莫相离 发表于 2015-1-23 22:06:06

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

若相依 发表于 2015-1-31 20:09:56

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

乐观 发表于 2015-2-6 22:05:03

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

蒙在股里 发表于 2015-2-18 22:09:54

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

简单生活 发表于 2015-2-28 03:52:22

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

飘灵儿 发表于 2015-3-8 10:40:26

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

深爱那片海 发表于 2015-3-9 00:01:41

是一种使网页(Web Page)产生生动活泼画面的语言

金色的骷髅 发表于 2015-3-16 18:49:44

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

分手快乐 发表于 2015-3-22 23:39:18

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
页: [1]
查看完整版本: 了解下JAVA的EJB Extended 与Seam-managed Persistence Context