본문 바로가기

Spring

(22)
자바 ORM 표준 JPA 프로그래밍 #2(영속성) 들어가며 JPA에서 제공하는 기능은 크게 엔티티와 테이블을 매핑하는 설계 부분과 매핑한 엔티티를 실제 사용하는 부분으로 나눌 수 있다. 엔티티 매니저는 엔티티를 저장하고, 수정, 삭제, 조회하는 등 엔티티와 관련된 모든 일을 처리한다. 이름 그대로 엔티티의 관리자의 역할을 한다. 개발자의 역할에서 보면 엔티티를 저장하는 가상의 데이터베이스로 보면 될 것 같다. 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저 팩토리는 이름 그대로 엔티티 매니저를 만드는 공장인데, 이 공장을 만드는 비용은 상당히 크다. 따라서 한 개만 만들어 애플리케이션 전체에서 공유하도록 설계되어 있다. 일반적으로 애플리케이션은 엔티티 매니저 팩토리를 한개만 생성한다. 엔티티 매니저 팩토리의 특징 위의 설명을 바탕으로 설계된 에티티 ..
자바 ORM 표준 JPA 프로그래밍 #1(JPA란) JPA의 기초이론과 핵심원리, 성능 최적화 까지 거의 JPA의 전부에 대해 자세히 알려주는 이 책을 읽으며 내용을 잊지 않기 위해 각 챕터를 정리하고자 한다. JPA의 등장 배경 기존의 JDBC API를 사용했을때의 반복적인 SQL(CRUD) 작성(SQL에 의존하여 개발) 객체 모델이 데이터 모델에 의존(데이터 모델을 설계 후 이에 맞추어 객체 모델을 설계 -> 객체 모델의 장점 포기) 위의 문제로 인해 객체와 데이터베이스 간의 다리 역할을 해주는 ORM 프레임워크의 등장 JPA는 자바 진영의 ORM 기술의 표준 * ORM(Object Relational Mapping): 객체와 관계형 데이터 베이스를 연결해주는 것을 의미 * JPA(Java Persistence API): JPA는 자바 ORM 기술에 ..
Spring vs Spring boot 등장 배경 기존 Spring framework는 다양한 프레임워크와 기술을 지원함과 동시에 개발자가 처리해야 하는 설정도 많아지고 복잡해졌다. 따라서 Spring을 처음 접하는 개발자 입장에서는 이러한 복잡한 설정에 부담을 느낄 수 밖에 없어 개발자가 보다 더 개발에 집중할 수 있도록 Spring boot가 새롭게 나왔다. 장점 1) 라이브러리 관리 자동화 - Maven의 기능과 ‘starter’ 컴포넌트들을 이용해 라이브러리 의존성을 간단히 처리 2) 설정 자동화 - 프로젝트에 추가된 라이브러리를 기반으로, 실행에 필요한 환경을 자동 설정 3) 라이브러리 버전 자동 관리 - Spring 라이브러리 뿐만 아니라 Third-party 라이브러리까지 호환되는 버전으로 자동 다운로드 4) 테스트 환경 - JU..
Maven & Gradle 빌드란? 서버에 기능을 추가 하려면 개발자가 로컬 PC에서 개발을 하고 테스트까지 진행한 뒤에 문제가 없을 경우 사용자가 사용할 수 있도록 수정된 코드를 실서버에 반영해야 한다. 서버에 반영을 하는 것을 "배포"라고 하고 배포(Deploy) 하기 위한 과정을 "빌드"라고 한다. 빌드 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 그 결과를 말한다. 예를 들어 Java프로젝트를 진행한다면 개발자가 작성한 A.java와 여러가지 정적 파일등에 해당하는 resource가 존재한다. 빌드를 한다면 소스코드를 컴파일해서 .class로 변환하고 resource를 .class에서 참조할 수 있는 적절한 위치로 옮기고 META-INF와 MANIFEST.MF 들을 하나로 압축하는 과정을 의..
BeanFactory & ApplicationContext 스프링 컨테이너? 스프링 컨테이너란 스프링에서 자바 객체들을 관리하는 공간을 말한다. 자바 객체를 스프링에서는 Bean이라고 하는데, 스프링 컨테이너는 이 Bean의 생성부터 소멸까지를 관리해주는 곳이라고 할 수 있다. 이때 스프링 컨테이너는 ApplicationContext, BeanFactory의 두가지의 종류가 있다. 흔히 ApplicationContext로 알려져 있는데, 이 인터페이스는 BeanFactory를 상속받고 있다. BeanFactory 스프링 컨테이너의 최상위 인터페이스다 스프링 빈을 관리하고 조회하는 역할을 담당한다. getBean()을 제공한다. 지금까지 우리가 사용했던 대부분의 기능은 BeanFactory가 제공하는 기능이다. ApplicationContext Applicatio..
Spring Bean life cycle 빈 생명주기 스프링 빈은 다음과 같은 생명주기를 갖는다. 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸 전 콜백 -> 스프링 컨테이너 종료 여기서는 콜백에 대해서 알아보도록 하자. 초기화 콜백: 빈이 생성되고, 빈의 의존관계 주입이 완료된 이후에 호출 소멸 전 콜백: 빈이 소멸되기 직전에 호출 콜백이란? 1. 다른 함수의 인자로써 이용되는 함수 2. 어떤 이벤트에 의해 호출되어지는 함수 예를들어 케이블이 연결될 때 "케이블이 연결되었습니다"라는 메시지가 출력되는 프로그램이 있다고 하자. function onCableConnected(){ print("케이블이 연결되었습니다"); }; //케이블이 연결될 때 마다 전달된 onCableConnected가..