전체 글
-
이번 시간에는 1:1 연관관계 처리에 대해 살펴보자.1:1 연관관계 처리 1:1 연관관계여기서는 Post와 Attachment의 관계를 다룬다. 우리 시나리오에서는 게시글 하나에 첨부파일은 하나만 가능하다고 하자. 따라서 Post와 Attachment는 1:1의 관계가 된다. 1:1 관계의 특징과 처리 방법을 살펴보자.일반적으로 DB에서 1:1 관계를 처리하기 위해서는 보조테이블(Attachment)에 F.K를 설정하고 관계의 소유자로 만든다. 보조테이블(Attachment)에는 데이터가 없을 수 있지만 주테이블(Post)에는 데이터가 없을 수 있기 때문이다. 아무튼 F.K를 이용하면 join을 이용해서 서로를 탐색할 수 있다.JPA에서는 @OneToOne을 이용해서 1:1 관계를 처리한다. @OneTo..
03. 연관 관계 - 1:1 관계이번 시간에는 1:1 연관관계 처리에 대해 살펴보자.1:1 연관관계 처리 1:1 연관관계여기서는 Post와 Attachment의 관계를 다룬다. 우리 시나리오에서는 게시글 하나에 첨부파일은 하나만 가능하다고 하자. 따라서 Post와 Attachment는 1:1의 관계가 된다. 1:1 관계의 특징과 처리 방법을 살펴보자.일반적으로 DB에서 1:1 관계를 처리하기 위해서는 보조테이블(Attachment)에 F.K를 설정하고 관계의 소유자로 만든다. 보조테이블(Attachment)에는 데이터가 없을 수 있지만 주테이블(Post)에는 데이터가 없을 수 있기 때문이다. 아무튼 F.K를 이용하면 join을 이용해서 서로를 탐색할 수 있다.JPA에서는 @OneToOne을 이용해서 1:1 관계를 처리한다. @OneTo..
2020.06.04 -
이번 시간에는 N:1 양방향 관계에 대해 살펴보자.N:1의 양방향관계 매핑 @OneToMany앞서 살펴봤던 @ManyToOne은 N:1의 단방향 관계만 처리 가능할 뿐 양방향으로는 처리할 수가 없었다. DB 처럼 양방향 처리를 위해서는 어떤것이 추가로 필요할까?N:1의 반대 방향인 1:N을 설정하기 위해서는 @OneToMany를 사용한다.@Target({METHOD, FIELD})public @interface OneToMany { String mappedBy() default ""; // 관계를 소유한 객체의 필드 CascadeType[] cascade() default {}; // 연관객체에 대한 동시 처리 설정 FetchType fetch() ..
02. 연관 관계 - N:1 양방향 관계 처리이번 시간에는 N:1 양방향 관계에 대해 살펴보자.N:1의 양방향관계 매핑 @OneToMany앞서 살펴봤던 @ManyToOne은 N:1의 단방향 관계만 처리 가능할 뿐 양방향으로는 처리할 수가 없었다. DB 처럼 양방향 처리를 위해서는 어떤것이 추가로 필요할까?N:1의 반대 방향인 1:N을 설정하기 위해서는 @OneToMany를 사용한다.@Target({METHOD, FIELD})public @interface OneToMany { String mappedBy() default ""; // 관계를 소유한 객체의 필드 CascadeType[] cascade() default {}; // 연관객체에 대한 동시 처리 설정 FetchType fetch() ..
2020.06.04 -
JPA는 OR Mapping을 기반으로 동작한다. JPA에는 자바 객체와 DB의 테이블을 연결하기 위한 많은 장치들이 있는데 객체와 테이블의 차이를 잘 이해하지 못하고 사용하면 전~혀 생각하지 못했던 SQL이 동작하면서 우리의 프로젝트를 망가트린다.지난 시간까지는 하나의 테이블을 어떻게 엔티티로 표현할 수 있는지 살펴봤는데 이번 시간에는 테이블의 연관관계를 어떻게 객체의 관계로 표현할 수 있는지, 주의해야 할 내용은 뭐가 있는지 살펴보자.그 둘은 다르다!! 관계 구성 방식먼저 DB를 구성하는 테이블이 관계를 맺기 위해서는 Foreign Key(이하 F.K)를 이용한다. 이때 F.K를 설정한 테이블은 관계의 소유자가 된다. Post와 Reply의 관계에서는 Reply 테이블에 F.K 제약사항을 설정하며 R..
01. 연관 관계 - N:1 단방향 관계 처리JPA는 OR Mapping을 기반으로 동작한다. JPA에는 자바 객체와 DB의 테이블을 연결하기 위한 많은 장치들이 있는데 객체와 테이블의 차이를 잘 이해하지 못하고 사용하면 전~혀 생각하지 못했던 SQL이 동작하면서 우리의 프로젝트를 망가트린다.지난 시간까지는 하나의 테이블을 어떻게 엔티티로 표현할 수 있는지 살펴봤는데 이번 시간에는 테이블의 연관관계를 어떻게 객체의 관계로 표현할 수 있는지, 주의해야 할 내용은 뭐가 있는지 살펴보자.그 둘은 다르다!! 관계 구성 방식먼저 DB를 구성하는 테이블이 관계를 맺기 위해서는 Foreign Key(이하 F.K)를 이용한다. 이때 F.K를 설정한 테이블은 관계의 소유자가 된다. Post와 Reply의 관계에서는 Reply 테이블에 F.K 제약사항을 설정하며 R..
2020.06.03 -
이번 포스트에서는 Servlet Application에서 동작하는 Spring Security의 기본 아키텍쳐에 대해서 살펴보자. Filter Filter와 DelegatingFilterProxyServlet 기반의 Application에서 동작하는 Spring Security는 filter에서부터 시작한다. Filter는 Container가 요청을 접수한 후 어떤한 Servlet 요청을 처리하기 전에 동작하는 웹 컴포넌트이다. 이 filter를 통해서 Servlet에서 필요한 전/후 처리를 모듈화할 수 있다.이 필터는 하나만 존재하는 것은 아니고 목적에 따라 여러가지가 존재한다. 쉽게 생각하면 encoding, logging, session 관리를 위한 필터등을 예로 들수 있다.이 필터들은 따로 따로 ..
02. SecurityFilterChain이번 포스트에서는 Servlet Application에서 동작하는 Spring Security의 기본 아키텍쳐에 대해서 살펴보자. Filter Filter와 DelegatingFilterProxyServlet 기반의 Application에서 동작하는 Spring Security는 filter에서부터 시작한다. Filter는 Container가 요청을 접수한 후 어떤한 Servlet 요청을 처리하기 전에 동작하는 웹 컴포넌트이다. 이 filter를 통해서 Servlet에서 필요한 전/후 처리를 모듈화할 수 있다.이 필터는 하나만 존재하는 것은 아니고 목적에 따라 여러가지가 존재한다. 쉽게 생각하면 encoding, logging, session 관리를 위한 필터등을 예로 들수 있다.이 필터들은 따로 따로 ..
2020.06.02 -
이번 포스트에서는 OR-Mapping에 사용되는 애너테이션들에 대해 좀 더 자세히 알아보자.주요 annotation들 @Entity@Entity는 Entity로 관리할 클래스에 추가해야 하는 필수 annotation으로 클래스를 DB 테이블과 매핑하게 한다.@Target(TYPE)public @interface Entity { String name() default "";}@Entity의 target이 type이지만 final class, enum, interface 등에는 사용할 수 없다.name 속성은 entity의 이름으로 일반적으로 생략하면 클래스 이름이 적용된다. 패키지는 다르지만 이름이 같은 entity가 있다면 구별을 위해서 설정할 수 있다. entity의 이름은 나중에 JPQL을 작성할 ..
02. OR-Mapping과 상속이번 포스트에서는 OR-Mapping에 사용되는 애너테이션들에 대해 좀 더 자세히 알아보자.주요 annotation들 @Entity@Entity는 Entity로 관리할 클래스에 추가해야 하는 필수 annotation으로 클래스를 DB 테이블과 매핑하게 한다.@Target(TYPE)public @interface Entity { String name() default "";}@Entity의 target이 type이지만 final class, enum, interface 등에는 사용할 수 없다.name 속성은 entity의 이름으로 일반적으로 생략하면 클래스 이름이 적용된다. 패키지는 다르지만 이름이 같은 entity가 있다면 구별을 위해서 설정할 수 있다. entity의 이름은 나중에 JPQL을 작성할 ..
2020.06.02 -
이번 포스트에서는 Spring Security의 개요에 대해 알아보자. Spring Security SpringSecurity?Security란 프로젝트에서 사용자의 인증 처리 및 리소스의 접근 제어에 활용되는 기술로 Spring의 서브 프로젝트 중 하나이다. https://spring.io/projects/spring-security Spring SecuritySpring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications. Spring Security is a frame..
01. Security 개요이번 포스트에서는 Spring Security의 개요에 대해 알아보자. Spring Security SpringSecurity?Security란 프로젝트에서 사용자의 인증 처리 및 리소스의 접근 제어에 활용되는 기술로 Spring의 서브 프로젝트 중 하나이다. https://spring.io/projects/spring-security Spring SecuritySpring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications. Spring Security is a frame..
2020.06.02 -
BJ G5 17141 연구소2 문제링크 www.acmicpc.net/problem/17141 17141번: 연구소 2 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 승원이는 연구소의 특정 위치에 바이러스 M개를 놓을 것이고, 승원이의 신호와 동시에 바이�� www.acmicpc.net * 일단 문제를 정독 하고 1시간 이상 반드시 고민이 필요합니다. 핵심 컨셉 고려사항 * 이차원 배열을 이용한 사방탐색 문제. 기본적으로는 BFS 기반의 완탐 처리 * 연구소 상태에서 2로 주어진 공간이 실제 바이러스가 놓인 곳이 아니라 놓을 곳이라는 점에 주의 - 2의 공간이 K개, 놓은 바이러스 개수가 m개 일 때 kCm을 구한 후 그 상황에서 각 바이러스를 기점으로 완탐 ..
BJ G5 17141 연구소2BJ G5 17141 연구소2 문제링크 www.acmicpc.net/problem/17141 17141번: 연구소 2 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 승원이는 연구소의 특정 위치에 바이러스 M개를 놓을 것이고, 승원이의 신호와 동시에 바이�� www.acmicpc.net * 일단 문제를 정독 하고 1시간 이상 반드시 고민이 필요합니다. 핵심 컨셉 고려사항 * 이차원 배열을 이용한 사방탐색 문제. 기본적으로는 BFS 기반의 완탐 처리 * 연구소 상태에서 2로 주어진 공간이 실제 바이러스가 놓인 곳이 아니라 놓을 곳이라는 점에 주의 - 2의 공간이 K개, 놓은 바이러스 개수가 m개 일 때 kCm을 구한 후 그 상황에서 각 바이러스를 기점으로 완탐 ..
2020.06.01 -
SWEA D4 3234 준환이의 양팔저울 문제링크 www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWAe7XSKfUUDFAUw&categoryId=AWAe7XSKfUUDFAUw&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com * 일단 문제를 정독 하고 1시간 이상 반드시 고민이 필요합니다. 핵심 컨셉 고려사항 * 좀 더 치밀한 가지치기가 필요한 상황 * 1번 가지치기: 오른쪽의 무게가 왼쪽 보다 커서는 안된다. - 이건 쉽게 생각할 수 있고.. * 2번 가지치기: 추를 올리는 과정에서 현재까지 오..
SWEA D4 3234 준환이의 양팔 저울SWEA D4 3234 준환이의 양팔저울 문제링크 www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWAe7XSKfUUDFAUw&categoryId=AWAe7XSKfUUDFAUw&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com * 일단 문제를 정독 하고 1시간 이상 반드시 고민이 필요합니다. 핵심 컨셉 고려사항 * 좀 더 치밀한 가지치기가 필요한 상황 * 1번 가지치기: 오른쪽의 무게가 왼쪽 보다 커서는 안된다. - 이건 쉽게 생각할 수 있고.. * 2번 가지치기: 추를 올리는 과정에서 현재까지 오..
2020.05.31