이해 15

Foreign Key에 대하여

Foreign Key- 특정 칼럼(들)의 값이 다른 테이블의 특정 row와 매칭되어야 하는 제약 조건--> 매칭되지 않으면 생성될 수 없기 때문에 두 테이블 사이에 참조 무결성을 유지할 수 있음 Foreign Key의 장점- 데이터 무결성- 쉬운 데이터 구조 및 관계 확인- update, delete 등의 로직 간소화 Foreign Key의 단점- 참조 테이블들을 스캔할 때 드는 추가 코스트(insert / update)- 테이블 구조 변경 시 고려해야 할 사항 증가- 데이터 변경이 잦을 때 코스트 증가- 테스트의 번거로움 이에 대해 여러 의견을 살펴보았다. O Foreign Key 사용을 지향해야 한다- 성능이 느려지는 문제(특히 대량의 데이터 로딩)는, 로딩 전에 Foreign Key 를 disabl..

이해 2024.05.12

엔티티와 레코드

Entity- sw에서 사용하는 데이터.- 현실에 식별 가능한 개별적인 객체나 데이터ex) 학생이나 제품처럼 실제로 존재 / 추상적인 개념--> 각 엔티티는 해당하는 속성을 갖고 있음==> sw의 클래스 또는 DB의 테이블 Record- 데이터베이스 테이블에서 각각의 행- 진짜 데이터값의 집합ex) 철수 - 17살 - 강남구 거주  Entity와 DTO의 차이1. Entity- DB나 비즈니스 로직에서 사용되는 개체- DB의 Table에 매핑되며 영속성을 가짐--> 데이터를 저장하고 검색할 때 사용 2. DTO- 서비스 간에 데이터를 전송할 때 사용- 특정 객체 형태로 데이터를 묶거나 분리할 때 사용- 클라이언트와 서버 간의 통신에서 사용되며, 네트워크 전송을 최적화하고 데이터의 일관성을 유지하기 위해 ..

이해 2024.05.06

JDK와 JRE

jdk 8을 설치했더니 jdk-1.8과 jre-1.8이라는 폴더가 생겼다. 우선 왜 java 8을 jdk-1.8이라고 하는가?- java 8의 공식적인 이름은 JAVA SE 8- 1.8.0은 개발자들을 위한 버전명- 메이저 major 버전 변경이 된다는 것은 상당한 변화를 의미하는데 자바에서의 이런 변화는 그리 크지 않음--> 개발자 입장에서는 1.8, 1.9 이런 식으로 명명 jre란?- JRE( Java Runtime Environment )는 자바 가상 머신( Java Virtual Machine ), 자바 클래스 라이브러리( Java class library ), 자바 명령( Java command ) 및 기타 인프라를 포함한 컴파일된 Java 프로그램을 실행하는데 필요한 패키지- 일반적으로 컴퓨..

이해 2024.05.04

모듈이란?

조만간 MSA를 구현한 프로젝트를 만들 예정이다. 어떻게 해야 되는지 알아보던 도중 '모듈'이란 단어가 나와 찾아보았다. 모듈- 코드를 더 쉽게 구조화하고 관리할 수 있게 해주는 것- 프로젝트의 각각의 기능이나 부분- 독립적으로 배포될 수 있는 코드의 단위 모듈의 장점- 전체 프로젝트를 이해하고 관리하기 쉬움- 각각의 부분을 독립적으로 개발하고 테스트할 수 있음- 필요에 따라 유연하게 조합하여 전체 시스템을 만들 수 있음 패키지와의 차이- 패키지: 클래스와 인터페이스를 그룹화하는 단위- 모듈: 패키지를 그룹화하는 단위            모듈 디스크립터 파일(module-info.java)에 의해 정의            다른 모듈에 대한 의존성을 명시적으로 선언하여 모듈 간의 의존성을 명확하게 관리 멀..

이해 2024.05.04

클린 코드

