Spring

Spring

(Spring) JpaRepository는 인터페이스인데 어떻게 동작할까?

Java의 인터페이스 Java의 인터페이스는 추상 메서드를 정의할 수 있습니다. public interface Person { void walk(); void run(); } 이제는 너무나 잘 아시겠지만, Java 8버전 이후로는 기본 메서드를 작성할 수 있습니다. public interface Person { void walk(); void run(); default void sayHello() { System.out.println("Hello"); } } 또한 인터페이스의 추상메서드를 사용하기 위해서는 반드시 구현이 필요합니다. 왜냐하면 껍데기만 제공해주는 '인터페이스'이기 때문이죠. public class User implements Person { void walk() { System.out.pr..

Spring

(Spring) JPA exists를 최적화하는 여러가지 방법들

🧐들어가며 JPA는 기본적으로 많은 메서드를 지원합니다. 특히 Spring의 Spring Data JPA는 Spring Data Repo가 사용하는 여러 리포지토리 메서드를 상속받고 있기 때문에 많은 메서드를 사용할 수 있습니다. Spring Data Repo는 이렇게 기본적으로 리포지토리 리포지토리를 상속하고 있습니다. 특히 JPA는 기본 메서드뿐만 아니라 @Query 메서드를 사용해서 JPQL을 명시하여 사용할 수 있습니다. 🧐existsById JPA에서 기본으로 제공하는 existsById는 어떤 방식으로 동작할까요? Intellij에서 제공하는 JPABuddy를 사용하면 메서드의 쿼리를 추출할 수 있는 기능이 있습니다. 그러면 위와 같은 쿼리가 추출된다. 그런데 뭔가 이상합니다. 존재를 확인만 ..

Spring

(Spring) DI/의존 객체 주입 패턴 + Lombok

🧐 스프링의 DI 스프링의 특징이라고 할 수 있는 DI는 Dependency Injection의 준말이다. 말 그대로 의존성 주입이며, 기본적으로 의존 객체 주입 패턴으로 이루어져 있다. 스프링에서는 bean을 직접 생성하는 것이 아닌 IoC, 즉 스프링 컨테이너가 관리하고 있다. 스프링은 가장 먼저 Controller 어노테이션을 찾고 이후 wiring 되어 있는 객체를 순차적으로 생성해서 컨테이너에 등록하는데, 이때 DI, 즉 의존관계 주입이 필요하다. 의존관계 주입에는 다음과 같은 방식이 주를 이룬다. 생성자 주입 방식 setter 주입 방식 autowired 어노테이션 주입 방식 🧐 생성자 주입 방식 public class MovieController { private final MovieServ..

Spring

(Spring) Transactional 사용법

Transactional. 이 어노테이션을 왜 붙이는 지 모른다면, 트랜잭션에 대한 이해도가 부족한 것일 수 있다. Transaction에 대한 이해가 필요하다면 아래 문서를 참고해보자. (Database) 트랜잭션(ACID)과 무결성 구글에 트랙잭션을 검색하면 가장 많이 나오는 말이 있다. "DB의 상태를 변화시키기 수행하는 단위" 그런데 이것 만으로는 트랜잭션에 관해 전혀 감이 오지 않는다. (나만 그런가?) 나는 이 문장 mirrorofcode.tistory.com 그럼 트랜잭션에 대해서 안다고 가정하고 시작하겠다! @Transactional 스프링에서는 트랜잭션 처리를 간편하게 어노테이션으로 처리할 수 있다. 아래 코드를 보자. @Service @Transactional(readOnly = tru..

Spring

(Spring) Why Maven? Why Gradle?

Spring Initializer를 사용하거나, Intellij를 사용하면 처음 Spring Project를 만들 때, 두 가지 빌드 방법을 볼 수 있다. Maven과 Gradle 둘 다 사용해보신 분들도 있을 것이고, 하나만 사용해 보신 분들도 있으리라 생각된다. 이번 글은 둘 중 하나만 사용해보신 분들을 위해서 작성되었다. 🧐What is Maven? Maven은 아파치 재단에서 만들어진 오픈소스 툴로, 프로젝트 매니징 툴이다. Project Obejct Model(POM)을 기반으로 하고 있으며, 프로젝트 빌드, 리포트, 도큐먼트 작업까지 관리할 수 있다. Maven을 사용해보신 분들은 알겠지만, POM.xml을 기반으로 프로젝트를 빌드한다. Maven이 추구하는 목표는 다음과 같다. 빌드 프로세스..

Spring

(Spring) MVC에 대해서

🏴󠁩󠁤󠁪󠁷󠁿들어가며 Spring이 있기 전의 방식을 구현해본 사람이라면 스프링이 얼마나 마법 같은지 알 수 있다. 하지만 이 마법같은 것을 이해해야 비로소 마법에서 기술이 되지 않겠는가? 그래서 그 첫 번째 시작을 MVC에서 부터 시작하려 한다. (MVC는 제록스 연구소에서 일하던 트뤼그베 린즈커그가 처믐으로 소개한 개념으로, 데스크톱 어플리케이션용으로 고안되었다.) 🏴󠁩󠁤󠁪󠁷󠁿MVC란? MVC가 뭘까? (MVP 아님) MVC는 Model View Controller의 약자이다. 그럼 각각의 Model, View, Controller에 대해서 알아봐야할 것이다. Model은 view가 렌더링하는데 필요한 데이터이다. 간단하게 설명하면 getTasks를 실행할때 Tasks가 있어야 불러오지 않겠는가? 이때..

후;
'Spring' 카테고리의 글 목록