일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #aurora #database #rds #rdbs #load #balancer #web #page #haproxy
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #round robin #process #high ability #auto scailling #app server #launch template
- aws #아키텍트 #과정 #vpc #인프라 구축 #amazon sns #server #less #architecture
- aws #아키텍트 #과정 #vpc #인프라 구축 #auto scailling #lauch template #ec2 instace #private #subnet
- aws #아키텍트 #과정 #vpc #인프라 구축 #alb #load balancer #t.g #target #group #haproxy #high ability #db #replica #region
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 #스토리지 #isci #이미지 #업로드
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #endpoint #cloudwatch #monitoring
- aws #아키텍트 #과정 #vpc #인프라 구축 #ec2 #instance #launch #template #생성 #ami #amazone #machine #image
- 썸네일 #이미지
- 프로세스 #CPU #시공유 #커널
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #message #queue #sns구독
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #고가용성 #테스트 #alb #application #load balancer #application
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- 업로드 #lambda #함수 #모바일 이미지 #썸네일 이미지
- 비트 #바이트 #이진수
- aws #아키텍트 #과정 #vpc #인프라 구축 #php #alb #application #load #balancer #security #group #igw #ec2 #vpc #virtual #private #cloud
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 스토리지 #objects storage #events #upload #알림
- aws #아키텍트 #과정 #vpc #인프라 구축 #t.g #target group #alb #application #load #balancer #web #server
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #replica #복제본 #aurora #database #고가용성
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #db #장애조치 #reand only #replica #events
- 쓰레드 #쓰레드풀 #프로세스
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #trigger #python3.9 #패키지 #
- aws #아키텍트 #과정 #vpc #인프라 구축
- aws #아키텍트 #과정 #vpc #인프라 구축 #second nat #gateway #routing table #route53 #고가용성 #private subnet #
- Today
- Total
요리사에서 IT개발자로
스파르타 부트캠프 객체와 관계형 DB (다락방) 본문
관계형 DB에서 객체의 상속관계와 유사한 것이 Table 슈퍼타입, 서브타입관계이다.
Album을 저장하려면
객체 상속에서 Album은 Item속성을 받은 상태이다.
관계형 DB 입장에서
다른 Insert Qeury를 두번 작성해야한다.
insert into Item, insert into Album
Album을 조회하려면
관계형 DB에서 Item, Album 테이블을 JOIN하고
결과를
Item,Album객체의 속성에 맞게 데이터를 넣어줘야한다.
문제점은
Movie와 Book을 조회하려면
매번 ITEM 테이블과 각각 JOIN을 해야한다.
그 결과를 객체에 넣는 과정을 반복해야하기에
관계형 DB에 저장할 객체에는 상속관계를 쓰지않는다.
객체의 연관성은 참조를 사용한다.
Ex)member.getTeam();
테이블의 연관성은 외래키를 사용한다.
EX) JOIN ON M.TEAM_ID = T.TEAM_ID
객체의 연관관계에서는
Member객체로 Team객체를 참조할 수 있지만
Team객체는 Member객체를 참조할 수 없다.(단방향)
테이블의 연관관계에서
객체의 연관관계와는 다르게
TEAM테이블에서 MEMBER테이블을
TEAM_ID 속성을 통하여 역참조가 가능하다.(양방향 - 방향성이 없다.)
테이블 중심에 데이터 모델링을 객체 모델링에 표현할 수 없다.
teamId 가 아닌 TEAM을 참조할 수 있어야 객체모델링이다.
Member는 TEAM을 가지면서
member.getTeam().getId과 같이
속성에 접근하여 데이터를 조작할 수 있다.(연관관계)
Member, Team을 JOIN한 데이터를 얻기위해
member와 team에 각각 넣어주고
member.setTeam(team)으로 연관관계를 맺어줘야한다.
RDBMS 는 일반적으로 SQL쿼리수를 최소화하고
JOIN을 통하여
여러 엔티티를 로드하며 원하는 대상 엔티티를 선택해야한다.
Java에서는
객체간의 관계 그래프를 통해서 객체를 탐색하고 객체간 통신은 자유로워야한다.
처음 실행한 SQL 결과에 따라 탐색 범위가 결정되기에
객체그래프 탐색의 성질을 완벽히 사용할 수 없다.
Mapper통해서 맵핑된
member.getTeam(); 과
member.getOrder().getDelivery();가
NullpointerException에서 벗어날 수 있을지
어떻게 데이터를 조립했는지
Query까지 탐색해야지만 알 수가 있다.
동일한 회원정보를 가져오는데, 상황에 따라서 여러가지 조회 메소드를 만들어야 할 수 있다.
같은 memberId를 가지고 조회를 하더라도
결국 member1과 member2는 다르다.
주소값이 다르다
Member member 1 = memberDAO.getMember(memberId); 는
Member member1 = new Member(memberDAO.getMember(memberId)); 가
생략되어 진행된것과 똑같기에
새로운 주소값에 저장된 memberId의 String은 member 1이고
member2도 결국 위와 같이 진행되어
memberId = "100"이 정의된
"100"은 같지만
주소값은 다르기에 false로 표시되는것이다.
RDBMS는
기본키(PK)를 이용해
sameness라는 하나의 개념을 정확히 정의한다.
그러나 Java에서는
객체식별(a==b)과 객체동일성(a.equals(b))을 모두 정의한다.
RDBMS에서는 PK가 같으면 서로 동일한 record라고 정의하지
Java에서는 주소값이 같거나 내용이 같은 경우를 구분하여 정의한다.
https://hs-backend.tistory.com/199
'Spring' 카테고리의 다른 글
스파르타 부트캠프 Entity 맵핑 (다락방) (0) | 2024.06.18 |
---|---|
스파르타 부트캠프 JPA 동작 원리 (다락방) (0) | 2024.06.18 |
스파르타 부트캠프 JPA (다락방) (0) | 2024.06.18 |
Spring Boot JUnit 과 TDD, 단위테스트와 통합테스트 (1) | 2024.06.15 |
스파르타 부트캠프 REST API 요청과 응답 (다락방) (0) | 2024.06.14 |