본문 바로가기

Develop/Backend 가이드

[Spring] JPA Mapping JPA Mapping JPA Mapping 은 관계형 데이터베이스에서 테이블 간의 관계를 Java 언어로 표현하는 방법입니다. 관계형 데이터베이스라는 이름에서도 알 수 있듯이, 관계를 어떻게 표현하느냐에 따라 데이터베이스 전체 구조가 결정될 정도로 중요한 기능입니다. 데이터베이스에서 사용하는 관계는 아래 3가지 입니다. 일대일 One-to-One (1:1) 관계 일대다 One-to-Many (1:N) 관계 다대다 Many-to-Many (N:M) 관계 데이터베이스에 맞춰서, JPA 에서 제공하는 관계는 아래 4가지 입니다. @OneToOne @OneToMany @ManyToOne @ManyToMany
[Spring] @NotNull, @NotEmpty, @NotBlank 차이 결론 String text 값에 따라 @Notnull / @NotEmpty / @NotBlank 결과가 어떻게 달라지는지 표로 정리했습니다. String text = null; AnnotationBoolean@NotNullfalse@NotEmptyfalse@NotBlankfalse String text = ""; AnnotationBoolean@NotNulltrue@NotEmptyfalse@NotBlankfalse String text = " "; AnnotationBoolean@NotNulltrue@NotEmptytrue@NotBlankfalse String text = "Hello, World!"; AnnotationBoolean@NotNulltrue@NotEmptytrue@NotBlanktrue @..
[Spring] Spring Security 설계 구조 들어가며... 저는 "프레임워크의 설계를 이해하고 있느냐 아니냐" 에 따라, 개발을 진행하면서 얻는 경험의 깊이가 다르다고 생각합니다. 프레임워크의 설계를 이해하고 있으면 프레임워크를 설계한 의도에 맞게 사용하고자 노력하게 되며, 이는 곧 좋은 코드를 만들려는 습관으로 이어지게 됩니다. 개발자는 레퍼런스 문서를 전부 읽고 개발을 시작하지 않습니다. 검색을 통해 여러 샘플 코드를 적용해보면서 프레임워크를 어떻게 사용해야 하는지 경험하게 됩니다. 이때 얻는 경험이 단편적인 지식으로 그치는게 아니라, 축적되는 지혜가 되기 위해서는 프레임워크 설계에 대한 이해가 필요하다 생각합니다. Spring Security (Servlet Application) Spring Security Overview는 Spring S..
[Spring] VSCode에서 DevTools & LiveReload 사용하기 1. VScode Extension 설치 Spring Boot Extension Pack 2. DevTools dependency 추가 Maven org.springframework.boot spring-boot-devtools true Gradle compileOnly "org.springframework.boot:spring-boot-devtools" 3. Chrome Extension 설치 RemoteLiveReload LiveReload 가 아니라 RemoteLiveReload 를 설치해야 제대로 작동 4. SPRING-BOOT DASHBOARD 에서 Debug 시작 5. DevTools 와 LiveReload 작동 확인 DevTools 확인 RestartedMain 이 나오면 DevTools 이..
[Spring] 빈 Bean 빈 Bean Bean 은 Spring framework 에서 앱을 구성하는 기본적인 객체입니다. 개발자는 Bean 을 정의하고 활용하고, Container 는 개발자가 정의한 Bean 을 객체로 만들어 관리하고 개발자가 필요로 할 때 제공합니다. 따라서 개발자는 Bean 을 어떻게 정의하고 사용하는지 알고 있어야만 Spring framework 를 사용할 수 있습니다. // Bean 은 Annotations 로 쉽게 정의할 수 있다. @Bean public RestTemplate restTemplate(RestTemplateBuilder builder) { return builder.build(); } Bean 은 기본 객체이기 때문에 무엇이든지 가능합니다. 다만 Bean 은 BeanDefinition ..
[Spring] 컨테이너 Container 컨테이너 Container Container 는 Spring 의 핵심입니다. Container 는 개발자를 대신하여, Bean 을 생성 / 관리 / 제거합니다. Container 가 Bean 을 관리해주기 때문에, 개발자는 모듈 간에 의존 및 결합으로 인해 발생하는 문제로부터 자유로워 졌습니다. 아래와 같이 독립적인 코드를 작성해서 Annotaion 만 남겨주면 Container 가 개발자가 원하는 상황에 코드를 실행합니다. 따라서 개발자는 메서드가 언제, 어디서 호출되어야 하는지 그리고 메서드를 호출하기 위해 필요한 매개 변수를 준비해서 전달하지 않습니다. Container 가 개발자 대신 알아서 호출합니다. @GetMapping("/greeting") public Greeting greeting(@R..