본문 바로가기

분류 전체보기

(178)
[Network] 프로토콜 표준과는 다르게 실제로는 소켓(Socket)이 어떻게 식별되는가? 네트워크 프로그래밍에서 Socket의 의미와 TCP/IP Stack에 대하여 TCP/IP 스택은 프로토콜 스택으로, 컴퓨터 시스템의 관점에서 어플리케이션이 사용할 수 있는 네트워크 기능을 지원하는 역할을 한다. TCP/IP 스택은 전체를 4개의 레이어로 이루어진 시스템(Transport + Internet + Network Interface)에 제공되는 네트워크 기능의 구현과 Application 레벨에서 구현된 네트워크 기능으로 구분된다. 네트워크 통신을 위해서는 Application 레이어에서 통신이 가능하도록 System 레벨에서 지원되어야 한다는 것이 중요하다. Socket Programming 어플리케이션이 운영체제의 기능, 즉 커널 코드나 시스템 코드에 바로 접근하여 사용하는 것이 불가능하다..
[Network] 프로토콜 표준 스펙에서 정의한 Socket(소켓), Port(포트), TCP connection(연결) 개념 OSI 7 Layer, TCP/IP Stack네트워크 모델은 OSI 7 레이어와 TCP/IP 스택 두 가지로 구성되는데, TCP/IP 스택은 인터넷에서 실제 사용되는 프로토콜로 OSI 7 레이어는 네트워크 시스템의 개념적 모델이다.TCP/IP 스택은 IETF에서 관리하며, TCP, UDP, IP 프로토콜의 표준 스펙은 RFC문서에 정의되어 있다.TCP, UDP는 Transport 레이어에, IP 프로토콜은 Network 레이어에 속하는 프로토콜로 호환이 가능하다.Socket, Port, TCP 커넥션은 TCP/IP 스택이 발전하면서 나온 개념으로, 시스템 레벨에서 관리되는 네트워크 기능을 지원한다.TCP/IP 프로토콜 스택에서 Application layer와 Transport layer..
[Database] SQL로 DB에 데이터를 추가(insert)하고 수정(update)하고 삭제(delete)하는 방법 SQL을 사용해서 데이터 추가하기 데이터를 추가할 때는 INSERT INTO 키워드를 사용하고, 그 뒤에 테이블 이름과 VALUES 값을 적어준다. INSERT INTO employees (name, department, salary) VALUES ('김철수', '영업', 3000000); 값들을 써줄 때 Attribute 순서에 맞게 값을 채워 넣어야 하는데, 이때 NULL값을 넣어야 하는 Attribute가 있다면 일단 NULL값을 넣어 넘겨야 한다. Query가 성공적으로 동작하면 해당 테이블에 데이터가 추가된다. ️️Primary키가 중복되는 경우 Primary key는 유일한 값이며 중복되면 안 된다. 이미 존재하는 Primary Key에 중복해서 데이터를 Insert하려 할 때 발생하는 에러..
[Spring] 빌드 관리 도구,Gradle과 Maven 빌드 관리 도구 빌드 관리 도구는 소스 코드에서 실행 가능한 애플리케이션을 자동으로 생성하는 데 도움을 주는 프로그램입니다. 이름에서 알 수 있듯이, 이는 다양한 작업을 개발하거나 스크립팅하는 데 중요합니다. 빌드 관리 도구는 다음과 같은 프로세스에 필요합니다. 빌드 툴은 임의의 명령을 실행합니다: 각 배포 시나리오는 독특하며, 각자가 파일을 다른 폴더로 복사하거나, 다른 형식으로 압축하거나, 다른 방식으로 정리해야 할 필요가 있습니다. 한 명령의 결과를 다른 명령에 적용합니다: 빌드는 거의 항상 여러 단계의 과정입니다. 소스 코드에서 문서를 생성합니다 . 소스 코드를 컴파일합니다 수집된 코드를 JAR 파일로 패키징합니다 패키지된 코드를 로컬/중앙 리포지토리 또는 서버에 설치합니다. 빌드 관리 도구에는 ..
[Spring] Spring Data JPA에서 getReferenceById vs findById (지연로딩과 즉시로딩) Spring Data JPA로 데이터의 조회를 구현할 때, 사용할 수 있는 메서드중, getReferenceById와 findById 두 메서드가 있습니다. 이 글에서는 이 둘의 차이점을 비교해보려 합니다. getRefereceById (구: getOne(ID), findOne(ID), getById(ID)) 내부적으로 EntityManager의 getReference() 메서드를 호출합니다. getReference() 메서드를 호출하면 Proxy 객체를 리턴합니다. 실제 쿼리는 Proxy 객체를 통해 최초로 데이터에 접근하는 시점에 실행됩니다. (지연 로딩(Lazy Loading)) 이때 데이터가 존재하지 않는 경우에는 EntityNotFoundException이 발생합니다. 아래는 실제 구현체 코드입..
[Database] SQL의 개념과 SQL로 데이터베이스를 정의하는 법(table 생성하기, 각종 데이터 타입, constraints, 키(key)들을 활용) SQL의 기본 개념과 구조, RDBMS의 SQL 스펙 SQL은 Relational Database Management System에서 사용되는 표준 언어로, 데이터베이스를 정리하고 데이터를 조작하고 조회하는 등 종합적인 데이터베이스 작업이 가능하다. SQL에서 Table은 데이터 모델에서 Relation을 나타내며, attribute는 column, tuple은 row, domain은 domain으로 표현한다. SQL에서 Relation은 multiset of tuples로, 중복된 tuple을 허용한다. MySQL은 InnoDB를 기준으로 가장 많이 사용되는 RDBMS이다. 데이터베이스를 생성하고 사용할 때는 'create database' 명령어를 사용하여 새로운 데이터베이스를 만들고,..
[Spring] DAO (Data Access Object), DTO (Data Transfer Object) DAO(Data Access Object) 데이터베이스에 접근하기 위한 로직을 관리하기 위한 객체 비즈니스 로직의 동작 과정에서 데이터를 조작하는 기능은 DAO 객체가 수행함 단, Spring Data JPA에서 DAO의 개념은 Repository(레포지토리)가 대체 규모가 작은 서비스에서는 DAO를 별도로 설계하지 않고 바로 서비스 레이어에서 데이터베이스에 접근해서 구현하기도 함 하지만 DAO를 서비스 레이어와 리포지토리 중간 계층을 구성하여 사용하면, 비즈니스 로직을 개발할 때 유지보수 측면에서 용이한 경우가 많음 서비스와 비즈니스 레이어 객체지향적인 설계에서는 서비스와 비즈니스 레이어를 분리해서 서비스 레이어에서는 서비스 로직을, 비즈니스 레이어에서는 비즈니스 로직을 수행해야 한다는 의견이 많다. ..
[Spring] Spring Data JPA, Repository Spring Data JPA Spring Data JPA는 JpaRepository를 기반으로 더욱 쉽게 데이터베이스를 사용할 수 있는 아키텍처를 제공 Springboot로 JpaRepository를 상속하는 인터페이스를 생성하면, 기존의 다양한 메소드를 손쉽게 활용할 수 있음 Repository Spring Data JPA가 제공하는 인터페이스 엔티티가 데이터베이스의 테이블과 구조를 생성하는 데 사용했다면, 리포지토리(Repository)는 엔티티가 생성한 데이터베이스에 접근하는 용도로 사용 리포지토리를 생성하려면 테이블과 엔티티에 대한 인터페이스를 생성하고, 아래 코드와 같이 JpaRepository를 상속받으면 됨 package org.spring.study.data.repository; impor..