참치코더의 꿈 메모장

JPA / 기본적인 동작과정 미니정리(코드 위주) 본문

JPA

JPA / 기본적인 동작과정 미니정리(코드 위주)

참치깡 2025. 9. 30. 16:37
728x90

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import jakarta.persistence.*;
 
import java.util.List;
 
public class JpaMain {
 
    public static void main(String[] args) {
 
                
        // 1. persistence.xml의 설정 정보를 이용하여 엔티티 매니저 팩토리를 생성
        //    엔티티 매니저 팩토리는 애플리케이션 전체에서 딱 한 번만 생성하고 공유해서 사용해야 한다.
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
 
        // 2. 엔티티 매니저 생성
        //      엔티티 매니저를 통해서 엔티티를 데이터베이스에 등록/수정/삭제/조회 할 수 있다.    
        //       엔티티 매니저는 데이터베이스 커넥션과 밀접한 관계가 있으므로, 스레드간에 공유하거나 재사용하면 안 된다.
        EntityManager em = emf.createEntityManager();
 
        // 3. 트랜잭션 생성
        //    데이터를 변경 할때는 항상 트랜잭션 내부에서 변경을 해야 한다.
        EntityTransaction tx = em.getTransaction();
 
        try {
            tx.begin();
            logic(em);
            tx.commit();
        }catch (Exception e){
            tx.rollback();
        }finally {
            em.close();
        }
 
        emf.close();
    }
 
    private static void logic(EntityManager em) {
        String id = "No1";
        Member member = new Member();
        member.setId(id);
        member.setUsername("깔깔");
        member.setAge(5000);
 
        // 등록 : 메서드 persist 사용.
        em.persist(member);
 
        // 수정 : setter 값을 사용하여 member 값을 수정(JPA가 해당 값으로 DB에 수정해준다.)
        member.setAge(20);
 
        //한 건 조회
        Member findMember = em.find(Member.class, id);
        System.out.println("findMember.getUsername() = " + findMember.getUsername());
        System.out.println("findMember.getAge() = " + findMember.getAge());
 
        //전체 조회 : JPQL을 사용해서 해당 데이터들을 검색한다 이때 데이터베이스를 SQL로 검색하는 것이 아니라 Entity 객체를 검색하는 것이다.
        List<Member> members = em.createQuery("select m from Member m", Member.class).getResultList();
 
        for (Member memberr : members) {
            System.out.println("memberr.getUsername() = " + memberr.getUsername());
        }
 
        // 삭제 : 메서드 remove 사용.
        em.remove(member);
    }
}
cs
728x90
Comments