[JPA] JPA로 CRUD 구현하기

jihun Choi·2023년 4월 15일
0
post-thumbnail
Read : find()
Member findMember = em.find(Member.class, 1L);
System.out.println("findMember.id = " + findMember.getId());

find로 DB에서 조회를 할때 엔티티를 1차 캐시에서 찾아보고 1차 캐시에 서 없을 경우 쿼리를 날려 DB 조회후 1차 캐시에 적재하고 객체를 가지고 온다

Create : persist()
//비영속
Member member = new Member();
member.setId(101L);
member.setUsername("HelloJAP");

//영속
em.persist(member);

persist를 하기 전 엔티티객체에 파라미터를 셋팅할때는 영속성 컨텍스트에 관리되지 않는 상태인 비영속 상태이지만 persist에 추가되는 순간 영속성 컨텍스트에 관리되는 영속상태가 된다 쿼리는 commit시점에 create문이 한번에 날라간다

Update : 영속상태인 엔티티 값 변경, merge()
//삭제 대상 엔티티 조회 
Member memberA = em.find(Member.class, “memberA");
memberA.setName("jihun")

조회를 하거나 생성된 영속 엔티티 객체내 변수의 값을 수정하면 다른 펑션을 사용하지 않아도 commit시점에 자동으로 update 쿼리가 날라간다 merge()를 사용할 수 있는데 엔티티내 변수들이 전체 수정되어 세팅되지 않은 변수도 한번에 바뀔수 있어 주의해야한다..!

Remove : remove()
//삭제 대상 엔티티 조회 
Member memberA = em.find(Member.class, “memberA");
em.remove(memberA);

영속된 엔티티 객체를 비영속상태로 만들어줌과 동시에 commit 시점에 DELETE 쿼리가 날라간다

profile
성장을 위해 열심히 노력하는 개발자 입니다

0개의 댓글