1、 Mybatis与Spring Data Jpa对比:
Spring Data JPA与MyBatis对比,其实也就是hibernate与MyBatis对比。Spring Data Jpa底层基于Hibernate实现,让程序员避免了许多机械化的crud代码,并且方便快捷,那Mybatis对于Spring Data jpa 到底有何优势呢?
优点
- 简单易学
- 更灵活:能将sql代码嵌入到查询对象中,并且能自动封装对象,只要字段名字一样就可以。
- MyBatis更适合于面向关系:这其实就是灵活性,对于增删查改更加灵活,SpringData Jpa更加面向对象
- 有助于Sql查询优化,返回对象可控:Mybitas半自动化ORM框架有助于设计表和对象等
缺点:
- 开发效率没有SpringData Jpa那么快:因为每个查询都需要自己写sql并且对应到哪个对象
- 需要维护一个结果集Result:这大大增加了程序员的负担,特别是在一对多、多对多关系中
- SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库
- 功能不够完善:因为框架本身非常小
2、多对多
这里选用博客文章和标签的例子,两个对象分别维护对方的一个列表
Article
public class Article {
private int id;
private String articleName;
public List<Tag> getTags() {
return tags;
}
public void setTags(List<Tag> tags) {
this.tags = tags;
}
private List<Tag> tags;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return articleName;
}
public void setName(String name) {
this.articleName = name;
}
public Article(int id, String name) {
this.id = id;
this.articleName = name;
}
public Article() {
}
@Override
public String toString() {
return "Article{" +
"id=" + id +
", articlename='" + articleName + '\'' +
", tags=" + tags +
'}';
}
}
Tag
public class Tag {
@Id
private int id;
private String tagname;
private List<Article> articles;
public List<Article> getArticles() {
return articles;
}
public void setArticles(List<Article> articles) {
this.articles = articles;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return tagname;
}
public void setName(String name) {
this.tagname = name;
}
public Tag(int id, String name) {
this.id = id;
this.tagname =