spring是什么以及它的优点?
spring是一个轻量级的ioc和aop容器框架 提供对事务的管理 是框架与框架的粘合剂。
IOC:
代表控制反转 以前是对象控制其他对象 现在所有的对象被spring控制 把对象注入到bean里 叫动态注入。
以前使用jsp和servlet进行开发 需要自己new对象 这样比较占内存 new一次就创建一次对象
现在交给spring进行管理后 不管访问多少次都只创建一次对象 它是单例的 性能高
AOP:
面向切面的编程 本质是拦截器 管理事务 日志 权限等
比如 操作数据库增删改需要开启事务 之后需要提交事务 这样就可用动态代理实现前置通知和后置通知
前置管理开启事务后置提交事务 spring的事务管理就用到了AOP
spring的注入方式?
1.setter注入 定义set get方法 在Bean里注入
2.构造注入 定义注入的变量 写有参构造将参数定义进来
<constructor-arg ref="user"></constructor-arg> ref定义其他标签name的值
Springmvc和struts2区别?
1.springmvc通过servlet方法进行拦截 struts2通过fitle(拦截器)方式拦截
2.springmvc非侵入式 struts2是侵入式必须继承类
3.springmvc是方法级别上调用 struts2需要通过类来方法调用 比如userAction/list
4.springmvc零配置 在controller类和方法上只需要加上注解 即可调用 struts2无法使用注解 写一个action就要配置一遍 非常繁琐
5.返回值那里springmvc加@responBody struts2需要手动转换
Hibernate和Mybatis区别?
1.hibernate标准orm框架 Mybatis不完全orm框架
2.hibernate自动生成sql Mybatis自己写映射
3. hibernate dao层开发简单 效率高但性能差 二级缓存 移植性好 Mybatis需要自己维护 容器掌握
Mybatis的#与$的区别?
#在组成sql语句默认把参数#{id}变为字符串 id='2' 可以防止sql注入
$不会把字符当字符串处理 是什么就是什么 用于数据库对象 如表名
Mybatis的缓存机制?
缓存就是把查询到的数据放到内存中 下次不用去数据库拿。
又分一级缓存和二级缓存
一级缓存是SQLSession级别的缓存 第一次执行后将结果写到缓存 下次直接拿 一级缓存默认开启
二级缓存SessionFactiory 效果也是一样的
hibernate中Java的状态对象有哪些?
1.临时状态(新建状态):不处于session
2.持久化状态:加入到session缓存
3.游离状态:已被持久化 不在session缓存中
hibernate中getCurrentSession()和openSession()的区别?
1.getCurrentSession()是查看线程有没有绑定session 有就返回没有就创建
openSession()直接new一个新的返回
2.getCurrentSession()事务提交自动关闭session
openSession()需要手动关闭