본문 바로가기

분류 전체보기138

[MySQL] CHAR, VARCHAR, TEXT CHAR저장되는 문자의 길이에 관계없이 최대 설정된 크기만큼 항상 공간을 할당최대 255글자까지 저장보통 저장된 값의 길이를 별도로 관리하지 않지만, CharSet이 가변 길이 문자셋이라면 관리VARCHAR저장되는 문자의 길이만큼 저장 공간을 할당최대 65,535 바이트저장된 문자열 값의 실제 바이트 수를 관리함255 이하는 1byte, 그 이상의 경우 2byte 사용해서 관리하나의 VARCHAR 컬럼이 너무 큰 길이를 사용하면, 다른 컬럼들이 사용할 수 있는 최대 공간의 크기가 영향을 받음(MySQL 서버의 레코드 크기 제한은 65,535 바이트이므로)CHAR(5), VARCHAR(5)에 각각 문자열 ABC를 저장하는 경우 ( ()들어가는 숫자는 바이트가 아닌 글자 수임 )| A | B | C |   .. 2024. 12. 28.
[Database] 트랜잭션의 개념, DB 락 트랜잭션(Transaction)데이터베이스의 현재 상태를 하나의 일관된 상태에서 또 다른 일관된 상태로 변환시키는 논리적인 연산의 집합으로 일 처리 단위를 뜻한다.자동 커밋 → 수동 커밋으로 전환 하는 것을 트랜잭션 시작한다고 표현하기도 함.트랜잭션의 특성(ACID)원자성(Atomicity) → 트랜잭션의 연산은 모두 실행되거나, 모두 실행되지 않아야 함.일관성(Consistency) → 트랜잭션 실행 전과 후 모두 오류가 없어야 함.고립성, 격리성(Isolation) → 트랜잭션 실행 중에 다른 트랜잭션에 영향을 받지 않아야 함.지속성(Durability) → 트랜잭션의 결과는 항상 보존되어야 함. 시스템이 고장나더라도 손실되지 않고 영구적으로 반영.트랜잭션의 격리 수준 4단계트랜잭션의 고립성을 보장하.. 2024. 12. 28.
[Database] 정규화 정규화정규화란 하나의 릴레이션에 하나의 의미만 존재할 수 있도록 릴레이션을 분해해나가는 과정으로 중복성을 최소화하고 정보의 일관성을 보장하기 위한 개념이다.정규화의 필요성자료의 저장 공간을 최소화한다.자료의 불일치를 최소화시킨다.자료의 삽입, 삭제, 갱신 시 이상 현상을 방지한다.삽입 이상 : 튜플을 삽입했을 때 삽입 의도와 연관 없는 관계까지 삽입되는 현상삭제 이상 : 임의의 튜플을 삭제하였을 때 관련된 관계성까지 모두 삭제되는 현상갱신 이상 : 임의의 데이터를 수정하였을 때 임의만 수정되어 관계된 데이터가 일관성이 없게 되는 현상. 정규화의 과정제1정규형(1NF) : 하나의 튜플에서 여러 개의 값이 들어와 원자성을 가지지 못하는 경우에 도메인 값을 분해하면 1정규형이라고 한다.학번성명수강과목10홍길동.. 2024. 12. 28.
[Database] Key의 종류, ER 다이어그램 외래키키(key)키는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 속성을 뜻한다. 외래키란?외래키(foreign key)는 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키를 의미한다.이러한 외래키는 릴레이션 간 참조 관계를 표현하고, 데이터 참조 무결성을 위해 사용한다.참조 무결성 : 릴레이션 간의 참조 관계를 정의하는 제약조건 다음 2가지 조건 중 하나를 성립해야 한다.외래키는 참조할 수 없는 키를 가질 수 없다. 즉 외래키는 부모 릴레이션의 어떤 기본키 값과 같다.외래키가 참조하고 있는 릴레이션의 기본키가 없을 경우 외래키 값은 NULL이 될 수 있다.2번의 예시 - 사원 : 부서 (N:1) 관계에서 신입.. 2024. 12. 28.
[Spring] 외부 설정, @Profile 외부 설정하나의 애플리케이션에서 여러 다른 환경을 사용해야 할 때가 있다. (개발용 DB, 운영용 DB…)즉 환경에 따라 설정값이 달라지게 되는데, 각 환경에 맞게 설정값을 포함하고 jar로 빌드하여 배포하게 되면 빌드를 여러 번 진행해야 하고, 환경마다 빌드의 결과물이 달라 유연성이 떨어진다는 문제가 있다.따라서 빌드를 한 번만 하고 실행 시점에 각 환경에 맞는 외부 설정 값을 주입한다.이러한 외부 설정 방법은 4가지 종류가 존재한다.OS 환경 변수 주입OS에서 지원하는 외부 설정 방법으로, OS 환경 변수란 해당 OS를 사용하는 모든 프로세스에서 읽을 수 있는 설정 값으로 사용 범위가 가장 넓다.터미널에서 맥의 경우 printenv 명령어를 사용하여 확인할 수 있다.애플리케이션에서는 아래와 같은 방법.. 2024. 12. 28.
[Spring] Auto Configuration 스프링 부트를 사용하면 DataSource, DriverManager 등 빈 등록을 하지 않아도 사용이 가능하다.이는 스프링 부트가 자동 구성 (Auto Configuration)이라는 기능을 지원하기 때문인데, 이는 자주 사용하는 빈들을 자동으로 등록해준다.따라서 반복적이고 복잡한 빈 등록, 설정을 최소화시켜 준다.그렇다면 Auto Configuration이 어떻게 동작하는지 알아보도록 하겠다.Auto Configuration 동작 방식@SpringBootApplicationpublic class BootApplication { public static void main(String[] args) { SpringApplication.run(BootApplication.class, args); }}먼저.. 2024. 12. 28.
[Spring-boot] JAR, WAR JAR(Java Archive), WAR(Web Application Archive)는 Java 애플리케이션을 패키징하는 두 가지 형식이다. 그렇다면 두 형식은 어떤 차이가 있을까?WAR웹 애플리케이션을 배포하는 데 사용되는 파일로 JAR는 JVM에서 실행된다면 WAR 파일은 WAS에서 실행된다.WAR 파일은 정적 리소스, 클래스 파일을 모두 함께 포함하므로 JAR보다 복잡한 구조를 가진다.WAR 파일의 구조는 다음과 같다.WEB-INF/: 웹 애플리케이션의 구성 파일과 비공개 리소스가 포함됩니다.classes : 실행 클래스 모음web.xml: 웹 애플리케이션의 배치 설명서.lib/: 애플리케이션에서 사용하는 JAR 파일.JSP, HTML, CSS 파일과 같은 리소스즉 WEB-INF 폴더 하위는 자바 .. 2024. 12. 28.
[Spring AOP] @Aspect AOP 스프링은 @Aspect 애노테이션으로 매우 편리하게 어드바이저를 생성할 수 있도록 지원한다.@Slf4j@Aspectpublic class LogTraceAspect { private final LogTrace logTrace; public LogTraceAspect(LogTrace logTrace) { this.logTrace = logTrace; } @Around("execution(* hello.proxy.app..*(..))") public Object execute(ProceedingJoinPoint joinPoint) throws Throwable { TraceStatus status = null; try { S.. 2024. 12. 28.
[Spring AOP] 스프링 AOP와 용어 AOP 정의애플리케이션 로직은 크게 2가지로 나눌 수 있다.핵심 기능해당 객체가 제공하는 고유 기능부가 기능핵심 기능을 보조하기 위해 제공되는 기능으로 단독으로 사용되지 않고 핵심 기능과 사용여기서 부가 기능은 보통 하나의 클래스가 아닌 여러 곳에서 공통적으로 사용된다.이렇게 애플리케이션 전반적인 부분에 추가되는 부가 기능을 횡단 관심사라고 한다.하지만 일반적인 OOP 방식으로는 애플리케이션 전반에 사용되는 부가 기능 로직을 변경 지점이 하나가 되도록 처리하는데 어려움이 있다.따라서 부가 기능과 해당 기능을 어디에 적용할지 선택하는 기능을 합해서 하나의 모듈로 만들었는데 이를 애스펙트(aspect)라고 한다.Aspect는 이름 그대로 애플리케이션을 바라보는 관점을 하나하나의 기능에서 횡단 관심사(cros.. 2024. 12. 28.