JPA 자세히 알아보기
·
Spring
프로젝트를 진행하면서 JPA에 대한 강연을 할 일이 생겼다.오우 이런 날이 언젠가 올 줄은 알았지만, 그게 다음 주일 줄이야. 사실 Java 기반의 서버를 개발하고 운영하면서 JPA는 매주 중요한 요소라고 생각한다. 그리고 나의 교육/학습 철학 은 정확한 Bias 이기 때문에, 먼저 이를 최대한 정리해보고자 한다. 기술을 배울 때 가장 중요하게 생각하는 것은 왜? 이다. 왜 이 기술이 탄생했고 어떤 문제점이 있었는가?이다.왜 JPA를 사용하는가?객체지향 프로그래밍과 관계형 DB의 간극 해소Java는 객체 지향 언어이고, 데이터는 클래스와 객체로 표현되지만, 관계형 데이터베이스는 테이블, 로우, 칼럼 중심의 정형화된 데이터 모델을 사용한다.애초에 사고방식(의도)과 구조가 다른 모델이다. 예를 들어 상속 ..
서블릿과 스레드
·
Spring
하루한조각 프로젝트를 진행하며 멀티 스레딩에 관해 고민하던 중 서블릿과 톰캣의 명확한 차이를 알고, 스레드 할당에 대해 고민하고 싶어졌다.서블릿과 톰캣은 웹 애플리케이션 개발에서 밀접한 관련을 갖지만, 같은 개념이 아니다.서블릿서블릿(servlet)는 자바 기반의 웹 애플리케이션으로서 클라이언트의 요청을 동적으로 생성하여 응답하는 서버 프로그램이다. 웹 서버에서 받은 http request를 받아 처리하고 response를 생성하여 웹 서버로 반환한다. 서블릿은 동작하는데 다음과 같은 흐름을 갖는다.클라이언트 요청서블릿 컨테이너 처리서블릿 매핑 확인서블릿 로딩 및 초기화요청 처리응답 생성서블릿 종료servlet의 특징은 다음과 같다.servlet은 최초 로딩 시점에 servelt container안에 s..
Object <=>Json
·
Spring
들어가기에 앞서옛날에 군인 시절에 spring boot에 대해서 짤막히 배운 후 혼자 몰래 진행한 프로젝트가 있다.코인 자동 거래 플랫폼이였는데, upbit의 정보를 받아오기 위해 ObjectMapper를 사용한 경험이 있다.⇒ (물론 조금만 사용하고 다른 라이브러리로 변경했다.)HttpMessageConverter에 대해서 설명하신다.사실 Json ↔ Objecet의 관계에 있어서는 비슷한 것 같은데 뭐가 다른지 알아보았다.HttpMessageConverterFE와 BE가 Rest api를 이용하여 통신하다고 했을때 가장 많이 사용하는 방식은 http body에다가 Json을 넣어 통신하는 방법이다.예시) Spring Mvc의  @ResponseBody annotation을 통해서 간단히 객체를 jso..
[Spring] 영속성컨텍스트 flush() 알아보기
·
Spring
flush()에 대해서flush() 는 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영한다.flush()가 실행되면 일어나는 일들변경 감지가 동적하여 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷과 비교하여 수정된 엔티티를 찾는다.수정 엔티티는 수정 쿼리를 만들어서 쓰기 지연 SQL 저장소 (Actionqueue)에 넣는다쓰기 지연 sql 저장소의 쿼리를 db로 전송한다.영속성 컨텍스트를 flush하는 방법em.flush()를 직접 호출entitiy manager의 flush()를 직접 호출한다. 거의 사용되지 않는다.JPQL쿼리 실행 시 flush 자동 호출em.persist(memberA);em.persist(memberB);em.persist(memberC);query = em.createQuery..
[Spring] @Bean, @Component 알아보기
·
Spring
Spring 스터디를 하다가 질문이 나왔다.왜 @Component Annotation을 사용할까? @Bean도 있는데 말이다.귀찮아서? 라는 답변이 나왔다.말장난인줄 알았지만 “왠지 그럴수도 있겠다”는 생각이 들었다.제대로 답변과 설명을 못했다.그래서 오늘은 @Bean과 @Component에 대해 알아보자 한다.1. Bean이란?Bean은 Spring Container에서 관리하는 재사용 가능한 소프트웨어 컴포넌트이다.POJO로서 Spring을 구성하는 핵심 개체이다.⇒ Spring은 bean을 싱글톤 객체로 생성하여 관리한다.2. @BeanBean으로 등록하기 위한 방법은 여러가지가 있다.옛날에는 xml파일(config.xml)을 만들어서 bean의 등록 정보 및 의존 정보를 spring에 제공했다.요..