분류 전체보기 27

DTO vs VO

DTO DTO(Data Transfer Object)는 각 계층간에 (MVC) 데이터 교환을 위한 객체다. 로직을 가지지 않는 데이터 객체이고 Getter와 Setter 메서드만 가진 클래스를 의미한다. 요청이나 응답 값을 전달하는 용도로 많이 사용한다. VO VO(Value Object)는 불변 클래스로, Read-Only 속성만을 가지고 있다.VO는 Setter 와 같이 값을 변경하는 메서드는 가져서는 안되고 생성자로만 값을 초기화해야하고 Getter 와 같이 값을 조회하는 메서드만 사용해야한다. 즉, 값 자체를 표현하는 객체이다. 추가적으로, VO는 불변 객체이기에 equals()와 hashcode()를 오버라이딩하는 것은 필수라고 볼 수 있다. 그리고 다른 VO여도 값 자체를 나타내기때문에 두개는..

WEB 2022.09.21

그래프(Graph)

개요 정점과 간선들의 유한 집합 G = (V, E) 정점(Vertex) 여러 특성을 가지는 객체 노드(node)와 같은 의미 간선(edge) 정점을 잇는 선 객체들의 연결관계를 나타냄 링크(link)라고도 함 인접 정점 간선으로 직접 연결된 정점 간선은 방향성이 있는 경우와 없는 경우 존재 그래프의 종류 무방향 그래프 (Undirected Graph) 방향이 없는 그래프 노드는 간선을 통해 양방향으로 통행 가능 노드 A와 B가 연결된 경우 (A, B) 또는 (B,A)로 표현 정점의 차수 하나의 정점에서 인접한 정점의 개수 방향 그래프(Directed Graph) 간선에 방향이 있는 그래프 노드 A에서 노드B로 가는 간선이 있을 때 라고 표현 진입 차수 방향 그래프에서 외부에서 정점으로 들어오는 간선의 수..

CS/자료구조 2022.09.21

DTO 사용 이유

1.엔티티 내부 구현을 캡슐화 DTO 대신 domain 모델을 계층간 전달에 사용하면, UI 계층에서 도메인 모델의 메소드를 호출하거나 상태를 변경시킬 수 있다. 즉, DTO를 사용하여 domain 모델을 캡슐화 하여 보호할 수 있다. 또한 domain 모델을 계층간 전송에 사용하면 model과 view의 결합이 강해질 수 있다. view의 요구사항 변화로 domain의 코드를 변경해하는 일이 생길 수 있다. 2.필요한 데이터를 선별 요청과 응답으로 Entity를 사용한다면, 요청하는 화면에 필요하지 않은 속성까지도 함께 보내지게 된다. 예를 들어 USER의 ID만 보여주면 되는 상황에서 USER가 가지고 있는 다른 값들까지 데이터에 포함 되는 것이다. 이처럼 원하지 않은 API 요청과 응답에서 Enti..

PasswordEncoder -> boot2.0 이후 변경 사항

패스워드의 암호화는 필수 → 부트 2.0부터는 무조건적으로 만들어야한다. 가장 많이 사용하는 것은 Spring Security의 BCryptPasswordEncoder 클래스이다. @Configuration @Log4j2 public class SecurityConfig extends WebSecurityConfigurerAdapter { @Bean PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); } @Override protected void configure(HttpSecurity http) throws Exception { } } Override로 생성하려 햇으나 공식 문서에서 보안설정이 변경되었다는 이슈가 있다. @Co..

SPRING 2022.09.21

Union-Find, Kruskal 정리

union - find 장점 : 만약 여러 개의 노드 무리들이 있다고 가정했을 때, 2개의 노드를 선택했을 때 그 노드들이 연결이 되어있는지 찾기가 용이하다. 예시 문제 - 프로그래머스 호텔 방배정 https://school.programmers.co.kr/learn/courses/30/lessons/64063 최소 스패닝 트리(MST)는, 주어진 그래프의 모든 정점들을 연결하는 부분 그래프 중에서 그 가중치의 합이 최소인 트리를 말한다. 입력으로 주어지는 그래프는 하나의 연결 그래프임이 보장된다. 이때 프림과 크루스칼 적용 → 주목적이 최소 스패닝 트리를 만드는 것 Kruskal → 시간복잡도O(ElogE) import java.io.*; import java.util.*; class Edge impl..

