목록코딩 공부 (64)
ballqs 님의 블로그
Docker Compose 란?여러 개의 Docker Container를 하나의 서비스로 정의하고 구성하며 관리할 수 있게 하는 것 Docker Compose를 사용하는 이유는?편하게 설정하기 : 여러 컨테이너를 한 파일에 적어서 설정자동으로 배포 : Docker Compose가 컨테이너들을 알아서 만들어 줌의존성 관리 : 컨테이너들간 서로 의존관계가 있다면 관리 해줌모니터링과 로깅 : 컨테이너의 현 상황을 모니터링하여 보여주며 로그까지 남김확장성 : 여러 컨테이너를 하나의 그룹으로 관리유연성 : 개발 환경,테스트 환경,실제 운영 환경에서도 같은 설정 파일을 쓰기 가능보안 강화 : 네트워크를 분리하여 외부로부터 접근을 제한유지보수 용이 : 설정 파일 하나로 컨테이너를 관리하기에 바꿀 일 있으면 파일 수정..

Dockerfile 이란?이미지를 생성하기 위한 용도로 작성하는 파일이다. 이 파일을 통해 Docker에 사용할 Image를 생성한다.Dockerfile 사용방법Dockerfile 기본적인 틀# DockerfileFROM ubuntu:latestMAINTAINER Your Name RUN apt-get update && apt-get install -y nginxCOPY index.html /usr/share/nginx/htmlEXPOSE 80CMD ["nginx", "-g", "daemon off;"]FROM: 베이스 이미지를 선택MAINTAINER: 이미지를 만든 사람의 정보를 입력RUN: 이미지에 명령을 실행하여 파일을 추가하거나 삭제COPY: 파일을 이미지에 복사EXPOSE: 컨테이너가 노출할 포..
JpaRepository 쿼리 사용 방법리턴타입 {접두어}{도입부}By{프로퍼티 표현식}(조건식)[(And|Or){프로퍼티 표현식}(조건식)](OrderBy{프로퍼티}Asc|Desc) (매개변수...)접두어Find, Count, ...도입부Distinct, First(N), Top(N)프로퍼티 표현식Person.Address.ZipCode => find(Person)ByAddress_ZipCode(...)조건식IgnoreCase, Between, LessThan, GreaterThan, Like, Contains, ...정렬 조건OrderBy{프로퍼티}Asc|Desc리턴 타입E, Optional, List, Page, Slice, Stream매개변수Pageable, Sort 쿼리 실습 코드// 기본Lis..
JPA 테이블 매핑 기능 @Entity객체 관점에서의 이름디폴트로 클래스명으로 설정됨엔티티의 이름은 JQL에서 쓰임JQL : Entity 명으로 쿼리짤때 쓰이는 언어 (ex. JPQL, QueryDsl)@TableRDB 의 테이블 이름@Entity의 이름이 테이블의 기본값주로 Entity 이름과 다르게 Table 명을 지정하고 싶을때 아래와 같이 사용@Entity@Table(name = "users")public class User () {...}테이블의 이름은 SQL에서 쓰임SQL : Table 명으로 쿼리짤때 쓰이는 언어 (ex. JDBC, SQL Mapper)@Id엔티티의 주키를 맵핑할 때 사용자바의 모든 primitive 타입과 그 랩퍼 타입을 사용할 수 있음Date랑 BigDecimal, Big..