여기저기서 클린코드에 대한 글을 보다가 정리한 걸 포스팅  클린코드란?- 쉬워서 읽었을 때 이해하기 쉬운 코드--> 누가 봐도 이해가 잘 되는 코드! 왜 클린코드?- 코드를 봤을 때 무슨 일을 하는지 파악하기 쉽다--> 리뷰가 빨라진다==> 디버깅이 빨라진다 어떻게 해야 클린코드?--> 규칙을 정하기 1. 함수 이름은 동사 / 클래스나 속성 이름은 명사- 함수는 특정한 동작을 수행하니까 동사- 클래스나 속성은 동작을 명칭이니까 명사 2. 변수는 누가 봐도 확실히 이해할 수 있도록 짓기- 계좌를 나타내는 변수명: account(O) / acc(X)--> 변수가 무엇을 뜻하는지 빠르게 파악하기 위함 3. camelCase(카멜 표기법)을 사용하기- testcase보다는 testCase가 test와 Case를..

이해 2024.04.30

간단한 IT 용어 정리(프로토콜/HTTP/아키텍처/REST)

프로토콜-      컴퓨터나 네트워크 장치 사이에서 통신을 원활하게 하기 위해 사용되는 규칙의 집합-      데이터가 어떻게 전송되고, 수신되며, 해석되는지를 정의 HTTP-      인터넷에서 데이터를 주고받는 데 사용되는 표준 프로토콜ex) 웹 브라우저에서 웹페이지를 요청하면, 해당 요청은 HTTP 프로토콜을 사용하여 웹 서버에 전송되고, 서버는 요청된 웹페이지를 HTTP를 통해 다시 클라이언트에게 보냄 아키텍처-      시스템이나 소프트웨어의 구조나 구성을 설계하고 정의하는 것-      시스템이나 소프트웨어가 어떻게 동작하고 상호작용하는지에 대한 체계적인 계획이 포함-       Rest(데이터를 주고 받는 방법)-      클라이언트 서버의 통신방식-      웹 서비스 사이에서 정보를 주..

이해 2024.04.30

기술면접을 위한 스프링과 스프링부트 이해

스프링 프레임워크- 자바 기반 애플리케이션 프레임워크- 엔터프라이즈급 애플리케이션을 개발하기 위한 다양한 기능 제공- 전자정부 표준 프레임워크의 기반 기술로 채택되어 공공기관 웹 서비스를 개발할 때도 사용 스프링 특징1. Ioc(제어 역전)(Invertion of control)- 일반적인 자바: 사용하려는 객체 선언                     해당 객체의 의존성 생성                     객체에서 제공하는 기능 사용                     --> 객체를 생성하고 사용하는 일련의 작업을 개발자가 직접 제어- 스프링:           사용하려는 객체를 직접 생성 X(객체의 생명주기 관리를 외부에 위임)                     --> 스프링 컨테이너(IoC ..

이해 2024.04.26

Spring Security의 동작 원리 + JWT + Oauth2까지

1. 클라이언트가 어플리케이션에 요청(JSP에서 로그인) 1.1 AJAX를 통해 1차 검증 - ajax 컨트롤러 확인 1.2 서블릿필터에 의해 시큐리티필터로 시큐리티 작업이 위임 - mainLogin에서 login post로 요청 1.2.1 여러 시큐리티 필터 중에서 UsernamePasswordAuthenticationFilter에서 인증을 처리 1.2.2 로그인필터가 UsernamePasswordAuthenticationFilter를 상속 받아 사용 -> 로그인필터에서 처리 2. UsernamePasswordAuthenticationFilter(이하 로그인필터)의 attemptAuthentication에서 username과 password를 추출하여 UsernamePasswordAuthenticati..

이해 2024.04.19

상태코드

상태코드 상태 정보 의미 200 OK 요청이 성공적으로 처리되었음을 의미합니다. 클라이언트에게 요청한 데이터를 반환합니다. 201 Created 새로운 리소스가 성공적으로 생성되었음을 의미합니다. 204 No Content 요청이 성공적으로 처리되었지만, 반환할 데이터가 없음을 의미합니다. 400 Bad Request 클라이언트 요청이 잘못되었음을 의미합니다. 요청이 잘못된 경우에는 이 상태코드를 반환합니다. 401 Unauthorized 클라이언트가 인증되지 않았음을 의미합니다. 403 Forbidden 클라이언트가 요청한 리소스에 접근할 권한이 없음을 의미합니다. 404 Not Found 요청한 리소스를 찾을 수 없음을 의미합니다. 500 Internal Server Error 서버에서 오류가 발생하..

이해 2024.02.23