Algorithm 2022.09.21

Spring Security 정리

HTTP Session 기반의 구성 Spring Security 사용하는 이유 쿠키를 사용한 로그인 처리 → 서버에서 맴버의 정보를 가진 sessionId를 전달하고 서버에서는 쿠키 안에 sessionId의 value값을 통해 로그인 여부나 정보를 확인 문제점 키 값을 임의대로 변경할 수 있다. 쿠키에 보관된 정보(memberId) 를 타인이 도용하거나 이용할 수 있다. 세션과 쿠키를 사용한 로그인 처리 → 접근시 sessionId를 쿠키로 브라우저에게 주고 다음 접근 시 서버에서 sessionId를 통해 세션저장소에서 정보를 확인한다. 즉, 회원정보를 브라우저가 가지고 있지않고, 정보를 추측할 수 없는 sessionId를 통해 주고받아 안전하다. 문제점 세션기반 인증 방식을 사용하면 중앙 세션 관리 시..

SPRING 2022.09.21

ajax

동기 통신 client는 server 측 실행이 완료될 때까지 기다려서 결과를 받는 것 HTTP 동기 통신 - 브라우저가 직접 page를 이동시키는 방식 ex) URL을 직접 입력 후 엔터 → URL요청(Request) → 서버에서 URL 프로그램 실행 → 결과화면(html, jsp…) → Response 화면 → 화면이 바뀐다(switching) 서버측에서 로직 실행 후 화면 전체가 새롭게 바뀌는 경우 적합 비동기 통신 client는 server 측 실행이 완료될 때까지 기다리지 않고 자신의 실행 흐름을 진행하는 것 실행이 완료 되는 경우 콜백 함수를 지정해서 처리 결과를 받는다. HTTP 비동기 통신 - page이동은 없지만 JS 코드로 서버측에 요청을 보내고 응답을 받음 ex) 로그인 하는 경우 로..

FRONT 2022.09.21

Servlet/JSP

Web Architecture 요청 : client → WAS(web server → application server → RDBMS) 응답은 반대로! server 초기에 db와 브라우저 사이의 역할을 하기 위해 JAVA(Servlet/JSP) or ASP, PHP를 사용했다. 이를 일을 할 수 있는 서버라고해서 application server라고 한다. web server → client 접속, 응답 처리 application server → client 요청에 대한 로직을 처리한다. was = web server + application server ex)Tomcat war 파일을 만들어 was에 보내주면 압축해서 보는데 그거에 대한 가이드가 web.xml 자바 Java SE : stand alon..

JAVA 2022.09.21

JDBC(Java DataBase Connectivity)

JDBC 작업 순서 Driver Loading DB 연결 (Connection 생성) SQL 실행 준비 SQL 작성. Statement 생성 (Statement, PreparedStatement) SQL 실행 I, U, D S int x = stmt.execteUpdate(sql); int x = pstmt.executeUpdate(); ResultSet rs = pstmt.executeQuery(); rs.next() [단독, if, while]` 값얻기 : rs.getString() rs.getInt() 등등등.... 5. DB 연결 종료 : 연결 역순으로 종료, finally, AutoCloseable, try-with-resource (JDK7이상) if(rs != null) rs.close() ..

JAVA 2022.09.21

Index

Index의 정의 인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조입니다. 예시) 두꺼운 책 → 원하는 내용을 알기위하여 모든 페이지를 찾아보는것은 오랜시간이 걸리기 때문에 책의 앞쪽에 목차를 추가하는데 이는 테이블의 칼럼을 색인화 하는것과 같습니다. 데이터베이스에서도 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터 위치를 포함한 자료구조(인덱스)를 생성하여 빠르게 조회할수 있도록 하고 있습니다.(인덱스가 잘 설정되었을때) 인덱스를 활용한다면 테이블의 데이터를 조회하는 SELECT외에도 연산을 수행하려면 해당 대상을 조회해야 작업이 가능한 UPDATE, DELETE의 성능이 향상됩니다. Index의 특징 인덱스는 WH..