Proxy 패턴이란?프록시 패턴은 실제 객체에 대한 접근을 제어하고, 추가적인 기능을 제공하기 위해 사용되는 디자인 패턴이다.마치 대리인처럼 실제 객체를 대신하여 동작하며, 다양한 상황에서 유용하게 활용될 수 있다.Proxy 패턴 장점접근 제어실제 객체에 대한 직접적인 접근을 제한하고, 프록시를 통해서만 접근하도록 함으로써 보안을 강화할 수 있다.특정 조건에 따라 접근을 허용하거나 거부할 수 있다. 추가 기능 제공실제 객체의 기능을 확장하여 새로운 기능을 추가할 수 있다.예를 들어, 캐싱, 로그 기록, 권한 검사 등을 프록시에서 처리할 수 있다. 지연 로딩실제 객체를 필요한 시점까지 생성하지 않고, 프록시 객체를 통해 미리 참조할 수 있다.이는 큰 객체를 로딩하는 데 드는 시간을 절약하고 시스템 성능을 ..
@TransactionalEventListener란?@TransactionalEventListener는 스프링에서 데이터베이스 트랜잭션의 경계를 따라 이벤트를 처리할 때 사용하는 특별한 어노테이션입니다. 이 어노테이션은 트랜잭션이 성공적으로 커밋된 이후에 이벤트가 처리되도록 보장합니다. 즉, 데이터베이스에 대한 작업이 확실히 완료된 후에만 이벤트가 실행되므로, 이벤트 핸들러에서 트랜잭션 내에서 발생한 변경사항을 신뢰할 수 있게 됩니다.@EventListener와의 차이점@EventListener는 트랜잭션과 관계없이 이벤트가 발생하면 즉시 처리됩니다. 반면에, @TransactionalEventListener는 트랜잭션의 상태에 따라 이벤트를 처리할 시점을 결정할 수 있습니다. 이를 통해 트랜잭션이 실패..
수 없이 공부를 했지만 세월에 인해 까먹는건 어쩔수 없나보다.그리고 기록하는 곳이 바뀌었음에 따라 여기에도 마침 다시 외우기 위해 작성해둔다.기본 테이블 설정학번 (student_id)이름 (name)이메일 (email)1홍길동hong@example.com2김철수kim@example.com3이영희lee@example.com기본 키(Primary Key)정의: 기본 키는 각 행을 고유하게 식별하며, 중복을 허용하지 않고 null 값이 허용되지 않습니다. 예시 테이블학번 (student_id)이름 (name)이메일 (email)1홍길동hong@example.com2김철수kim@example.com3이영희lee@example.com왜 기본 키인가?학번(student_id)은 각 학생을 고유하게 식별하며, 중복..
@Mock Mockito 라이브러리에서 제공하는 애노테이션입니다.Spring 컨텍스트와 무관하게, 단순히 Mock 객체를 생성하고 그 객체를 테스트 내에서 사용할 때 사용됩니다.Spring이 아닌 일반 JUnit 테스트에서 Mockito를 사용할 때 주로 사용합니다.주로 @BeforeEach나 @Test 메서드 내부에서 이 Mock 객체에 동작을 설정하거나 검증합니다. @ExtendWith(MockitoExtension.class)public class UserServiceTest { @Mock private UserRepository userRepository; @Test public void testFindUser() { // given User mock..
@Configuration 란?Spring에서 사용되는 애노테이션 중 하나로, 빈(Bean) 정의와 의존성 주입을 수동적으로 설정할 때 사용되는 클래스에 붙입니다. Spring 애플리케이션에서 사용하는 Java 기반 설정 클래스를 정의할 때 사용되며, 주로 애플리케이션의 각종 설정을 명시적으로 관리하는 데 유용합니다. 정확한 의미@Configuration 애노테이션이 붙은 클래스는 Spring IoC 컨테이너에서 하나의 설정 파일로 인식됩니다.이 클래스는 여러 개의 빈(Bean)을 생성하고 그 빈들이 서로 어떻게 의존하고 상호작용하는지를 설정할 수 있습니다.즉, 애플리케이션에서 사용할 객체(빈)를 생성하고, 그 객체들의 관계를 정의해주는 역할을 합니다.@Configurationpublic class Re..
CORS란 무엇인가?**CORS(Cross-Origin Resource Sharing)**는 다른 출처 간 리소스 요청을 허용하기 위한 웹 표준입니다. 기본적으로 브라우저는 보안상의 이유로 다른 출처에서의 리소스 접근을 차단합니다. 이를 **동일 출처 정책(Same-Origin Policy)**이라고 하는데, 동일 출처 정책에 의해 자바스크립트로 로드된 리소스가 다른 출처(서버)에 API 요청을 할 경우 브라우저가 이를 막습니다.여기서 다른 출처란 다음 세 가지 중 하나라도 다를 경우를 의미합니다:도메인 (예: example.com vs. api.example.com)포트 (예: http://localhost:3000 vs. http://localhost:8080)프로토콜 (예: http vs. http..