나를 기록하다
article thumbnail
[TIL-11 / 230629] 이분 탐색 알고리즘, 깃허브
TIL 2023. 6. 29. 23:41

1. 오늘의 고민 오늘은 알고리즘 공부 방향에 대한 생각에 많은 시간을 투자하였다. 인터넷을 찾다가 본 누군가의 말로 알고리즘을 파이썬으로 시작하였고, 공부는 성향상 백엔드가 적성에 맞아 자바, 스프링을 배워 백엔드 개발자가 되고자 한다. 그래서 최근에는 알고리즘 공부를 파이썬과 자바 두가지 언어로 모두 시행하고 있었는데, 시간적 여유가 없는 현 상황에 선택을 해야한다는 판단을 내렸다. 그래서 여러번 서칭하고 고민하다가, 당장 파이썬으로 풀 때보다 번거롭고 힘들더라도 내가 주력언어로 삼고 싶고 공부하고 있는 자바로 해야겠다는 결론을 내릴 수 있었다. 많은 사람들이 말하길, 언어는 수단이라고 한다. 한가지 언어를 깊게 공부하고 습득하면 다른 언어는 배우기가 쉬운 구조라고 한다. 나는 아직 자바, 파이썬 무..

article thumbnail
[TIL-10 / 230628] JPA 값 타입(임베디드 타입, 값 타입 컬렉션)
TIL 2023. 6. 28. 23:24

1. 기본값 타입 1) JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 2) 값 타입 분류 기본값 타입 자바 기본 타입(int, double) 래퍼 클래스(Integer, Long) String 예) String name, int age 생명주기를 엔티티에 의존 회원을 삭제하면 이름, 나이 필드도 함께 삭제 값 타입은 공유하면 안된다. 회원 이름 변경시 다른 회원의 이름..

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군데 존재 객..

profile on loading

Loading...