Spring Data JPA和ORM的区别

13

以下是我对 Spring Data JPA 的问题。

Q1 Spring Data JPA是ORM吗?如果不是,那它是什么?

Q2 Spring Data JPA有什么优势?

1个回答

19

Q1 Spring Data JPA 是ORM吗?如果不是,它是什么?

不是。它是一个可以在编译时创建“自动”数据访问对象(DAO)的系统,并在这些DAO中使用ORM(如Hibernate)。

Q2 Spring Data有什么优势?

  1. 您无需编写自己的DAO
  2. 可以轻松地切换JPA实现
  3. 甚至可以切换到非JPA数据源,如MongoDB

例如,您可以像这样创建实体:

@Entity
public class Foo {

  @Id
  private Long id;

  private String name;

  ...
}

并且一个仓库定义应该像这样:

public interface FooRepository extends CrudRepository<Foo, Long> {
  //that's it, nothing else. no code
}

Spring Data JPA会创建一个代理仓库类(代理方法调用到SimpleJpaRepository)来选择、插入、更新和删除您的Foo对象。

@Controller
public class FooController {
  
  @Autowired
  private FooRepository fooRepository;

  @RequestMapping("/")
  @ResponseBody
  Foo getFoo() {
    return fooRepository.findOne(1L); //look, you didn't need to write a DAO!
  }
}

这个仓库类在运行时使用您的JPA EntityManager。


1
Spring Data是一个ORM框架的封装。 - sy456

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接