01. 플러시의 개념 플러시란? 영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는 것이다. 플러시라는 용어 때문에 혼동이 올 수 있는데, 영속성 컨텍스트를 비우는 것이 절대 아니다. 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화 하는 것이다. 트랜잭션이라는 작업 단위를 기준으로, 커밋 직전에만 동기화를 하면 된다. 플러시가 발생한다는 것은 무엇일까? 변경을 감지하는 것이다. 수정된 엔티티 쓰기 지연 SQL 저장소에 등록하는 것이다. 쓰기 지연 SQL 저장소의 쿼리문(등록, 수정, 삭제)을 데이터베이스에 전송하는 것이다. 02. 영속성 컨텍스트를 플러시하는 방법 플러시하는 방법 em.flush()를 직접 호출한다. (수동) 트랜잭션 커밋 시 플러시가 자동 호출된다. JPQL 쿼리를 실행하면 플러시가 ..
이 글은 https://spring.io/guides/gs/rest-service/ 를 따라하며 스프링으로 RESTful 웹 서비스를 만드는 과정을 보여줄 것이다. 01. 우리가 만들 것은? http://localhost:8080/greeting 에서 HTTP GET 요청을 받는 서비스를 만들 것이다. 이 요청에 대해 JSON 형식으로 다음과 같은 응답을 반환할 것이다. { "id" : 1, "content" : "Hello, World!" } 아래와 같이 쿼리 스트링에 있는 선택적 파라미터인 name으로 커스터마이징 할 수 있다. http://localhost:8080/greeting?name=User name 의 값은 기본값인 World를 오버라이딩하고, 아래와 같이 응답에 반영된다. { "id" :..
01. 영속성 컨텍스트의 개념 JPA에서 가장 중요한 것은 객체와 관계형 데이터베이스의 매핑하기, 그리고 영속성 컨텍스트라고 할 수 있다. EntityManagerFactory와 EntityManager의 동작 사용자로부터 요청이 들어오면 웹 어플리케이션에서, EntityManagerFactory가 EntityManager를 생성하고, EntityManager는 커넥션 풀에 있는 Connection 객체를 사용하여 DB에 접근한다. 영속성 컨텍스트란? JPA를 이해하는데 가장 중요한 용어 중 하나로,엔티티를 영구 저장하는 환경이라는 뜻이다. 논리적인 개념으로 눈에 보이지 않는다. EntityManager.persist(entity); 처럼, EntityMananger를 통해 영속성 컨텍스트에 접근이 가능..
01. JPA 구동 방식 Persistence로 META-INF/persistence.xml를 읽어 설정 정보를 조회한다. EntityManagerFactory 라는 클래스를 생성한다. 필요할 때 마다 EntityManager 를 생성한다. 02. 객체와 테이블을 생성하고 매핑하기 Annotation @Entity 는 JPA가 관리할 객체임을 명시한다. @Id 는 데이터베이스의 Primary Key와 매핑할 때 사용한다. Member 클래스 작성하기 @Entity @Getter @Setter public class Member { @Id private Long id; private String name; } @Getter와 @Setter를 사용하면 다음과 같이 길게 작성해야 하는 코드를 자동으로 만들어준..
01. H2 데이터베이스 설치 & 실행 H2 소개 최고의 실습용 DB로, 가볍고, 웹용 쿼리툴을 제공한다. MySQL, Oracle 데이터베이스 시뮬레이션, 시퀀스, AUTO INCREMENT 등의 기능을 제공한다. H2 설치 - https://www.h2database.com/html/main.html 에서 [Download] 탭 - [Archive Downloads] 에서 원하는 버전으로 다운 받으면 된다. (나는 2.1.214 버전을 다운 받았다.) 02. Maven Maven 소개 https://maven.apache.org/ (공식 홈페이지) 소프트웨어 프로젝트 관리 및 이해 도구로, 프로젝트 개체 모델(POM)의 개념을 기반으로 Maven은 중앙 정보에서 프로젝트의 빌드, 보고 및 문서를 관리..
01. 스프링 부트란? Spring Boot를 사용하면 "그저 실행하기만 하면 되는" 독립적 실행형 프로덕셩 등급의 Spring 기반 애플리케이션을 쉽게 생성할 수 있다. Spring Boot 애플리케이션에는 최소한의 Spring 구성만 필요하다. Spring Boot는 java -jar 로 실행하는 Java 애플리케이션을 만들 수 있다. 02. 스프링 부트의 주요 목표 Spring 개발에 대해 빠르고, 광범위하게 적용할 수 있는 환경을 만든다. 기본값 설정이 있지만 설정을 바꿀 수 있다. 대규모 프로젝트에 보안, 모니터링과 같은 공통적인 비기능을 제공한다. XML 구성 요구사항이 전혀 없다. 03. 스프링 부트의 특징 애플리케이션 개발에 필수적인 요소들만 모아놓았다. 간단한 설정으로 개발 및 커스텀이 ..
01. 디자인 패턴이란? 디자인 패턴 자주 사용하는 설계 패턴을 정형화하여 유형별로 최적의 방법으로 개발할 수 있도록 정해둔 설계이다. 알고리즘과 유사하지만 명확하게 정답이 있는 형태는 아니다. 프로젝트 상황에 맞추어 적용하면 된다. Gof 디자인 패턴 GoF(Gang of Four)의 디자인 패턴이라고 한다. 객체지향 개념에 따른 설계 중 재사용 시 유용한 설계를 디자인 패턴으로 정리한 것이다. Gof의 디자인 패턴은 총 23개이다. 디자인 패턴의 장점 개발자 간의 원활한 소통이 가능하다. 소프트웨어 구조 파악에 용이하다. 재사용을 통한 개발 시간 단축이 가능하다. 설계 변경 요청에 대한 유연한 대처가 가능하다. 디자인 패턴의 단점 초기 투자 비용이 부담될 수 있다. 02. 생성 패턴, 구조 패턴, 행..
01. 객체지향의 등장 절차 지향 언어 간단한 로직을 순차적으로 처리하여 결과를 얻는다. 프로그램 복잡도의 증가로 인한 비효율이 발생한다. 절차 지향 언어의 예시로는 C언어가 있다. 이후에 효과적인 개발 방식으로 객체 지향 개발을 시작했다. 객체 지향 언어 Object(객체)는 사물이다. Method는 행위이다. Variable(변수)는 속성이다. 객체 지향 언어의 예시로는 Java가 있다. 어떠한 운영체제에서도 자바 가상 머신만 있으면 독립적으로 실행될 수 있도록 설계되었다. 여러 플랫폼에서 호환성을 제공한다. 객체의 3가지 요소 상태 유지 (by Variable) 기능 제공 (by Method) 고유 식별자 제공 물리 객체와 개념 객체 물리 객체 실제로 사물이 존재한다. 이를 클래스로 정의한 객체를 ..