Struts2的优缺点
- 优点:
- 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现
- 有丰富的tag可以用,大大提高开发效率
- 支持I18N
- 缺点
- Struts2仅仅允许一个实例去处理所有的请求,所以就引起了线程安全问题
- 对Servlet依赖性过强
- 对事件支持不够
Hibernate中的update和saveOrUpdate的区别
- saveorupdate():如果传入的对象在数据库中有就做update操作,如果没有就做save操作
- saveOrUpdate():方法可以在没有事务的情况下执行,但是如果没有手动调用flush()方法会面临关联对象不被保存的问题
- update():就是更新数据库中的记录
Hibernate中Java对象的三种状态及作用
- 瞬时状态(Transient):不曾进行过持久化,未于session关联,不使用后会被垃圾回收
- 持久状态(Persistent):当前仅于一个session关联,处于持久化状态的对象在session关闭时,会将数据同步到数据库
- 游离状态(Detached):也称脱管状态,已经进行过持久化,但当前未于session关联
简述Hibernate和JDBC相同点和不同点
- 相同点:
- 两者都是Java的数据库操作中间件
- 两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭
- 两者都可以对数据库的更新操作进行显示的事务处理
- 不同点:
- 使用的SQL语言不一样,JDBC的是标准SQL语言。Hibernate使用的是HQL语言
- 操作对象不同,JDBC操作的是数据,Hibernate操作的是对象
- 数据状态不同,JDBC操作的数据是"瞬时"的,Hibernate操作的数据是持久化的
Hibernate和mybatis的相同点和不同点
- 相同点:Hibernate与mybatis都可以通过SessionFactoryBuilder由XML配置文件生成SessionFactory,然后由SessionFactory生成Session,最后由Session来开启事务和SQL语句
- 不同点:
- Hibernate是全自动,mybatis是半自动
- mybatis的SQL语句上比Hibernate方便很多
- Hibernate在缓存机制上比mybatis更好一些
Hibernate的性能优化
- 避免
or
操作,可以使用in
条件来替换 - 避免使用
not
,执行时该字段的索引失效,使用比较运算符替换not - 避免
like
的特殊形式,查询时,尽量少使用like
Hibernate缓存有几种,分别的作用
-
一级缓存
:Hibernate默认的缓存机制,它属于session级别的,也就是说session关闭,缓存数据消失 -
二级缓存
:属于sessionFactory级别的缓存,二级缓存是全局性的,应用中所有的session都共享这个二级缓存 -
查询缓存
:用来提高查询速度,优化查询性能,依赖于二级缓存,要使用查询缓存必须先开启二级缓存
Hibernate中一级缓存和二级缓存的区别
- 一级缓存:
- 一级缓存是Hibernate自带缓存,由系统进行维护和管理
- 一级缓存生命周期为session范围
- 当session关闭时,一级缓存中的内容会被清空
- 二级缓存:
- 二级缓存是基于第三方,需要另外导入jar包
集群和分布式的区别
- 分布式:一个业务拆分多个子业务,部署在不同的服务器上
- 集群:同一个业务,部署在多个服务器上
什么是RPC
- RPC(Remote Procedure Call)远程过程调用,是分布式系统常见的一种通信方法。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显示编码这个远程调用的细节
Spring核心容器(应用上下文模块)概述
- 这是基本的Spring模块,提供Spring框架的基础功能,BeanFactory是任何以Spring为基础的应用的核心。Spring框架建立在此模块之上,它使Spring成为一个容器
BeanFactory——BeanFactory实现举例
- Bean工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置和依赖从正真的应用代码中分离
- 最常用的BeanFactory实现的是
XmlBeanFactory
类
Spring自动装配有哪些局限性
- 自动装配的局限性是:
重写:仍需用<constructor-ary>和<property>配置来定义依赖,意味着总要重写自动装配
基本数据类型:不能自动装配简单的属性,如基本数据类型,String字符串和类
模糊特性:自动装配不如显示装配精确,如果有可能,建议使用显示装配
什么是基于Java的Spring注解配置?举例?
- 基于Java的配置,允许在少量Java注解的帮助下,进行自己的大部分Spring配置而非通过XML文件
- 以@Configuration注解为例,它用来标记类可以当作一个bean的定义,被Spring IOC容器使用。另一个例子是@Bean注解,它表示此方法将要返回一个对象,作为一个bean注册进Spring应用上下文
MVC的各个部分都用哪些技术来实现?如何实现?
- Model层:可以用普通的javaBean来实现
- View层:可以用JSP或者JS来实现
- Controller层:可以用Struts2或者SpringMVC来实现
网友评论