您的位置:首页 > 其它

简答了解MyBatis与MyBatis和Hibernate有什么异同

2018-03-15 10:01 302 查看
1、MyBatis和Hibernate有什么异同
相同点:屏蔽JDBC API 的底层方问细节,使我们不用于JDBC API打交道就可以访问数据库
不同点:Hibernate是全自动的ORM映射工具,可以自动生成SQL语句,Mybatis需要在xml配置文件中写SQL语句;因为Hibernate是自动生成SQL语句的,在写复杂查询时,Hibernate实现比Mybatis复杂的多

2、简单介绍Mybatis的理解
Mybatis是一种‘半自动化’的ORM实现。Mybatis的着力点在POJO与SQL之间的映射关系;具体的SQL由程序员编写,通过映射文件,将SQL所需要的参数和返回的结果字段映射到制动POJO;相对于Hibernate的‘全自动’ORM机制而言,Mybatis以SQL开发的工作量和数据库移植上的让步,让系统设计提供更大的自由空间
3、Mybatis都有哪些Executor执行器,他们之间有什么区别
SimpleExecutor:每执行一次update或者select,就会开启一个statement对象,用完立即关闭statement对象
ReuseExecutor:执行update或select时,SQL作为key查找statement对象,存在就使用,不存在就创建,用完不关闭statement对象,放置在一个Map(String ,statement)中,供下一次使用
BatchExecutor:执行update(JDBC批处理不支持的select),将所有SQL添加到批处理中(add batch),等待统一执行(executeBatch),缓存多个statement对象,每个对象都要add batch之后在统一执行executebatch()批处理的
4、Mydatis是否支持延迟加载,原理是
Mybatis支持association关联对象和collection()关联集合对象的延迟加载,association是一对一,collection是一对多查询,在Mybatis配置文件中用lazy Loading Enable=true/false是否启用延迟加载
原理:使用CGLIB创建目标的代理对象,当调用目标方法时,进入拦截器方法
5、Mybatis能执行一对多,一对一的联系查询吗,有哪些实现方法
能,不止可以一对多,一对一还可以多对多,一对多
原理:
1、单独发送一个SQL去查询关联对象,赋给主对象,然后返回主对象 
2、使用嵌套查询,似JOIN查询,一部分是A对象的属性值,另一部分是关联对 象B的属性值,好处是只要发送一个属性值,就可以把主对象和关联对象查出 来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: