본 캠프_47일차

졸용·2025년 4월 23일

TIL

목록 보기
48/144

✅ VARCHAR() 괄호 안의 숫자 의미

VARCHAR(50)이랑 VARCHAR(255)의 차이는 저장할 수 있는 문자열의 최대 길이다.

  • VARCHAR(50) → 최대 50자까지 저장 가능

  • VARCHAR(255) → 최대 255자까지 저장 가능

둘 다 가변 길이 문자열을 저장하는 타입이라, 실제로 저장된 문자열 길이만큼의 공간만 차지한다. 예를 들어, VARCHAR(255) 컬럼에 "hello"라는 5글자 문자열을 저장하면, 5자만큼만 공간을 사용한다.

그럼 언제 50 쓰고 언제 255 쓸까?

  • VARCHAR(50)은 짧은 문자열에 적합 (예: 이름, 닉네임 등)

  • VARCHAR(255)는 좀 더 긴 텍스트가 들어올 수 있는 경우 (예: 이메일, 주소, 설명 등)

성능 차이?

  • 일반적으로 큰 차이는 없지만, 인덱싱할 때는 차이가 생길 수 있다.

  • 예를 들어 MySQL에서 VARCHAR(255)에 전체 인덱스를 걸면, 더 많은 공간을 차지하고 성능이 느려질 수 있다.

  • 그래서 인덱스를 걸 컬럼은 너무 크게 잡지 않는 게 좋다.



✅ AOP란?

AOP는 Aspect Oriented Programming의 줄임말로, 우리말로는 관점 지향 프로그래밍이라고 한다.
쉽게 말하면, 공통된 기능(로직)을 분리해서 코드 중복 없이 깔끔하게 관리할 수 있도록 도와주는 프로그래밍 기법.


왜 쓰는가?

우리가 개발하다 보면 로그 남기기, 트랜잭션 처리, 보안 검사, 예외 처리 같은 걸 여러 클래스나 메서드에서 반복해서 쓰게 된다.

그걸 각 메서드마다 다 넣으면:

  • 코드가 지저분해지고,

  • 유지보수가 힘들어진다.

그래서 이런 공통된 관심사(Aspect)를 따로 빼서 관리하는 게 AOP의 핵심.


📌 예시로 보기!

예를 들어, 서비스 메서드 실행 전/후로 로그를 남기고 싶다고 하면,

public class UserService {
    public void createUser(String name) {
        System.out.println("로그: createUser 실행 전");
        // 유저 생성 로직
        System.out.println("유저 생성 완료");
        System.out.println("로그: createUser 실행 후");
    }
}

이렇게 모든 메서드마다 로그 코드를 넣기보단…


AOP를 쓰면 이렇게 분리할 수 있다

@Aspect
public class LoggingAspect {

    @Before("execution(* com.example.service.*.*(..))")
    public void logBefore() {
        System.out.println("로그: 메서드 실행 전");
    }

    @After("execution(* com.example.service.*.*(..))")
    public void logAfter() {
        System.out.println("로그: 메서드 실행 후");
    }
}

이렇게 공통 로직만 따로 관리하면 :

  • 핵심 비즈니스 로직은 깔끔하게 유지되고,

  • 공통 관심사도 한 곳에서 관리 가능하다.


✅ 정리

개념설명
관심사(Concern)비즈니스 로직 (예: 회원가입, 주문 등)
공통 관심사(Aspect)여러 군데서 쓰이는 공통 기능 (예: 로그, 보안, 트랜잭션)
AOP공통 관심사를 분리해서 코드 중복을 줄이고, 깔끔하게 관리하는 방법
profile
꾸준한 공부만이 답이다

0개의 댓글