getProperty>
5、New:
已经创建了实体Bean的实例,但尚未与持久化上下文进行关联,更未实现与数据库中的信息的映射。
Managed:
实体bean已经与持久化上下文进行关联。
实现与数据库中的信息映射。
Detached:
实体Bean实现数据中的信息映射,但不再与持久化上下文进行关联。
Removed:
实体bean对应的数据库中的数据已被删除。
(二)
1.JavaEE应用系统的层次结构
一个典型的JavaEEWeb应用系统被开发设计成一个四层的系统结构:
客户端层、Web层、业务层和企业信息系统层。
①客户端层(Client-Tier)。
包括各种客户端应用界面组件,如HTML页面组件,Applet组件和Windows桌面应用组件,它们均是部署运行在客户端的机器上。
②Web层(Web-Tier)。
包括各种JSP编写的动态页面组件与Servlet组件,它们运行在JavaEE的应用服务器上。
③业务层(Business-Tier)。
主要由Java企业Bean(EnterpriseBean)构成,它们是被部署运行于JavaEE的应用服务器上。
④企业信息系统层(EnterpriseInformationSystem-Tier)。
一般指各种存储应用数据的关系数据库系统或文件系统,它们一般是部署运行在专门的数据库服务器上。
3.Servlet工作基本流程
⑴客户端通过HTTP提出请求。
⑵Web服务器接收请求并将其发给Servlet。
如果这个Servlet尚未被加载,Web服务器将把它加载到Java虚拟机并且执行它
⑶Servlet将接收HTTP请求并执行某种处理
⑷Servlet将向Web服务器返回应答。
⑸Web服务器将从Servlet收到的应答发送给客户端。
4.浏览器和服务器通过哪两种方式实现的数据交互,优缺点
答:
在Web应用中,浏览器客户端和服务器端的信息交互是必须的,提交数据到服务器要有两种方式get和post。
优缺点:
(1)get方式传输的数据量非常小,一般限制在2KB左右,但是执行效率却比post方法好,而post方式传递的数据量相对较大,它是等待服务器来读取数据,不过也有字节限制,这是为了避免对服务器用大量数据进行恶意攻击。
(2)get方式提交数据,会带来安全问题,post变量使用method=post来获取表单信息,通过post方法发送的信息是不可见的,不会在URL中显示出来,并且它没有关于信息长度的限制,处于安全性考虑,建议最好使用post提交数据。
5.简述什么是ORM,并写出实现了ORM的2种框架或技术。
答:
对象关系映射(ObjectRelationalMapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。
实现了ORM的框架或技术是:
Hibernate、IBatis、TopLink、ApacheOJB、Cayenne、Jaxor、jRelationalFramework、mirage、SMYLE。
6.简述JSF的特点。
①可以通过一组标准的、可重用的服务器端组件来创建用户界面。
②提供了一组JSP标签以访问这些组件。
③在表单重新显示时,透明的保存状态信息并重新填充表单。
④提供了实现自定义组件的框架。
⑤封装了事件处理和组件呈现,以便可以使用标准的JSF组件或自定义组件来支持除HTML之外的标记语言。
⑥让工具开发商可以开发针对标准Web应用程序框架的IDE
7.WSDL文档元素
答:
WSDL文档在WebService的定义中使用下列元素。
Types:
数据类型定义的容器,它使用某种类型系统。
Message:
通信消息的数据结构的抽象类型化定义。
使用Types所定义的类型来定义整个消息的数据结构。
Operation:
对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。
PortType:
对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。
Binding。
特定端口类型的具体协议和数据格式规范的绑定。
Prot:
定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问。
Service:
相关服务访问点的集合。
论述题
1.MVC结构及MVC的优点
答:
“模式-试图-控制器”(Model-View-Controller,MVC)应用程序总是由这三部分组成,即把一个应用的输入、处理和输出流程按照ModelView和Controller的方式进行分离,这样一个应用被分成三个层:
模型层视图层和控制层。
其优点:
①低耦合性②高重用性和可适用性③较低的生命周期成本④快速的部署⑤可维护性有利于软件工程化管理
2.数据库连接池的实现方式
答:
数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。
预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完后在放回去。
我们可以通过设定连接池最大连接数来防止系统无尽地与数据库连接。
更为重要的是可以通过连接池的管理机制监视数据库的连接的数量、使用情况,为系统开发测试及性能调整提供数据。
3.创建WebService主要实现技术
答:
(1)可扩展标记语言(XML)
XML是WebService技术架构的基石,它是WebService中表示数据的基本个是,但是它没有定义怎样扩展这套数据类型。
而XML就是专门解决这个问题的一套标准,它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型,WebService平台就饿是用XMLSchema作为其数据类型系统的。
(2)简单对象访问协议(SOAP)
SOAP提供了标准的RPC方法来调用WebService。
SOAP规范中定义了SOAP消息的格式,以及怎样通过HTTP协议来使用SOAP。
SOAP是基于XML和XSD的,其中XML是SOAP的数据编码方式。
(3)WebService描述语言(WSDL)
WSDL是一种基于XML的,用于描述WebService及其操作、参数和返回值的语言。
因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。
一些最新的开发工具技能根据WebService生成WSDL文档,又能通过导入WSDL文档,生成调用相应的WebService的代码。
(4)统一描述、发现和集成协议(UDDI)
UDDI是WebService架构下核心的服务描述、发现和集成机制。
其目的是在网上自动查找WebService。
一旦WebService注册到UDDI,客户就可以很方便地查找和定位到所需的WebService。
(三)
1、简述你对IoC(InversionofControl)的理解
一个类需要用到某个接口的方法,我们需要将类A和接口B的实现关联起来,最简单的方法是类A中创建一个对于接口B的实现C的实例,但这种方法显然两者的依赖(Dependency)太大了。
而IoC的方法是只在类A中定义好用于关联接口B的实现的方法,将类A,接口B和接口B的实现C放入IoC的容器(Container)中,通过一定的配置由容器(Container)来实现类A与接口B的实现C的关联。
2、简述AOP核心?
1)Aspect(切面)切面,是对交叉业务逻辑的统称。
2)Joinpoint(连接点)连接点,指切面可以织入到目标对象的位置(方法,属性等)。
3)Advice(通知)通知,指切面的具体实现。
4)Pointcut(切入点)切入点,指通知应用到哪些类的哪些方法或属性之上的规则。
5)Introduction(引入)引入,指动态地给一个对象增加方法或属性的一种特殊的通知。
6)Weaving(织入)织入,指将通知插入到目标对象。
7)Target(目标对象)目标对象,指需要织入切面的对象。
8)Proxy(代理对象)代理对象,指切面织入目标对象之后形成的对象。
3、EJB包括(SessionBean,EntityBean)说出他们的生命周期?
SessionBean:
StatelessSessionBean的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。
当客户机调用了@PreDestroy修饰的方法时候,它就结束了。
当客户机第一次调用一个StatefulSessionBean时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用StatefulSessionBean的方法时容器会把调用分派到与此客户机相关联的Bean实例。
EntityBean:
EntityBeans能存活相对较长的时间,并且状态是持续的。
只要数据库中的数据存在,Entitybeans就一直存活。
而不是按照应用程序或者服务进程来说的。
即使EJB容器崩溃了,Entitybeans也是存活的。
EntityBeans生命周期能够被容器或者Beans自己管理。
4、说出bean工厂创建bean的三种方式?
1)通过构造方法直接创建:
2)通过静态工厂方法创建:
3)通过非静态工厂方法创建:
5、叙述StatefulBean和StatelessBean的区别?
StatefulSessionBean可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的StatefulSessionBean的实体。
StatelessSessionBean虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫StatelessSessionBean的时候,EJBContainer并不会找寻特定的StatelessSessionBean的实体来执行这个method。
换言之,很可能数个使用者在执行某个StatelessSessionBean的methods时,会是同一个Bean的Instance在执行。
从内存方面来看,StatefulSessionBean与StatelessSessionBean比较,StatefulSessionBean会消耗J2EEServer较多的内存,然而StatefulSessionBean的优势却在于他可以维持使用者的状态。
6、EJB与JAVABEAN的区别?
JavaBean是可复用的组件,对JavaBean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。
但通常情况下,由于JavaBean是被容器所创建(如Tomcat)的,所以JavaBean应具有一个无参的构造器,另外,通常JavaBean还要实现Serializable接口用于实现Bean的持久性。
JavaBean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。
EnterpriseJavaBean相当于DCOM,即分布式组件。
它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。
但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。
EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。
客户通过容器来访问真正的EJB组件。
7、ajax有什么组成,各组件作用是什么?
由JavaScript、CSS、DOM、XMLHttpRequest组成。
JavaScript:
将所有的东西绑定在一起。
CSS:
级联样式表
DOM:
进行动态显示及交互。
XMLHttpRequest:
进行异步数据查询、检索。
8、请说出Hibernate中持久化对象的生命周期以及各种状态直接的区别,并描述相互之间是如何转换的。
Hibernate中持久化对象的生命周期有临时态、持久态和游离态三种。
处于临时态的对象主键值为空,并且未与session关联,数据未保存到数据库中
处于持久态的对象与session关联起来,持久化后对象中的数据被保存到数据库中,并且主键值按照.hbm.xml文件中配置的生成方式生成相应的值
处于游离态的对象脱离了session的管理,是持久化后的一种状态,主键值按照.hbm.xml文件中配置的生成方式生成相应的值
当new一个新的对象时,该对象处于临时态
当该对象被当作session的参数使用的时候,该对象处于持久态
事务提交,session关闭后,该对象处于游离态
9、spring和hibernate的事务管理方式有什么不同?
hibernate的事务管理方式仅仅就是托管给JDBC(如果用JTA那么就是JTA),而JDBC的一切行为包括事务是基于一个connection的,那么hibernate委托给JDBC的事务也就是基于一个session。
JTA与JDBC事务不同在于可以跨连接。
spring也是调用hibernate中事务管理的API。
hibernate的事务管理,一般是编程性的。
而委托给spring之后,可以使用声明式的,也就是可以在XML之中配置哪些需要进行事务管理,哪些不需要
10、Hibernate有哪5个核心接口?
它们的作用分别是什么?
答:
Configuration接口:
配置Hibernate,根据其启动hibernate,创建SessionFactory对象;
SessionFactory接口:
初始化Hibernate,充当数据存储源的代理,创建session对象,sessionFactory是线程安全的,意味着它的同一个实例可以被应用的多个线程共享,是重量级、二级缓存;
Session接口:
负责保存、更新、删除、加载和查询对象,是线程不安全的,避免多个线程共享同一个session,是轻量级、一级缓存;
Transaction接口:
管理事务;
Query和Criteria接口:
执行数据库的查询。
11、什么是ORM?
答:
对象关系映射(Object—RelationalMapping,简称ORM)是一种为了解决
面向对象与面向关系数据库存在的互不匹配的现象的技术;简单的说,ORM是通
过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化
到关系数据库中;本质上就是将数据从一种形式转换到另外一种形式。
12、解释数据持久化的好处?
答:
数据库的读写是一个很耗费时间和资源的操作,当大量用户同时直接访问数据库的时候,效率将非常低,如果将数据持久化就不需要每次从数据库读取数据,直接在内存中对数据进行操作,这样就节约了数据库资源,而且加快了系统的反映速度。