JPA是Java Persistence API的简称,是Java EE及Java SE平台中ORM(Object-Relational Mapping)的标准。
它的主要作用有:
- ORM:把Java对象和数据库表进行映射,实现对象关系映射。这样,我们在编程时可以面向对象操作,而不需要面向数据库表操作。
- 持久化管理:管理Java对象到数据库表的持久化,包括创建、更新、删除等操作。
- 查询:通过JPA的查询语言(JPQL)查询数据。
- 缓存:支持缓存查询数据以提高性能。
一个简单的例子:
实体类:
@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标准,得到广泛支持并应用在各种企业级框架和项目中。