ORM是Object-Relational Mapping的缩写,即对象-关系映射。它的主要作用是在对象模型和关系模型之间作一个映射,这样在编程时可以面向对象操作,而不需要面向数据库表操作。
是的,JPA是ORM的一种实现。
JPA通过ORM框架让我们可以使用面向对象的思维方式操作数据库,而不需要直接编写SQL语句。它实现了Java对象和数据库表的映射,主要工作原理是:
- 实体类对应数据库表,实体类的属性对应表字段。
- 我们通过DAO层面向实体类对象操作,而ORM框架负责在后台转化为SQL,与数据库交互。
- 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实现,通过这种对象-关系映射机制。