나를 기록하다
article thumbnail
[TIL-9 / 230627] 프록시 - 즉시로딩과 지연로딩, 고아 객체
TIL 2023. 6. 27. 22:12

2. 즉시 로딩과 지연 로딩 단순히 member 정보만 사용하는 비즈니스 로직 member 클래스 @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "TEAM_ID") private Team team; → 멤버 클래스만 db에서 조회한다는 뜻 JpaMain Member m = em.find(Member.class, member1.getId()); 결과 Hibernate: select member0_.MEMBER_ID as MEMBER_I1_3_0_, member0_.INSERT_MEMBER as INSERT_M2_3_0_, member0_.createdDate as createdD3_3_0_, member0_.UPDATE_MEMBER as UPDATE_M4_..

article thumbnail
[TIL-8 / 230623] JPA 프록시
TIL 2023. 6. 24. 15:23

1. 프록시 Member를 조회할 때 Team도 함께 조회해야 할까? 회원과 팀 함께 출력 public void printUserAndTeam(String memberId) { Member member = em.find(Member.class, memberId); Team team = member.getTeam(); System.out.println("회원 이름: " + member.getUsername()); System.out.println("소속팀: " + team.getName()); } 회원만 출력 public void printUser(String memberId) { Member member = em.find(Member.class, memberId); Team team = member.ge..

article thumbnail
[TIL-7 / 230622] JPA 다양한 연관관계 매핑과 고급매핑
TIL 2023. 6. 23. 11:58

5. 다대다 [N : N] 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없음. 연결 테이블을 추가해서 일대다, 다대일 관계로 풀어내야함 객체는 컬렉션을 사용해서 객체 2개로 다대다 관계 가능 사용방법 @ManyToMany 사용 @JoinTable로 연결 테이블 지정 다대다 매핑: 단방향, 양방향 가능 다대다 매핑의 한계 편리해보이지만 실무에서 사용X 연결 테이블이 단순히 연결만 하고 끝나지 않음 주문시간, 수량 같은 데이터가 들어올 수 있음 다대다 한계 극복 연결 테이블용 엔티티 추가(연결 테이블을 엔티티로 승격) @ManyToMany → @OneToMany, @ManyToOne 6. 실전 예제 - 3. 다양한 연관관계 매핑 배송, 카테고리 추가 - 엔티티 주문과 배송은 1:1(..

article thumbnail
[TIL-6 / 230621] JPA 다양한 연관관계 매핑
TIL 2023. 6. 21. 22:35

1. 연관관계 매핑시 고려사항 3가지 1) 다중성 다대일: @ManyToOne (가장 많이 사용) 일대다: @OneToMany (필요할 때 사용) 일대일: @OneToOne (가끔 사용) 다대다: @ManyToMany (실무에서 사용하지 않음) JPA의 어노테이션은 DB와 매핑하기 위해 존재. 애매할 때는 반대쪽을 생각하라. 회원과 팀의 관계가 헷갈리면, 팀과 회원의 관계를 생각하라. 2) 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인 가능 사실 방향이라는 개념이 없음 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 3) 연관관계의 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 객체 양방향 관계는 A→B, B→A 처럼 참조가 2군데 존재 객..

article thumbnail
[TIL-5 / 230620] JPA 연관관계 매핑 기초, 연관관계의 주인
TIL 2023. 6. 20. 23:09

연관관계 매핑 기초 객체의 참조와 테이블의 외래 키를 매핑 용어 이해 방향(Direction): 단방향, 양방향 다중성(Multiplicity): 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 연관관계의 주인(Owner): 객체 양방향 연관관계는 관리 주인이 필요 1. 연관관계가 필요한 이유 객체를 테이블에 맞추어 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없다. 테블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다. 객체는 참조를 사용해서 연관된 객체를 찾는다. 테이블과 객체 사이에는 이런 큰 간격이 있다. Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member..

article thumbnail
[TIL-4 / 230618] Java - 인터페이스
TIL 2023. 6. 19. 10:15

인터페이스(Interface) 기능: 추상 메서드들의 집합. 인터페이스를 사용하기 위해서는 추상메서드의 집합인 인터페이스를 구현하는 클래스가 존재하여야 한다. 상속: 클래스와 달리 인터페이스는 다중상속을 허용 → 이유: 클래스는 복잡하지만 상대적으로 인터페이스는 단순한 추상메서드들의 집합 구현: 인터페이스들을 구현하는 클래스 입장에서는 인터페이스의 계층 구조를 따져서 그 인터페이스의 모든 부모 인터페이스에 존재하는 추상 메서드까지 클래스가 다 구현을 해주어야 한다. 하나의 인터페이스는 여러 인터페이스를 구현할 수 있다. 결론: 인터페이스를 구현하는 클래스는 자신이 구현하는 모든 인터페이스, 그리고 그 인터페이스의 부모 인터페이스까지 다 따져서 그 전체에 포함된 모든 추상 메서드를 다 오버라이딩해서 구현해..

profile on loading

Loading...