전체 글
-
[Docker] Docker는 클라이언트-서버 구조이다legacy/Docker 2024. 2. 13. 15:26
클라이언트-서버 구조 서비스 요청자인 클라이언트와 서비스 자원의 제공자인 서버 구조이다. 이는 분산 애플리케이션 구조이자 네트워크 아키텍처를 나타낸다. 클라이언트 : 서비스를 사용하는 사용자 혹은 사용자의 단말기 서버 : 서비스를 제공하는 컴퓨터 Docker 아키텍처 Dockdr는 클라이언트-서버 모델로 이루어져 있습니다. 요청과 응답을 하는 흐름은 다음과 같습니다. 클라이언트는 명령어를 실행하여 서버에 요청하게 됩니다. 서버에 요청된 명령어는 도커 데몬(Docker Daemon)이 전달받아 요청을 처리합니다. 여기서 데몬이란 서버에서 지속적으로 실행되는 소프트웨어를 의미합니다. 즉 Host OS에서 지속적으로 실행되면서 클라이언트의 요청을 받아 처리합니다. 위에서 클라이언트가 명령어를 실행했습니다. 예..
-
[Docker] 가상화 기술legacy/Docker 2024. 2. 13. 14:39
엔터프라이즈 운영 방식 들어가기 앞서 엔터프라이즈 서버가 운영되는 방식에 대해 알아보자. 아래와 같이 Baremetal, Hypervisor 그리고 Container 방식이 존재한다. Baremetal : 실제 시스템을 임대하는 클라우드 서비스의 한 형태이다. 가상머신을 기반으로 하는 기존 클라우드 컴퓨팅과 달리 하이퍼바이저가 없으며 서버 인프라에 대한 완전한 제어력을 행사할 수 있다. Hypervisor : 가상 머신을 생성하고 구동하는 소프트웨어이다. 호스트OS와 게스트 OS를 분리하고 그 사이에서 리소스를 관리한다. Container : Docker에서 사용하는 방식이다. 가상화 기술 가상화란 서버, 스토리지, 네트워 크 및 물리적 시스템에 대한 가상 표현을 생성하는데 사용하는 기술입니다. 예를 들..
-
[JPA-Error] fetch join과 new 연산자를 통한 DTO 변환legacy/JPA 2024. 2. 6. 15:03
문제 발생 먼저 정의된 Entity를 먼저 보겠다. Member Entity Team과 N:1 연관관계에 있다. :age and m.username = :username" ) public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "member_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") private Team team; private String username; private int age; /** * 연관관계 편의 메서드 */ public void changeTeam(Team t..
-
[Spring] 이미지 또는 파일 다운로드legacy/Spring 2024. 1. 28. 18:25
이전에 이미지 파일을 업로드하는 방법을 알아보았습니다. 이번엔 업로드 한 파일을 다운로드하는 방법을 알아보겠습니다. 아래 사진을 보면 첨부 파일이 존재합니다. 첨부 파일을 다운받기 위해서는 서버에 저장된 경로에 접근해야 합니다. 이미지 파일을 업로드할 때 DB에서 파일이 저장된 경로도 저장하였으므로 이를 사용하면 됩니다. DB를 보면 STORED_FILE_PATH 컬럼에 서버 경로가 저장되어 있습니다. 파일을 다운 받는 과정은 다음과 같습니다. 업로드된 파일이 저장된 서버 경로를 가져온다 UrlResource를 사용하여 "file: 서버 경로"를 등록한다 ResponseEntity의 Header를 반드시 생성한다. 이미지 파일을 정상적으로 다운로드하게 됩니다.
-
[Spring] 이미지 및 파일 등록 , MultipartFilelegacy/Spring 2024. 1. 28. 18:00
이미지 등록 form 게시물을 등록할 때 첨부파일을 추가할 수 있도록 다음과 같이 작성합니다. form: enctype="multipart/form-data" input type: "file" 태그를 보면 enctype="multipart/form-data"를 사용하고 있습니다. form을 통해 보내는 데이터는 문자, 이미지 파일입니다. binary 값과 문자를 동시에 전송하기 위해서는 enctype을 추가해주어야 합니다. Controller form으로 전송된 binary와 문자값을 받기 위해서는 MultipartFile을 사용합니다. MultipartFile에는 업로드한 파일 이름, contentType, 서버에 파일 전송 등 다양한 기능을 제공합니다. Service Controller로부터 받은 ..
-
[JPA] 연관관계에 있는 엔티티 영속화 시키기, CASCADElegacy/JPA 2024. 1. 26. 17:48
엔티티 A와 B가 영속관계에 있을 때 A를 영속화시켰을 때 자동으로 B까지 영속화시키려면 CASCADE를 사용해야 합니다. 사용방법에 대해서 알아보겠습니다. CASCADE란? CASCADE란 영속성 전이라고 합니다. 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용합니다. JPA는 CASCADE 옵션을 제공하여 em.persist()를 사용하지 않아도 엔티티를 영속화시킬 수 있습니다. CASCADE의 옵션은 다음과 같습니다. ALL, 아래에 있는 모든 옵션 적용 PERSIST, 특정 엔티티 영속화 MERGE, 병합 REMOVE, 삭제 REFRESH DETACH 연관관계에 있는 Entity 영속화, Cascade.PERSIST A엔티티를 영속화시킬 때 연관관계에 있..