什么是ORM?JPA是ORM的一个实现吗?

ORM是Object-Relational Mapping的缩写,即对象-关系映射。它的主要作用是在对象模型和关系模型之间作一个映射,这样在编程时可以面向对象操作,而不需要面向数据库表操作。
是的,JPA是ORM的一种实现。
JPA通过ORM框架让我们可以使用面向对象的思维方式操作数据库,而不需要直接编写SQL语句。它实现了Java对象和数据库表的映射,主要工作原理是:

  1. 实体类对应数据库表,实体类的属性对应表字段。
  2. 我们通过DAO层面向实体类对象操作,而ORM框架负责在后台转化为SQL,与数据库交互。
  3. ORM框架还负责实体类对象和数据库表的同步,实现自动持久化。

一个简单的例子:

实体类:

@Entity 
@Table(name = "user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;
}

DAO:

public interface UserDAO {
    public void save(User user);
}

实现:

@Repository
public class UserDAOImpl implements UserDAO {

    @PersistenceContext
    private EntityManager em;

    @Override
    public void save(User user) {
        em.persist(user);   //JPA自动生成SQL,插入数据库
    }
}

测试:

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    private UserDAO userDAO;

    @Test
    void testJPA() {
        User user = new User();
        user.setName("zhangsan");
        userDAO.save(user);   //面向对象操作,JPA自动持久化到数据库
    }
}

可以看出,通过JPA,我们实现了对象-关系映射,面向Java对象操作,而JPA ORM框架则实现了对象到关系数据库的持久化管理。所以JPA是一种ORM实现,通过这种对象-关系映射机制。