연관관계 매핑 ORM은 Object Relation Mapping의 약자로 객체와 관계형 데이터베이스 사이의 간격을 객체(엔티티)에 연관관계를 매핑해서 관계형 데이터베이스와 소통하는 기술이다. 엔티티 매핑은 객체와 데이터베이스 사이의 일대일로 대응되기에 JPA 어노테이션과 디테일 설정을 통해 쉽게 설정할 수 있다. 연관관계 매핑은 객체의 참조와 테이블의 외래 키를 매핑을 의미하는데 JPA에서는 PK가 아닌 PK에 해당하는 엔티티 객체 자체를 참조한다. 연관 관계시에 고려해야할 것 방향성 데이터베이스는 외래 키로 테이블 조인을 하기에 방향성이 없지만, 객체는 참조를 통해 다른 객체에 접근할 수 있어 방향성을 가진다. 단방향 연관관계 : 두 엔티티 사이에 하나의 객체만 다른 객체를 참조 양방향 연관관계 : ..
@Entity 테이블과 매핑할 클래스는 해당 어노테이션을 붙여 JPA가 관리하고 엔티티라 한다 리플렉션 API를 활용한 동적 프록시를 이용하므로 1.기본 생성자 필수(public or protected 접근제한자) 2. final 클래스, enum, interface, inner 클래스는 사용불가 관련 포스팅 프록시 패턴, 리플렉션 API 데이터베이스 스키마 자동생성 자바 애플리케이션 실행 시점에 DDL을 이용한 스키마 자동생성 데이터베이스 방언을 활용해서 사용하는 데이터베이스에 맞는 적절한 DDL 생성 생성된 DDL은 개발 장비에서만 사용할 것 hibernate.hbm2ddl.auto 옵션 설명 create 기존 테이블 삭제 후 다시 생성(DROP + CREATE) create-drop CREATE와 ..
OAuth란? 구글, 카카오 같은 다양한 플랫폼의 자신의 정보에 대해 웹 사이트나 애플리케이션의 접근 권한을 부여할 수 있는 수단으로 우리가 개발하는 서비스가 플랫폼의 정보에 접근하기 위해 접근권한을 플랫폼으로부터 위임을 받는 것이다. 본 포스팅은 Authorization Code 방식의 OAuth만을 다룹니다. OAuth 2.0이 나오게 된 이유 위와 같은 주체들이 있을 때 USER는 GOOGLE이나 KAKAO에 회원가입이 되어있는 상태이고, MY SERVER에서 PLAFORM에 접근하기 위해 PLATFORM INFO를 넘겨주면 MY SERVER에서는 PLATFORM에 USER 리소스에 대한 접근을 USER인 것 처럼 할 수 있다. 하지만 USER의 입장에서 MY SERVER에서 해당 정보를 유실하거나..
단순 CRUD는 그만! 웹 백엔드 시스템 구현(Spring Boot) 15기 참여 후기입니다. 1주차 수업 내용 스프링 프레임 워크 객체 라이프사이클, 의존관계 컨트롤 스프링 웹 MVC 서블렛, 서블렛 컨테이너, 애플리케이션 컨텍스트의 계층별 분리 작성 포스팅 스프링 프레임 워크, 스프링 웹 MVC , 서블렛 컨테이너 배운점 1.테스트용 레포지토리 관리 데이터베이스가 아닌 자바 자료구조 API를 사용한 메모리 레포지토리 @Repository public class TestUserRepository implements UserRepository { private static Long seq = 1L; private static Map users = new HashMap(); public void autoi..
이 글은 '면접을 위한 CS 전공지식 노트' 책을 토대로 작성하였습니다. 메모리 계층 레지스터 CPU 안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억 용량 가장 적음 캐시 L1, L2 캐시를 지칭. 휘발성, 속도 빠름, 기억 용량 적음 주기억장치 RAM을 지칭. 휘발성, 속도 보통, 기억 용량 보통 보조 기억장치 HDD, SSD를 지칭. 비휘발성, 속도 낮음, 기억 용량 많음 계층 위로 올라갈수록 가격은 비싸지고 용량은 작아지고 속도가 빨라지는 특징이 있다. 이러한 계층이 있는 이유는 경제성과 캐시 때문이다. 예를들어 16GB RAM은 8만원이지만 동일 용량의 SSD는 훨씬 더 싸다. CPU에서 멀어질수록 용량은 크고 속도는 느리고 가격은 저렴해지지만 CPU까지 가져오기 위해 추가작업이 필요해지..
스레드란 ? 컴퓨터 세계에서 동시에 여러가지 일을 병행해서 하는 멀티태스킹은 프로세스 기반과 스레드 기반 두 가지 유형으로 나뉜다.프로세스 기반의 멀티 태스킹은 미디어 프로그램 , 인터넷 브라우저, 메신저 프로그램 등을 동시에 실행하는 작업이고 프로세스 기반의 멀티태스킹에서는 병행처리 단위가 프로세스 이다.스레드 기반의 멀티 태스킹은 하나의 프로세스 내에서 여러 작업을 병행하는 것이고 워드 사용시 문서 편집과 동시에 프린트 작업을 할 수 있는데 하나의 프로그램 내에서 동시에 실행되는 작업 단위는 스레드라고 한다. 프로세스 기반 프로세스가 생성될 때마다 새로운 메모리 영역을 할당받고 프로세스 실행에 필요한 시스템 자원 또한 새롭게 할당 받음 스레드 기반 하나의 프로그램 내에서 병행되기 때문에 프로세스에서 ..
WebServer VS WAS(Web Application Server) 웹서버 정적인 html, css, 파일 등의 정적 컨텐츠를 사용자 요청에 따라 보냄 WAS 웹서버와 웹 컨테이너를 포함하거나 웹 컨테이너를 자체를 뜻하고 사용자가 동적 컨텐츠 이용시에는 웹서버는 웹 컨테이너에 요청해 응답을 보내준다. Servlet 웹서버를 거쳐 넘어온 요청, 응답을 자바 프로그램과 소통할 수 있게 웹 서버와 소켓을 만들어 통신을 지원하는 자바 API 동적 웹 페이지(요청에 따른 비즈니스 로직 적용한 응답)을 만들 때 사용 Servlet의 생명주기 서블렛 클래스 로딩 및 인스턴스화 : 요청이 오면 Servlet 클래스가 로딩되어 요청에 대한 Servlet 객체 생성 초기화 : init() 메소드 호출로 Servlet..
간단한 프로젝트경험하고 프로그래머스 라이브 스터디를 참가해서 배운 것들에 대한 개인적인 사견입니다. 컨트롤러DTO, 서비스 DTO 지금까지는 컨트롤러에서 받은 DTO를 엔티티로 바꿔서 서비스에 넣어주거나, 컨트롤러 DTO 그대로 서비스로 넣어서 사용했다. 하지만 다음과 같은 이유로 서비스 DTO를 사용하는 것이 좋다. 1) 서비스에서 엔티티를 사용하면 DB에 저장되기 전일 수도 있고 이는 불완전한 엔티티를 서비스에서 이용하는 것이다. 2) 그대로 서비스에 넣어서 사용하면 서비스에서 컨트롤러 DTO에 의존하게 된다. 3) 컨트롤러 DTO와 서비스 DTO의 포맷이 다를 수 있고 이로 인한 처리비용이 발생할 수 있다. 거의 모든 코드가 중복일 가능성이 높지만 그래도 컨트롤러와 서비스의 강한 결합을 떨어트리는게..