谈一谈hibernate以及它的特点(重点)
hibernate是一个全自动轻量级的持久化的orm框架,底层封装了jdbc,
通过对象关系操作数据库,它使用hql语句,大大的提高了开发效率。
hibernate使用了java的反射机制,实现了结果集和pojo自动映射。
hibernate支持各种关系数据库,从一对一到多对多的各种复杂关系.
谈一谈hibernate的缓存机制(重点)
一级缓存是session级别(事务级别)的缓存,默认开启的,不用管理.
二级缓存是sessionFactory(进程级别)的缓存,使用第三方插件(EHcache 、OScache)
默认不开启,需要手动开启,可以进行管理.
查询缓存,项目当中不经常使用.
谈一谈mybatis(ibatis)以及它的特点
mybatis是一个半自动的轻量级的orm框架,可以通过xml手写sql语句,
使用起来更灵活.
原理:加载xml文件->创建sqlsessionfactory->创建sqlsession->执行方法(提交事务)
你用过哪些mvc的框架,有什么特点
struts2的action是多实例的,每次请求都会创建一个action实例
struts2不仅仅是struts1的简单升级,它是在struts1的基础上整合了xwork的功能
核心控制器: 2.1之前 filterDispatcher 2.2-2.3之后 strutsPrepareAndExcuteFilter
工作原理 : 请求到达strutsPrepareAndExcuteFilter-->询问actionMapper-->
如果有该action,请求交给actionProxy--->创建actionInvocation实例(创建action实例,执行方法,返回结果集)
SpringMVC的工作机制或者是工作流程
1- SpringMVC的action是单例
请求交给dispatherServlet-->查询handlerMapping 找到对应的 handler-->
2-handler业务逻辑处理完返回一个modelAndView-->交给视图解析器(viewResolver)解析
--->渲染页面到客户端
Spring的特性
1- IOC(控制反转)又称 DI(依赖注入) 通常我们在程序当中是自己new一个对象,
现在将对象的创建权交给spring容器来进行管理,有依赖关系的对象注入工作也是spring来实现的.
ioc采用的工厂设计模式来实现的,
BeanFactory和ApplicationContext是核心接口
2- Spring的AOP,又称面向切面编程,通常在项目当中的事务、日志管理通过aop来实现的
3- Spring的aop是基于动态代理来实现的,基于jdk cglib实现动态代理
4- Spring往往还充当框架之间的桥梁或者粘合剂,可以更好的整合各个框架.
struts2和springMVC的区别
机制不同 :struts2的核心控制器是strutsPrepareAndExcuteFilter SpingMVC是 dispatcherServlet
性能不同:Struts2是类级别的,每次请求都会创建一个action实例,进行属性的注入
Springmvc是方法级别的,每次请求都会请求同一个action实例的方法,
通过注解形式注入request参数
设计思想:struts2更符合oop的思想,springmvc更倾向于servlet的扩展
hibernate的调优
1.制定合理的缓存策略;
2.尽量使用延迟加载特性;
3.采用合理的Session管理机制;
4.使用批量抓取,设定合理的批处理参数(batch_size);
5.进行合理的O/R映射设计
hibernate与ibatis的区别:
hibernate是全自动封装的,开发效率更便捷,而mybatis是半自动封装的,
可手写sql语句,它更灵活;
Hibernate与MyBatis共同点:
相同点:Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,
然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。
其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。
•Hibernate和MyBatis都支持JDBC和JTA事务处理。
Mybatis优势
•MyBatis可以进行更为细致的SQL优化,可以减少查询字段。
•MyBatis容易掌握,而Hibernate门槛较高。
Hibernate优势
•Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。
•Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。
•Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
•Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。
他人总结
•Hibernate功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,
而且对Hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。
•Hibernate的缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,
在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。
•iBATIS入门简单,即学即用,提供了数据库查询的自动对象绑定功能,
而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。
•iBATIS的缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,
但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。
数据库优化
常用IT技术博客论坛 csdn iteye
一般来说,要保证数据库的效率,要做好以下几个方面的工作:
1:数据库设计
数据库设计的三范式:确保每一列都不可分割
每张表只表述一件事物
该表除了主键之外的其它字段都直接依赖主键
在设计数据库的时候,要充分考虑表之间的关联关系(一对多、多对多等等),合理建立外键。
在数据方面,要考虑未来每张表的极限值(oracle数据库合理的进行分区、分表)。在查询方面,
那些被经常查询的列,建立索引,来提高查询性能.
2:sql语句优化
1:尽量不使用select * 来查询全部,只查询需要的列,避免全表扫描
2:尽量不使用in in,not in,or 使用not exits代替
3:应尽量避免在 where 子句中对字段进行表达式操作、函数操作
4:尽量避免在复杂查询中使用模糊匹配 like
尽量不进行全表扫描,使用索引来进行查询
索引并不是越多越好的,建立索引需要占用磁盘的空间,索引过多,也会
造成插入、更新等操作时缓慢。
3:数据库参数配置
4:恰当的硬件资源和操作系统
5:数据库集群
6:创建适当的存储过程,因为存储过程是预编译的,比sql效率要高
java的经典设计模式
单例和工厂必须要知道的,代理模式;
http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html
谈一谈hibernate以及它的特点(重点)
hibernate是一个全自动轻量级的持久化的orm框架,底层封装了jdbc,
通过对象关系操作数据库,它使用hql语句,大大的提高了开发效率。
hibernate使用了java的反射机制,实现了结果集和pojo自动映射。
hibernate支持各种关系数据库,从一对一到多对多的各种复杂关系.
谈一谈hibernate的缓存机制(重点)
一级缓存是session级别(事务级别)的缓存,默认开启的,不用管理.
二级缓存是sessionFactory(进程级别)的缓存,使用第三方插件(EHcache 、OScache)
默认不开启,需要手动开启,可以进行管理.
查询缓存,项目当中不经常使用.
谈一谈mybatis(ibatis)以及它的特点
mybatis是一个半自动的轻量级的orm框架,可以通过xml手写sql语句,
使用起来更灵活.
原理:加载xml文件->创建sqlsessionfactory->创建sqlsession->执行方法(提交事务)
你用过哪些mvc的框架,有什么特点
struts2的action是多实例的,每次请求都会创建一个action实例
struts2不仅仅是struts1的简单升级,它是在struts1的基础上整合了xwork的功能
核心控制器: 2.1之前 filterDispatcher 2.2-2.3之后 strutsPrepareAndExcuteFilter
工作原理 : 请求到达strutsPrepareAndExcuteFilter-->询问actionMapper-->
如果有该action,请求交给actionProxy--->创建actionInvocation实例(创建action实例,执行方法,返回结果集)
SpringMVC的工作机制或者是工作流程
1- SpringMVC的action是单例
请求交给dispatherServlet-->查询handlerMapping 找到对应的 handler-->
2-handler业务逻辑处理完返回一个modelAndView-->交给视图解析器(viewResolver)解析
--->渲染页面到客户端
Spring的特性
1- IOC(控制反转)又称 DI(依赖注入) 通常我们在程序当中是自己new一个对象,
现在将对象的创建权交给spring容器来进行管理,有依赖关系的对象注入工作也是spring来实现的.
ioc采用的工厂设计模式来实现的,
BeanFactory和ApplicationContext是核心接口
2- Spring的AOP,又称面向切面编程,通常在项目当中的事务、日志管理通过aop来实现的
3- Spring的aop是基于动态代理来实现的,基于jdk cglib实现动态代理
4- Spring往往还充当框架之间的桥梁或者粘合剂,可以更好的整合各个框架.
struts2和springMVC的区别
机制不同 :struts2的核心控制器是strutsPrepareAndExcuteFilter SpingMVC是 dispatcherServlet
性能不同:Struts2是类级别的,每次请求都会创建一个action实例,进行属性的注入
Springmvc是方法级别的,每次请求都会请求同一个action实例的方法,
通过注解形式注入request参数
设计思想:struts2更符合oop的思想,springmvc更倾向于servlet的扩展
hibernate的调优
1.制定合理的缓存策略;
2.尽量使用延迟加载特性;
3.采用合理的Session管理机制;
4.使用批量抓取,设定合理的批处理参数(batch_size);
5.进行合理的O/R映射设计
hibernate与ibatis的区别:
hibernate是全自动封装的,开发效率更便捷,而mybatis是半自动封装的,
可手写sql语句,它更灵活;
Hibernate与MyBatis共同点:
相同点:Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,
然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。
其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。
•Hibernate和MyBatis都支持JDBC和JTA事务处理。
Mybatis优势
•MyBatis可以进行更为细致的SQL优化,可以减少查询字段。
•MyBatis容易掌握,而Hibernate门槛较高。
Hibernate优势
•Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。
•Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。
•Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
•Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。
他人总结
•Hibernate功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,
而且对Hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。
•Hibernate的缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,
在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。
•iBATIS入门简单,即学即用,提供了数据库查询的自动对象绑定功能,
而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。
•iBATIS的缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,
但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。
数据库优化
常用IT技术博客论坛 csdn iteye
一般来说,要保证数据库的效率,要做好以下几个方面的工作:
1:数据库设计
数据库设计的三范式:确保每一列都不可分割
每张表只表述一件事物
该表除了主键之外的其它字段都直接依赖主键
在设计数据库的时候,要充分考虑表之间的关联关系(一对多、多对多等等),合理建立外键。
在数据方面,要考虑未来每张表的极限值(oracle数据库合理的进行分区、分表)。在查询方面,
那些被经常查询的列,建立索引,来提高查询性能.
2:sql语句优化
1:尽量不使用select * 来查询全部,只查询需要的列,避免全表扫描
2:尽量不使用in in,not in,or 使用not exits代替
3:应尽量避免在 where 子句中对字段进行表达式操作、函数操作
4:尽量避免在复杂查询中使用模糊匹配 like
尽量不进行全表扫描,使用索引来进行查询
索引并不是越多越好的,建立索引需要占用磁盘的空间,索引过多,也会
造成插入、更新等操作时缓慢。
3:数据库参数配置
4:恰当的硬件资源和操作系统
5:数据库集群
6:创建适当的存储过程,因为存储过程是预编译的,比sql效率要高
java的经典设计模式
单例和工厂必须要知道的,代理模式;
http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html