엔티티 매핑- 객체와 테이블 매핑 : @Entity, @Table- 필드와 컬럼 매핑 : @Column- 기본 키 매핑 : @Id- 연관관계 매핑 : @ManyToOne, @JoinColumn @Entity@Entity가 붙은 클래스는 JPA가 관리함JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수! ⭐️ 주의- 기본 생성자 필수 (파라미터가 없는 public 또는 protected 생성자)- final 클래스, enum, interface, inner 클래스 사용 X- 저장할 필드에 final 사용 X 📋 속성name- JPA에서 사용할 엔티티 이름 지정- 기본값 : 클래스 이름을 그대로 사용- 같은 클래스 이름이 없으면 가급적 기본값을 사용 @Table엔티티와 매핑할 테이블 지정 ⭐️ ..
Spring Boot/JPA

"엔티티를 영구 저장하는 환경" 🎈엔티티의 생명주기- 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 - 영속 (managed) 영속성 컨텍스트에 관리되는 상태 아직 DB에 저장된 것 아님 - 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 - 삭제 (removed) 삭제된 상태 // 객체를 생성한 상태 (비영속)Member member = new Member();member.setId("member1");member.setUsername("회원1");EntityManager em = emf.createEntityManager();em.getTransaction().begin();// 객체를 저장한 상태 (영속)em.persist(mem..
1. 1차 캐시와 동일성 보장같은 트랜잭션 안에서는 같은 엔티티를 반환 -> 약간의 조회 성능 향상한번 조회를 하면 두번째 조회부터는 캐시에서 조회, SQL 1번만 실행ex)String memberId = "100";Member m1 = jpa.find(Member.class, memberId); // SQL 조회Member m2 = jpa.find(Member.class, memberId); // 캐시 조회println(m1 == m2) // true 2. 트랜잭션을 지원하는 쓰기 지연(transactional write-behind)SELECT트랜잭션을 커밋할 때까지 INSERT SQL을 모음JDBC BATCH SQL 기능을 사용해서 한번에 SQL 전송 UPDATE트랜잭션 커밋 시 UPDATE,..