백엔드 개발하며 작성한
@Component에 대해 (@Bean)
Spring 으로 개발을 할 때 @Bean과 @Component의 차이를 명확하게 알고 사용한 게 아니었다는 걸 알고정리를 하고자 오랜만에 글을 작성합니다.먼저 @Bean과 @Component의 차이를 다루고,@Component에 대한 Spring 공식문서를 읽으며 정리하고 마무리하겠습니다.두 애노테이션 모두 Spring Context에 해당 객체를 빈(Bean)으로 등록하기 위해 사용한다는 점은 공통점입니다.차이점은 1. 용도와 2. 제한이 있습니다.1. 용도개발자가 통제하지 못하는 외부 라이브러리를 가지고 와서 빈으로 등록하려고 할 때, @Bean을 사용할 수 있습니다.반면, 개발자가 직접 구현한 클래스를 빈으로 등록하려 할 때, @Component를 사용할 수 있습니다.결국,둘다 스프링의 의존성 주..
@RequestBody 붙였어??
준비 해당 포스팅의 제목이 이렇게 붙여진 이유는... 내가 그런 실수를 저질렀기 때문이다. ㅠㅠ 그래서 나의 바보짓을 공개적인 곳에 올리면서 제대로 기억할 겸 포스팅한다. @RequestBody 애노테이션은 한마디로 HttpRequestBody를 Java객체로 매핑해주는 애노테이션이다. 덕분에 API 요청으로 전송받은 JSON 데이터를 (우리가 따로 조작하지 않고도) 객체로 변환해서 받을 수 있게 된다. '@RequestBody'가 뭐지? 애노테이션 이름이 말해주는 그대로, 요청(Request)의 Body를 연결해주는 역할을 한다. 웹 요청의 body에는 json 형태로 데이터가 전달되는데, 컨트롤러 메서드의 매개변수 앞에 애노테이션 @RequestBody를 붙이면 해당 객체가 웹 요청의 body와 매핑..
[ORM] 상속 관계 매핑
객체 지향 언어에서는 '상속' 관계가 존재합니다. 그러나 관계형 데이터베이스에는 상속이라는 개념이 없는데요, 그래도 가장 유사한 관계가 '슈퍼타입 서브타입 관계'라는 모델링 기법입니다. 그리고 이 '슈퍼타입 서브 타입 관계'라는 논리적 모델을 실제 물리 모델(테이블)로 구현할 때는 3가지 방법이 있습니다. 1. 각각의 테이블로 변환시키고 조인하는 방법 JPA에서는 '조인 전략' (Joined)이라고 부릅니다. 구체적으로 엔티티 각각을 테이블로 모두 만들고 부모 테이블의 기본키를 받아서 이를 기본키이자 외래키로 사용합니다. 그래서 조회할 때 조인을 자주 사용합니다. 주의할 점은 객체는 타입으로 하위 객체들을 구분할 수 있지만 테이블은 타입의 개념이 없으므로 따로 구분하는 컬럼을 부모 테이블에 추가해야합니다..
[ORM] 연관관계의 주인을 정해야하는 이유
추후 업데이트될 수 있는 포스팅입니다. Spring Boot에서 간단한 도메인을 만들다가 작성하는 포스팅입니다. 현재 데이터베이스로 관계형 데이터베이스를 쓰기 때문에 이를 객체와 매핑시키기 위해 JAVA 진영의 ORM 기술 표준인 JPA를 사용합니다. 객체가 연관관계를 다루는 방법과 테이블이 연관관계를 다루는 방법에는 차이가 있습니다. 객체는 객체의 주소를 참조해서 연관관계를 맺습니다. 그래서 도메인 A에서 도메인 B의 객체 주소를 참조하면, 도메인 A를 조회 시 B를 함께 조회할 수 있지만, B에서는 A의 존재를 모릅니다. 이는 다시 말해 단방향의 연관관계를 맺는 것이라 말할 수 있습니다. 각 필드를 참조하고 JPA가 연관관계를 맺은 것을 알 수 있도록 애너테이션을 붙여야합니다. 일대다 관계의 경우, ..
Web Server와 Web Application Server(WAS)
여기서 말하는 "Server"는 소프트웨어적인 관점에서 이야기합니다. 서론Web Server와 Web Application Server는 헷갈리기 쉬운 개념인 것 같습니다. 이번 글에서는 각각의 역할과 왜 웹 서비스 운영 시 함께 사용하는지에 대해 이야기하겠습니다. 알아가기 위한 과정 중 작성하는 것이므로 잘못된 부분은 일러주시면 감사하겠습니다. 목차Web Server와 WAS 간단한 설명과 차이점Web Server의 역할Web Application Server의 역할Apache와 NginX (WS)정리 Web Server와 WAS(Web Application Server)우선, Web Server는 무엇일까요? Web을 위한 Server입니다.Server는 소프트웨어적 개념에서 봤을 때 리소스를 제공..
JVM이 무엇인가?
이번 포스팅은 JVM이 무엇인지 어떻게 등장하게 되었는지 얘기해볼 것입니다. JAVA의 큰 장점 중 "운영체제에 독립적"이라는 점이 있습니다. 이것은 JVM의 역할로 인해 지니게된 장점입니다. JVM(Java Virtual Machine, 자바 가상 머신)은 무엇일까요? JVM이 무엇인지 얘기하기 전에 왜 나오게 됐는지 생각해보고자 합니다. 1. 기계어 현재와 달리 먼 과거로 돌아가서 "컴퓨터"와 처음 의사소통을 할 수 있었던 시절에는 지금처럼 소스코드로 컴퓨터에게 연산을 맡기는게 아닌, 개발자들이 직접 (컴퓨터가 알아먹을 수 있는) 0과 1을 이용해서 나름의 규칙을 통해 명령을 만들었습니다. 만약 1+3 수식 연산을 처리하도록 명령한다면, 2진법을 이용해서 01010101 00000001 0000100..