javaee期末知识点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hibernate工作原理及为什么要用?
1.读取并解析hibernate.cfg.xml配置文件
2.读取并解析映射信息
3.创建SessionFactory
4.打开Sesssion
5.创建事务Transation
6.持久化操作
7.提交事务
8.关闭Session
9.关闭SesstionFactory
hibernate是基于ORM对象关系映射
为什么要用:
1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。简化DAO 层的编码工作
3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4. hibernate的性能好,是个轻量级框架。映射的灵活性出色。支持各种关系数据库,从一对一到多对多的各种复杂关系。
Struts2流程如下:
1、客户端浏览器发出HTTP请求。
2、根据web.xml配置,该请求被FilterDispatcher接收。
3、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。
4、Action调用业务逻辑组件处理业务逻辑,包含表单验证。
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。
6、返回HTTP响应到客户端浏览器。
Struts 2常用标签:
Struts的validate框架是如何验证的?
在struts配置文件中配置具体的错误提示,在FormBean中的validate()方法具体调用。
Spring两大功能?
控制反转:就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直
接操控。依赖注入:组件之间的依赖关系由容器在运行期决定,由容器动态的将某种依赖关系注入到组件之中。
IOC 和AOP
控制反转模式,不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务
连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。
面向方面的编程
面向方面的编程(AOP)是通过预编译方式和运行期动态代理,实现再不修改源代码的
情况下给程序动态统一添加功能的一种技术。它允许程序员对横切关注点或横切典型的职责
分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面,它将那些影
响多个类的行为封装到可重用的模块中。
AOP 和IOC 是补充性的技术,它们都运用模块化方式解决企业应用程序开发中的复
杂问题。在典型的面向对象开发方式中,可能要将日志记录语句放在所有方法和Java 类中才能实现日志功能。在AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。当然,优势就是Java 类不需要知道日志服务的存在,也不需
要考虑相关的代码。所以,用Spring AOP 编写的应用程序代码是松散耦合的。
AOP 的功能完全集成到了Spring 事务管理、日志和其他各种特性的上下文中。
简述对Ioc的理解?Spring实现DI的几种方式?
IoC是一种设计模式,它反转的是依赖对象的获取方式(注入和非注入)。可以把IoC模式看做是工厂模式的升华,认为IoC就是一个大工厂,只不过这个大工厂里要生成的对象都
是在XML文件中给出定义的,然后利用Java 的反射机制,根据XML中给出的类名生成相应的对象。从实现来看,IoC是把以前在工厂方法里写死的对象生成语句,改变为由XML 文件来定义,也就是把“工厂”和“对象生成”这两者独立分隔开来,目的就是提高灵活性和
可维护性。
1.设置注入(通过set方法为目标bean注入属性)
2.构造注入(利用构造函数来设置)
Hibernate对象的三种状态并举例说明
瞬态、游离态和持久态,三种状态转化的方法都是通过session来调用
1.瞬时状态:
通过session的save()和saveOrUpdate()方法可以把一个瞬时对象与数据库相关联,
并把瞬时对象携带的信息通过配置文件所做的映射插入到数据库中,这个瞬时对象就成了持久化对象,拥有和数据库记录相同的id标示
瞬时对象的特点是:
(1)不和Session实例关联
(2)在数据库中没有和瞬时对象关联的记录
2.持久化状态
持久对象总是与Session和Transaction相关联,在一个Session中,对持久对象的改变
不会马上对数据库进行变更,而必须在Transaction终止,也就是执行commit()之后,才在数据库中真正运行SQL进行变更,持久对象的状态才会与数据库进行同步
使用find(),get(),load()和iterater()等方法查询到得数据对象,都是持久化
对象;如果一个瞬时对象被持久对象引用,则该对象也会自动变为持久对象。
如果使用delete()方法,它就会变为瞬时对象;当一个Session执行close()或clear()、evict()之后,持久对象就会变为托管对象。
持久对象的特点:
(1)和Session实例关联
(2)在数据库中有和持久对象关联的记录
Ajax功能
异步交互、动态更新web页面(数据验证、按需取数据、自动更新页面)无刷新机制spring bean作用域有以下5个
singleton:单例模式,当spring创建applicationContext容器的时候,spring会初始化所有的该作用域实例,加上lazy-init就可以避免预处理;
prototype:原型模式,每次通过getBean获取该bean就会新产生一个实例,创建后spring 将不再对其管理;
====下面是在web项目下才用到的===