JPA

공통 인터페이스 설정JavaConfig 설정- 스프링 부트 사용 시 생략 가능@Configuration@EnableJpaRepositories(basePackages = "jpabook.jpashop.repository")public class AppConfig {}스프링 부트 사용시 @SpringBootApplication 위치를 지정(해당 패키지와 하위 패키지 인식)만약 위치가 달라지면@EnableJpaRepositories 필요public interface MemberRepository extends JpaRepository {}@SpringBootTest@Transactionalclass MemberJpaRepositoryTest { @Autowired MemberJpaRepositor..
·JPA/JPA 정리
엔티티// Non Owner Entity@Entitypublic class Post { @Id @Column(name = "post_id") @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String title; private String content; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(Str..
·JPA/JPA 정리
양방향 조회엔티티@Entitypublic class Passport { @Id @Column(name = "PASSPORT_ID") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String number; @OneToOne(mappedBy = "passport", cascade = CascadeType.ALL, fetch = FetchType.LAZY) private Person person; public Person getPerson() { return person; } public void setPerson(Person person) { ..
·JPA/JPA 정리
이번 시간에는 조회, 저장, 수정 삭제 (CRUD) 시 영속성 컨텍스트에서 어떻게 동작하는지 알아보려고 한다.영속성 컨텍스트 - 조회1차 캐시에서 조회em.find()를 하면 jpa는 우선 1차 캐시에서 엔티티를 조회한다. 1차 캐시에 값이 있을 경우 해당 값을 조회한다.Member member = new Member();member.setId("member1");member.setUsername("회원1");//1차 캐시에 저장됨em.persist(member);//1차 캐시에서 조회Member findMember = em.find(Member.class, "member1");데이터베이스에서 조회1차 캐시에서 우선 조회하고 값이 없을 경우 데이터베이스에서 값을 조회한다.조회한 값은 1차 캐시에 저장한다..