JPA是java的api, Hibernate是JPA的一个实现。MyBatis、Hibernate都是ORM框架, MyBatis没有按照JPA那套规范实现。系统的设计步骤你是从哪里拷贝的吧,我的经历告诉我,实际不是那样的。
不管用JPA还是Hibernate都要用关系型数据库,用到关系型数据库,你就必须了解SQL语法。JPA抽象了api, 为了替代native sql,增加了学习成本,降低了性能。复杂的查询还是只能用native sql。
只觉得ORM映射用起来很爽,其它功能好烦躁。最反感hibernate的瞬时态/持久态/托管态, 写业务代码,你会操作到数据库。domain一对一,一对多,多对多,延迟加载,级联删除,这些配置也很多。你配置了级联删除,如果某段代码不想级联删除,sorry,还是用native sql吧。
跨数据库服务器查询,jpa,mybatis都做不到