본문 바로가기

728x90
반응형

Spring

(24)
[Spring Boot] Spring Boot의 dependency Spring Boot는 Spring에 비해 dependency 를 더 편하게 관리할 수 있도록 기능을 제공하고 있습니다. 이번 글에서는 이 dependency와 관련된 개념들을 알아보겠습니다. 프로젝트 빌드 도구 : Maven, Gradle 프로그램이 동작하기 위해서는 소스 코드를 실행 가능한 상태로 만들 수 있도록 하는 변환 과정 및 결과물이 필요한데, 이를 빌드라고 합니다. 이 때 결과물은 우리가 흔히 아는 .war이나 .jar의 형태 등이 있습니다. 빌드를 위해서는 라이브러리 다운, 의존성 확인, 테스트, 컴파일 등의 작업이 필요한데 이러한 과정을 개발자가 수동으로 하기에는 번거롭기 때문에 빌드 도구를 이용하여 자동적으로 이러한 작업들을 해줍니다. Spring Boot가 공식적으로 지원하는 프로젝..
[JPA] 영속성 컨텍스트(2) - 영속성 컨텍스트의 엔티티 관리 인프런에서 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 참고하여 작성한 글입니다. JPA에서의 1차 캐시 JPA는 어플리케이션과 DB 사이의 중간 역할을 하기 때문에 캐싱 기능을 사용할 수 있습니다. 1차 캐시는 영속성 컨텍스트 안에 있으며, 영속 상태의 엔티티는 1차 캐시에 들어감으로써 캐싱 기능을 사용할 수 있게 됩니다. 1차 캐시는 여러개의 엔티티가 들어갈 수 있기 때문에, 각 엔티티를 구별할 수 있는 @Id와 Entity가 함께 들어갑니다. 즉 엔티티의 PK라 할 수 있는 Id로 1차 캐시 안에서 엔티티들을 구분하게 됩니다. 1차 캐시 @Id Entity 1 PK가 1인 엔티티 객체 2 PK가 2인 엔티티 객체 ... ... 먼저 Entity Manager가 생성한 entity를 p..
[JPA] 영속성 컨텍스트(1) - 기본과 엔티티의 생명주기 및 장점 인프런에서 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 참고하여 작성한 글입니다. 영속성 컨텍스트란? JPA는 데이터와 연관된 객체들을 Entity로 분류하여 관리합니다. 따라서 데이터를 읽거나, 조회하거나 쓰는 내용들이 Entity를 통해서 이루어지게 됩니다. 이러한 엔티티들을 JPA는 어떠한 곳에 저장하는데, 이 영역을 영속성 컨텍스트라고 합니다. 영속성 컨텍스트는 엔티티 매니저를 통해서 접근할 수 있는데, 이는 눈에 보이지 않는 논리적인 개념입니다. 더보기 엔티티 매니저란? 웹 어플리케이션은 어떤 요청이 들어오게 되면, 엔티티 매니저 팩토리에서 엔티티 매니저를 생성하여 할당해줍니다. 따라서 각 요청에 따라 해당 요청을 담당해주는 엔티티 매니저가 있게 됩니다. 이 엔티티 매니저는 DB에..
[Spring Boot] Logback과 Spring Boot에서 Logback 사용하기 이번 글에서는 Logback의 내용과 Spring Boot에서의 Logback 적용법 및 설정 방법에 대해서 알아보도록 하겠습니다. 더보기 아래의 글들을 참고하여 포스팅 된 글입니다. https://www.baeldung.com/logback LogBack? logback은 log4j 기반의 logging framework입니다. Spring에서 log를 남기기 위해서 slf4j를 흔하게 사용하곤 하는데, 이 slf4j는 로깅에 대한 추상 레이어를 제공하는 인터페이스 모음입니다. 따라서 slf4j만으로는 로그를 제대로 출력해낼 수 없고, 이를 구현하기 위한 native 구현체가 필요한데 이것이 바로 LogBack이라는 로깅 라이브러리입니다. Spring Boot에서 slf4j와 LogBack 사용할 준비..
[Spring Boot] ORM과 JDBC, JPA 이번 시간에는 ORM와 JDBC, JPA에 대해서 배워보고자 합니다. 위의 ORM, JDBC, JPA는 모두 데이터베이스와 관련된 내용들인데요, 하나씩 차근차근 다뤄보겠습니다. JDBC JDBC는 JAVA에서 DB 접근을 하기 위해 java에서 제공하는 API입니다. Persistence Layer를 구현하기 위해서 사용되는데, 이 때 Persistence Layer란 프로그램의 아키텍쳐에서 데이터를 생성한 프로그램이 종료되더라도 사라지지 않도록 하는 영속성을 데이터에 부여하기 위해 존재하는 Layer입니다. 모든 Java Data Access 기술들은 JDBC를 기본적으로 사용하고 있고, 현재 사용되는 Java Data Access 기술들은 순수하게 JDBC만 사용했을 때의 단점들을 보완한 형식입니다...
[Spring Boot] 스프링 부트와 build.gradle 본 글은 인프런의 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의 내용을 일부 참고하고 있습니다. Spring과 Spring Boot 이전에 스프링과 관련된 강의를 들으면서 필요한 dependency들을 넣는 작업을 한 적이 있습니다. 이 때 사용한 것이 메이븐이었는데, 이를 통해서 필요한 라이브러리를 가져오고, pom.xml에 가져올 라이브러리의 groudID, version 등을 넣어주었습니다. 그런데 가끔씩 이런 라이브러리의 버전 관련 문제로 에러가 생기기도 하고, 특히나 라이브러리가 많아지면 점점 pom.xml의 길이가 늘어나는 상황이 발생합니다. 그러면 나중에 dependency 관리를 해주기도, 또 보기도 힘들어지겠죠. 이러한 문제를 해결하기 위해서 도..
[Spring Framework] AOP의 구현방식 '뉴렉처' 님의 채널(www.youtube.com/user/newlec1)을 바탕으로 제작한 블로그 글입니다:) 이번 시간에는 AOP를 코드로 구현하기 전에, 구현 방식에 대해서 이해를 해보겠습니다. 아래는 저번 시간에 예시로 든 AOP 방식입니다. 현재는 이러한 방식을 사용하지 않는다고 말했는데, 그 정확한 이유를 코드로 직접 확인하면서 다루어봅시다. @Component public class Animal { @Value("_TECH") private String name; private int age; private int adopted_age; ... public int getLivingTerm() { SimpleDateFormat dayTime = new SimpleDateFormat("yyyy-..
[Spring Framework] AOP란 무엇인가? '뉴렉처' 님의 채널(www.youtube.com/user/newlec1)을 바탕으로 제작한 블로그 글입니다:) 이번 카테고리에서는 Spring의 AOP에 대해서 알아보고자 합니다. AOP는 Spring이 제공하는 기능이라기보다는, 하나의 방법론이지만 Spring이 이를 더 쉽게 사용할 수 있도록 도와주는 역할을 합니다. AOP를 이해하기 전에, 먼저 우리가 알고 있는 OOP와의 관계에 대해서 알아야 합니다. OOP (Object-oriented programming)은 사용자가 주 업무 로직에 어떤 기능을 원하느냐? 를 중점으로 프로그래밍되는 방식입니다. 즉, 사용자가 물건을 구입하고, 계좌로 돈을 송금하고, 물건의 가격과 상세 정보를 보는 등 이 프로그램을 사용하는 "사용자의 입장"에서 구성되는 방식..
[Spring Framework] XML을 Java Configuration으로 '뉴렉처' 님의 채널(www.youtube.com/user/newlec1)을 바탕으로 제작한 블로그 글입니다:) 지난 시간까지는 XML의 대부분을 어노테이션으로 변경해었습니다. 이번 시간에는 XML의 Configuration, 즉 과 같은 부분까지도 XML에서 없앨 수 있는 Java Configuration에 대해서 다뤄보고자합니다. 우선 XML 파일을 지워도 DI가 되게끔 하기 위해서는 이를 대체하기 위한 무언가가 필요합니다. 그것이 바로 Java Class로 만든 Config 파일입니다. 즉, XML 파일이 java 파일로 바뀌었다고 생각하면 되는 것이죠. 이 때, 새로 만든 config를 위한 java class는 이것은 Configuration을 위한 class임을 spring에게 알려주기 위해서..
[Spring Framework] @Component와 @Value 사용하기 '뉴렉처' 님의 채널(www.youtube.com/user/newlec1)을 바탕으로 제작한 블로그 글입니다:) 저번 강의부터 이어서 xml에 있는 DI를 어노테이션으로 바꾸는 작업들을 하고 있습니다. 지난번에는 setter를 annotation으로 어떻게 변경하는지에 대해서 알아보았는데요, 이번 시간에는 xml 내에서 객체를 생성하는 부분을 어노테이션을 이용하여 바꾸는 방법에 대해서 알아보려고 합니다! 우선, 기존의 코드같은 경우에는 xml 파일을 읽으면 동시에 IoC 컨테이너에서 객체들이 생성되고, 그 생성된 객체 내의 autowired에서 객체를 이어주는 부분을 찾아 연결해주는 작업을 했었습니다. 이번에는 IoC 컨테이너의 객체들 생성 또한 xml 대신 어노테이션으로 할 수 있도록 바꿔줄 것인데, ..

728x90
반응형