MySQL不用外键的话,如何让表起来关联
11972023-08-20
大家好,mybatis关联映射是不是适合老项目配置易搞晕,还要学吗相信很多的网友都不是很明白,包括mybatis不建议建立关系也是一样,不过没有关系,接下来就来为大家分享关于mybatis关联映射是不是适合老项目配置易搞晕,还要学吗和mybatis不建议建立关系的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
本文目录
mybatis与hibernate一样是个orm数据库框架。它与hibernate区别是非常大的,有以下几点:
总结起来:
mybatis:小巧、方便、高效、简单、直接、半自动
hibernate:强大、方便、高效、复杂、绕弯子、全自动
1.hibernate是全自动,而mybatis是半自动。
hibernate完全可以自动生成sql。而mybatis仅有基本的字段映射,仍然需要通过手写sql来实现和管理。
2.hibernate数据库移植性远大于mybatis。
hibernate通过它强大的映射结构和hql语言,大大降低了对象与数据库(oracle、mysql等)的耦合性,而mybatis由于需要手写sql,移植性也会随之降低很多,成本很高。
3.hibernate拥有完整的日志系统,mybatis则欠缺一些。
hibernate日志系统非常健全,涉及广泛,而mybatis则除了基本记录功能外,功能薄弱很多。
4.mybatis相比hibernate需要关心很多细节
hibernate配置要比mybatis复杂的多,学习成本也比mybatis高。但也正因为mybatis使用简单,才导致它要比hibernate关心很多技术细节。mybatis由于不用考虑很多细节,开发模式上与传统jdbc区别很小,hibernate则正好与之相反。但是如果使用hibernate很熟练的话,实际上开发效率丝毫不差于甚至超越mybatis。
5.sql直接优化上,mybatis要比hibernate方便很多
由于mybatis的sql都是写在xml里,因此优化sql比hibernate方便很多。而hibernate的sql很多都是自动生成的,无法直接维护sql;总之写sql的灵活度上hibernate不及mybatis。
mybatis:
1.入门简单,即学即用,提供了数据库查询的自动对象绑定功能。
2.可以进行更为细致的SQL优化,可以减少查询字段。
3.缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。
4.二级缓存机制不佳。
hibernate:
1.功能强大,数据库无关性好,O/R映射能力强。
2.有更好的二级缓存机制,可以使用第三方缓存。
3.缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。
举个形象的比喻:
mybatis:机械工具,使用方便,拿来就用,但工作还是要自己来作
hibernate:智能机器人,但研发它(学习、熟练度)的成本很高,工作都可以摆脱他了,但仅限于它能做的事。
头条上问这种问题也是醉了。。看到了顺便答一波,瞎扯的人太多。
国内的设计思路是tabledriven的,简单来说,用数据表定逻辑,用模型做实现,实际这是和面向对象相反的思路。mybatis所谓的灵活性在大多数工程师手里就是不用考虑模型如何设计,“反正我用原生sql都能解决”,模型设计的烂的一逼,全靠sql去修修补补。而jpa是完全objectdriven的思路,前期设计的缺陷会很制约后续开发,并且不同的数据库可做不同的实现(实际是哪怕是redis也是一样的)。回答几个常见sb问题。
1.jpa表连接行为不确定,难以控制。
你确定你用过springdatajpa?不知道有EntityGraph?傻瓜到这种程度了还能咋的。
2.jpa子查询不好实现。
我估计你都没用过吧?springdatajpa的子查询既可以单独定义视图,也可以做subquery,甚至直接用jpql。
3.jpa不好优化。
我真不信99%得优化能超过springdatajpa的优化,尤其是一般般的程序员能别把优化放嘴上么,连mysql的锁都搞不清楚,表设计的跟坨屎一样还天天原生sql,觉得自己很牛逼么?jpa是可以把表属性反应到对象的,天然就有运行时优化的底子在,ORM能发展的空间太大了,稍微有点技术认知的都知道ORM会优势越来越大。稍微有些经历的程序员都知道现在是先说好维护才说其他的,能解决性能的方法太多了好么。
最后,难道不知道现在提倡ORM+CQRS么?请问,有啥复杂的解决不了,都不需要nativesql介入好么。
MyBatis关联映射适合老项目,但是学习它仍然是必要的。因为随着业务的发展和技术的升级,老项目的数据结构和数据关联关系也会发生变化,使用MyBatis关联映射可以解决老项目中散乱且复杂的数据操作问题。虽然MyBatis关联映射的配置过程相对繁琐,但通过仔细阅读文档和练习,掌握其配置的方法后仍然可以很好地应用于项目中,并且会提高老项目的数据操作效率和代码质量。
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。
MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(PlainOrdinaryJavaObject,普通的Java对象)映射成数据库中的记录。
关于本次mybatis关联映射是不是适合老项目配置易搞晕,还要学吗和mybatis不建议建立关系的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。