본문 바로가기

개발일지66

JPA에서 엔티티 설계 시 주의 사항 1. Entity에서는 가급적 Setter를 사용하지 않는 것이 좋다. Setter를 사용하면 변경 포인트가 많아서 유지 보수가 어렵다. 즉, 특정 엔티티가 어디에서 수정된건지 파악하지 힘들어서 유지보수가 힘들다 2. 모든 연관 관계는 지연로딩(LAZY)으로 설정하는게 좋다. 즉시로딩(Eager)은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다. 특히 JPQL을 실행할 때 N+1 문제가 자주 발생한다. 실무에서는 모든 연관관계는 LAZY로 설정해야한다. 연관된 엔티티를 함께 DB에서 조회해야 하면, fetch join 또는 엔터티 그래프 기능을 사용한다. • @XToOne(OneToOne, ManyToOne) 관계는 default값 이 EAGER(즉시로딩)이므로 지연로딩으로 설정해야 한다. 3... 2022. 4. 27.
String vs StringBuffer vs StringBuilder String/ StringBuffer/ StringBuilder Java 에서 문자열을 다루를 대표적인 클래스로 String , StringBuffer, StringBuilder 가 있습니다. 연산이 많지 않을 때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은 거의 없습니다. 그러나 연산횟수가 많아지거나 멀티쓰레드, Race condition 등의 상황이 자주 발생 한다면 각 클래스의 특징을 이해하고 상황에 맞는 적절한 클래스를 사용해 주셔야 합니다! 경쟁상태(Race condition) : 두 개 이상의 cocurrent한 프로세스(혹은 스레드)들이 하나의 자원(리소스)에 접근하기 위해 경쟁하는 상태를 말한다. String과 StringBuffer, StringBuilder의 차이점 .. 2022. 4. 25.
XSS(Cross Site Script)란 XSS(Cross Site Script)란 XSS란 웹 어플리케이션에서 사용자 입력 값에 대한 필터링이 제대로 이루어지지 않을 경우에 공격자가 입력이 가능한 폼에 악의적인 스크립트를 삽입하여 해당 스크립트가 희생자 측에서 동작하도록 하여 악의적인 행위를 수행하는 취약점이다. 공격자는 취약점을 이용하여 사용자의 개인정보 및 쿠키정보 탈취, 악성코드 감염, 웹 페이지 변조 등의 공격을 수행한다. XSS 공격 종류 Stored XSS (저장형 XSS) * 공격자가 취약한 웹서버에 악성 스크립트를 저장하면 희생자가 해당 자료를 요청할 때 해당 악성 스크립트가 삽입된 응답 페이지가 전달되어 클라이언트 측에서 동작하는 방식이다. https://t1.daumcdn.net/cfile/tistory/9920EB3359A.. 2022. 4. 22.
그래프란 그래프란 노드(N : Node)와 그 노드를 연결하는 간선(E: Edge)을 하나로 모아 놓은 자료구조이다. 즉, 연결되어 있는 객체 간의 관계를 표현할 수 있는 자료구조이다. ex) 지도, 지하철 노선도의 최단 경로, 전기 회로의 소자들 그래프(Graph)와 관련된 용어 정점(vertex): 위치라는 개념. (node 라고도 부름) 간선(edge): 위치 간의 관계. 즉, 노드를 연결하는 선 (link, branch 라고도 부름) 인접 정점(adjacent vertex): 간선에 의 해 직접 연결된 정점 정점의 차수(degree): 무방향 그래프에서 하나의 정점에 인접한 정점의 수 무방향 그래프에 존재하는 정점의 모든 차수의 합 = 그래프의 간선 수의 2배 진입 차수(in-degree): 방향 그래프에.. 2022. 4. 22.
객체지향 프로그래밍이란? 객체 지향 프로그래밍이란? 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 ‘객체’들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.(협력) 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 객체지향 프로그래밍은 레고 블럭 조립하듯이, 컴퓨터 부품 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법이다. 객체지향의 장점으로 코드의 재 사용성이 높다. 새로운 코드를 작성할 때 기존 코드를 이용하여 쉽게 작성할 수 있다. 코드의 관리가 용이하다.(유지보수가 용이하다.) 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를.. 2022. 4. 17.
Web Server와 WAS Web Server는 클라이언트로 부터 HTTP 요청을 받아 HTML 문서나 각종 정적 컨텐츠(.html, .png, .css)를 전달하는 서버이다. 클라이언트에서 요청이 올 때 가장 앞에서 요청에 대한 처리를 한다. 클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할 (정적 데이터) 정적 컨텐츠를 요청(request)했으면 정적 컨텐츠를 확인하고 => .html, .png 등 응답(response) 정적 컨텐츠가 아니면 웹 서버에서 간단히 처리 못해서 WAS에게 처리를 부탁한다. => 결국 WAS가 처리해준 컨텐츠를 받은 웹 서버는 응답(response)을 해준다 Web Server가 필요한 이유는 클라이언트는 HTML 문서를 먼저 받고 그에 맞게 필요한 이미지 파일들을 다시 서버.. 2022. 4. 13.