SQL 중심 개발의 문제점 - 객체를 관계형 DB에 관리 - SQL 중심적인 개발 - CRUD 의 무한 반복, 지루한 코드 - 패러다임의 불일치 : 객체 vs 관계형 데이터베이스 - 객체를 관계형 데이터베이스에 저장. 객체 -> SQL 변환 -> RDB(SQL) - 객체와 관계형 데이터베이스의 차이 1. 상속 2. 연관관계 3. 데이터 타입 4. 데이터 식별 방법 1. 객체의 경우 상속이 존재하지만 Table의 경우 상속이 존재하지 않고 비슷한 슈퍼타입 서브타입 관계가 존재한다. -> 자바 컬렉션을 예시로 설명 2. 객체는 참조를 사용, 테이블은 외래 키를 사용 -> 객체는 자유롭게 객체 그래프를 탐색할 수 있어야 한다. 결국 객체를 객체답게 모델링 할 수록 매핑 작업만 늘어난다. 객체를 자바 컬렉션에 ..
연관관계 매핑시 고려사항 3가지 1. 다중성 2. 단방향, 양방향 3. 연관관계의 주인 1. 다중성 - 다대일 : @ManyToOne - 일대다 : @OneToMany - 일대일 : @OneToOne - 다대다 : @ManyToMany 2. 단방향, 양방향 - 테이블 - 외래키 하나로 양쪽 조인 가능 - 사실 방향이라는 개념이 없다. - 객체 - 참조용 필드가 있는 쪽으로만 참조 가능 - 한쪽만 참조하면 단방향 - 양쪽이 서로 참조하면 양방향 3. 연관관계의 주인 - 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 - 객체 양방향 관계는 A -> B , B -> A 처럼 참조가 2군데 - 객체 양방향 관계는 참조가 2군데 있다. 둘 중 테이블의 외래 키를 관리할 곳을 지정해야 한다. - 연관관계의 ..
- 연관관계가 필요한 이유 - 객체를 테이블에 맞추어 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없다. - 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다. - 객체는 참조를 사용해서 연관된 객체를 찾는다. - 테이블과 객체 사이에는 이런 큰 간격이 있다. - 객체 지향 모델링 / 단방향 연관관계 // Member.class @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; ... //조회 Member findMember = em.find(Member.class, member.getId()); //참조를 사용해서 연관관계 조회 Team findTeam = findMember.getTeam(); //팀 저장 Team team = n..
프록시 프록시 기초 - em.find() vs em.getReference() - em.find() : 데이터베이스를 통해서 실제 엔티티 객체 조회 - em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 프록시 특징 - 실제 클래스를 상속 받아서 만들어진다. - 실제 클래스와 겉 모양이 같다. - 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 된다. (이론상으로) - 프록시 객체는 실제 객체의 참조(target)을 보관한다. - 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드를 호출한다. - 프록시 객체는 처음 사용할 때 한 번만 초기화 - 프록시 객체를 초기화 할 때, 프록시 객체가 실제 엔티티로 바뀌는 것은 아님. 초기화 ..
상속관계 매핑 - 관계형 데이터베이스는 상속 관계 X - 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속과 유사하다. - 상속관계 매핑이란 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑하는 것이다. 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 1. 각각 테이블로 변환하는 : 조인 전략 2. 통합 테이블로 변환하는 : 단일 테이블 전략 3. 서브타입 테이블로 변환하는 : 구현 클래스마다 테이블을 구현하는 전략 주요 애노테이션 1. @Inheritance(strategy = InheritanceType.XXX) - JOINED : 조인전략 - SINGLE_TABLE : 단일 테이블 전략 - TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 2. @Discrimin..
- 클래스의 개념 - 객체 지향 프로그래밍 (OOP, Object-Oriented Programming) 객체 지향 프로그래밍에서는 모든 데이터를 객체(object)로 취급하며, 이러한 객체가 바로 프로그램의 중심이 된다. 객체란 간단히 이야기 하자면 실생활에서 우리가 인식할 수 있는 사물로 설명할 수 있다. 이러한 객체의 상태(status) 와 행동(behavior)을 구체화하는 형태의 프로그래밍이 바로 객체 지향 프로그래밍이다. 이때 객체를 만들어 내기 위한 설계도와 같은 개념을 클래스(class)라고 한다. - 클래스 (class) 자바에서 클래스란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용된다. 자바에서는 이러한 설계도인 클래스를 가지고, 여러 객체를 생성하여 사용하게 된다. 클래스는 객..
- 메모리 구조 모든 자바 프로그램은 JVM을 통해서 실행된다. 자바 프로그램이 실행되면, JVM은 운영 체제로부터 해당 프로그램을 수행할 수 있도록 필요한 메모리를 할당 받는다. 이렇게 할당받은 메모리를 JVM은 용도에 따라 다음과 같이 구분하여 관리한다. - 메소드 영역 메소드 영역은 자바 프로그램에서 사용되는 클래스에 대한 정보와 함께 클래스 변수(static variable)가 저장되는 영역이다. JVM은 자바 프로그램에서 특정 클래스가 사용되면 해당 클래스의 클래스 파일(*.class)를 읽어들여, 해당 클래스에 대한 정보를 메소드 영역에 저장한다. - 힙 영역 힙 영역은 자바 프로그램에서 사용되는 모든 인스턴스 변수가 저장되는 영역이다. JVM은 자바 프로그램에서 new 키워드를 사용하여 인스..
Q3) 요솟수가 n인 배열a에서 key와 일치하는 모든 요소의 인덱스를 배열 idx의 맨 앞부터 순서대로 저장하고, 일치한 요솟수를 반환하는 메서드 ex) 요솟수 8인 배열 a {1, 9, 2, 9, 4, 6, 7, 9}이고 key가 9면 배열 idx에 {1, 3, 7} 을 저장하고 3을 반환한다. /* 요솟수가 n인 배열a에서 key와 일치하는 모든 요소의 인덱스를 배열 idx의 맨 앞부터 순서대로 저장하고, 일치한 요솟수를 반환하는 메서드 ex) 요솟수 8인 배열 a {1, 9, 2, 9, 4, 6, 7, 9}이고 key가 9면 배열 idx에 {1, 3, 7} 을 저장하고 3을 반환한다. */ public class Q3 { public static void main(String[] args) { S..
- Total
- Today
- Yesterday
- GCP
- 이펙티브자바 아이템60
- HTTP 완벽 가이드
- JS 딥다이브
- 김영한 JPA
- 이펙티브자바
- ㅇㄷㅇㅈ
- 이펙티브자바 스터디
- js array
- JPA 연관관계 매핑
- BOJ
- dreamcoding
- 프로그래머스
- 백준
- http
- 백기선 스터디
- 프로그래머스 SQL
- js api
- 이펙티브자바 아이템59
- 드림코딩
- 킹수빈닷컴
- java
- REST API
- 모던자바스크립트
- Spring Security
- 패스트캠퍼스 컴퓨터공학 완주반
- 김영한 http
- js promise
- HTTP 완벽가이드
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |