什么是JPA?它的作用是什么?

JPA是Java Persistence API的简称,是Java EE及Java SE平台中ORM(Object-Relational Mapping)的标准。
它的主要作用有:

  1. ORM:把Java对象和数据库表进行映射,实现对象关系映射。这样,我们在编程时可以面向对象操作,而不需要面向数据库表操作。
  2. 持久化管理:管理Java对象到数据库表的持久化,包括创建、更新、删除等操作。
  3. 查询:通过JPA的查询语言(JPQL)查询数据。
  4. 缓存:支持缓存查询数据以提高性能。
    一个简单的例子:
    实体类:
@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

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

    @Column(name = "age")
    private Integer age;
}

DAO:

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

    public User findById(Long id);

    public List<User> findAll();
}

实现:

@Repository
public class UserDAOImpl implements UserDAO {

    @PersistenceContext
    private EntityManager em;

    @Override
    public void save(User user) {
        em.persist(user);
    }

    @Override
    public User findById(Long id) {
        return em.find(User.class, id);
    }

    @Override
    public List<User> findAll() {
        String jpql = "from User";
        return em.createQuery(jpql, User.class).getResultList();
    }
}

测试:

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    private UserDAO userDAO;

    @Test
    void testJPA() {
        User user = new User();
        user.setName("zhangsan");
        user.setAge(30);
        userDAO.save(user);

        User u = userDAO.findById(1L);
        System.out.println(u.getName());   //zhangsan
    }
} 

所以,通过JPA我们可以轻松实现对象关系映射,使用面向对象的思维方式操作数据库,不需要直接编写SQL语句。
JPA作为Java EE及Java SE中事实上的ORM标准,得到广泛支持并应用在各种企业级框架和项目中。