1. Hashmap和Hashtable的区别
1.HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口。
2.主要区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。
3.HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
4.HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
5.Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
6.最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
7.Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异
2. JDBC与Hibernate的优缺点比较
JDBC与Hibernate在性能上相比,JDBC灵活性有优势。而Hibernate在易学性,易用性上有些优势。当用到很多复杂的多表联查和复杂的数据库操作时,JDBC有优势。
相同点:
◆两者都是JAVA的数据库操作中间件。
◆两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭。
◆两者都可以对数据库的更新操作进行显式的事务处理。
不同点:
◆使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernate query language)语言
◆操作的对象不同:JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行,Hibernate操作的是持久化对象,由底层持久化对象的数据更新到数据库中。
◆数据状态不同:JDBC操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致,而Hibernate操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。
3. Struts2中拦截器和一般的过滤器有哪些区别?
Struts2中将框架的核心功能都分散到了各个拦截器中,拦截器可以根据需要自由组合,使用更加灵活。而过滤器是由web服务器servlet容器提供的,可以在web.xml中配置url规则
1.拦截器是语句java的反射机制的,而过滤器是基于函数回调
2.拦截器依赖于struts框架,而过滤器依赖于servlet容器
3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用
4.拦截器可以访问action上下文、值栈里的对象,而过滤器不能
5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次
4. 简单介绍下你对MyBatis的理解?MyBatis中如何使用事务?MyBatis如何做对象关联?
1. MyBatis是一个数据持久层(ORM)框架。
把实体类和SQL语句之间建立了映射关系,是一种半自动化的ORM实现。
需要开发人员自己来写sql语句,程序更灵活,在一定程度上可以作为ORM的一种补充。数据库移植性差。
便于统一管理与维护,降低了程序的耦合度
2. Mybatis对于事务的支持不太好。需要手动开启JDBC事务进行事务管理。在整个请求处理之前,创建事务工厂,基于同一个SqlSession对象获得事务对象,期间执行多次数据库更新操作,最后捕捉异常,进行事务回滚或关闭。
3. Mybatis的对象关联,分成:集合、关联
一对多,多对多统称为集合。多对一,一对一统称为关联。
不管是集合还是关联,都有两种实现方式:
嵌套查询
分别编写两个查询sql,通过自定义resultMap中association或者collection标签的select引用,将查询嵌套起来
嵌套结果
编写联表查询sql,查询出需要的多表中的数据,分别通过不同的resultMap进行映射,并在主resultMap的association或者collection标签的resultMap中,将结果映射嵌套起来
嵌套查询可能会出现1+N次查询的问题,可以通过延迟加载来尽量减少性能的影响。嵌套结果会使查询数据过多,并且不能延迟加载。所以通常使用嵌套查询更多些。
MVC指的是一种请求处理的设计模式:M:model模型,V:view 视图, C:controller控制器。MVC不仅实现了功能模块和显示模块的分离,同时还提高了应用系统的可维护性、可扩展性、可移植性和组件的可重用性。
MVC设计模式提出的很早,也有很多种具体的实现方式,例如JSP+Servlet+JavaBean,Struts1,Struts2,Spring MVC。
Spring MVC就是MVC设计模式的其中一种具体实现。
Spring MVC有前端控制器,HandlerMapping, 后端控制器,ViewResolver等几个部分构成。
通过前端控制器DispatcherServlet接受所有处理请求,通过HandlerMapping调用请求对应的后端控制器,处理请求,并返回逻辑视图,再通过ViewResolver,找到物理视图,执行并输出给客户端。
6. Hibernate生成实体类时,如果列在oracle中是date类型,映射在java是什么类型?
映射成java.util.Date类型