'Spring/Spring boot' 카테고리의 글 목록 — Flutter Never Die

Spring/Spring boot

    [SpringBoot] 스프링부트 JPA 단점과 Query DSL

    이번 시간엔 연관 관계가 A -(One to Many)→ B -(One to Many)→ C로 설정된 경우JPA의 단점에 대해 포스팅하겠습니다. JPA사용시 단점 : A를통해 연관관계가 없는 C객체를 찾을 때의 이슈 (디폴트 Lazy): A->B->C 의 관계를 가진 엔티티에서의 A엔티티 값을 조회할 때, B와 C는 로딩되지 않습니다. 하지만 레파지토리A에서 A와 연관된 C에 접근하려 할 때 A->C로의 직접적인 연관된 매핑이 없어 B 리스트에 대한 쿼리가 발생하며, 만약 B와 C의 개수가 많다면 이는 성능상의 이슈를 발생시킬 수 있습니다. Lazy 로딩: A를 조회할 때, B와 C는 로딩되지 않습니다. 필요한 시점에 데이터베이스에서 실제로 가져옵니다.A에서 C를 조회하려 할 때, 추가적인 쿼리가 실행되..

    [SpringBoot] 스프링부트 Jar & War 차이

    소프트웨어 개발과 배포 과정에서 JAR(JAVA Archive)와 WAR(Web Application Archive) 파일은 중요한 역할을 합니다. 이 글에서는 스프링 부트에서 JAR와 WAR 파일의 개념, 구조, 사용 사례 및 주요 차이점에 대해 알아보겠습니다. 용도 JAR 파일은 주로 단독 Java 어플리케이션을 패키징하고 실행하는 데 사용됩니다. WAR 파일은 Java 웹 애플리케이션을 패키징하고 웹 서버 또는 웹 애플리케이션 서버에서 실행하는 데 사용됩니다. 구조 JAR 파일은 클래스 파일과 라이브러리를 포함하며, 주로 실행 가능한 Java 애플리케이션을 위한 것입니다. WAR 파일은 웹 관련 파일 및 디렉토리를 포함하며, 웹 애플리케이션을 위한 것입니다. jar vs war 선택할 때 고려할 사..

    [SpringBoot] 스프링부트 JPQL(Java Persistence Query Language)

    JPQL(Java Persistence Query Language)에 대해 알아보자! JPQL(Java Persistence Query Language)은 자바 기반의 ORM(Object-Relational Mapping) 기술인 JPA(Java Persistence API)에서 사용되는 쿼리 언어입니다. JPQL을 통해 객체 지향적인 방식으로 데이터베이스와 상호작용할 수 있습니다. 이번 글에서는 JPQL에 대해 자세히 알아보고, 주요 기능과 사용법에 대해 살펴보겠습니다. JPQL이란? JPQL은 엔티티 객체를 대상으로 하는 객체 지향 쿼리 언어입니다. 데이터베이스 테이블이 아닌 엔티티 클래스와 필드를 기반으로 쿼리를 작성할 수 있습니다. JPQL은 JPA의 일부로 제공되며, ORM을 사용하는 애플리케이..

    [SpringBoot] 스프링부트 IoC와 DI의 이해

    Spring Boot는 Java 기반의 개발 프레임워크로, IoC (Inversion of Control)와 DI (Dependency Injection) 같은 핵심 개념을 통해 개발자에게 많은 이점을 제공합니다. 이번 글에서는 IoC와 DI가 무엇이며, Spring Boot에서 어떻게 활용되는지에 대해 자세히 알아보겠습니다. IoC (Inversion of Control)란? IoC란 제어의 역전을 의미하며, 객체의 생성과 관리를 개발자가 아닌 프레임워크가 담당하는 개념입니다.기존의 개발 방식에서는 개발자가 객체를 직접 생성하고 관리했지만, IoC를 통해 객체의 생명주기를 프레임워크가 제어하게 됩니다.Spring Boot에서는 IoC 컨테이너를 통해 객체의 생명주기와 의존성을 관리합니다. DI (Dep..

    [SpringBoot] 스프링부트의 특징

    스프링부트는 스프링 프레임워크를 기반으로 한 자바 개발 프레임워크로, 간편한 설정, 개발, 배포, 모니터링 등의 기능을 제공합니다. 이번에는 스프링부트의 특징과 장단점에 대해 살펴보도록 하겠습니다. 스프링부트의 특징 1. 간편한 설정과 개발 스프링부트는 설정을 간편하게 구성할 수 있도록 자동설정과 어노테이션을 제공합니다. 또한, 스프링부트는 기본적으로 톰캣(Tomcat)과 같은 내장형 서버를 제공하므로, 별도의 서버 설정 없이도 빠르게 웹 애플리케이션을 개발할 수 있습니다. 2. 강력한 보안성 스프링부트는 기본적으로 보안을 강화하기 위해 많은 보안 기능을 제공합니다. 예를 들어, 스프링 시큐리티(Spring Security)와 같은 모듈을 이용하여 웹 애플리케이션의 보안을 강화할 수 있습니다. 3. 다양..

    [SpringBoot] 스프링부트 Repository

    Repository는 데이터베이스와의 상호작용을 담당하는 클래스입니다. 스프링에서 Repository는 JPA를 사용하여 구현되어 있습니다. 따라서 JPA를 사용하면 데이터베이스에 접근하여 CRUD(Create, Read, Update, Delete) 기능을 수행할 수 있습니다. Repository는 인터페이스로 정의됩니다. 이 인터페이스에서는 JpaRepository 인터페이스를 상속받습니다. JpaRepository는 스프링에서 제공하는 인터페이스로, 기본적인 CRUD 기능을 제공합니다. 따라서 별도의 코딩 없이도 JpaRepository를 상속받으면 간단한 데이터베이스 작업을 수행할 수 있습니다. 예를 들어, 다음과 같이 UserRepository 인터페이스를 작성할 수 있습니다. @Reposito..

    [SpringBoot] 스프링부트 Service

    서비스는 컨트롤러와 레파지토리 사이에서 중간 단계로서, 비즈니스 로직을 처리하는 역할을 합니다. 스프링부트에서는 @Service 어노테이션을 사용하여 서비스를 정의하며, 다음과 같은 특징을 가지고 있습니다. 비즈니스 로직을 처리하는 역할을 수행합니다. 서비스는 컨트롤러에서 받은 요청을 처리하고, 레파지토리에서 반환한 데이터를 가공하여 결과를 반환합니다. 예를 들어, 게시판 서비스에서는 게시글 등록, 수정, 삭제 등의 작업을 수행합니다. 레파지토리와 컨트롤러 사이에서 중개 역할을 수행합니다. 서비스는 레파지토리에서 반환된 데이터를 가공하거나, 여러 개의 레파지토리를 동시에 사용하는 작업 등을 처리합니다. 또한, 컨트롤러와 레파지토리 사이에서 데이터의 전달과 반환을 관리합니다. 여러 개의 레파지토리를 사용하..