SPRING (14) 썸네일형 리스트형 지연 로딩 - (spring - 9) 지연 로딩과 즉시 로딩 @Test @DisplayName("아보카도 피자 조회") void test1() { Food food = foodRepository.findById(2L).orElseThrow(NullPointerException::new); System.out.println("food.getName() = " + food.getName()); System.out.println("food.getPrice() = " + food.getPrice()); System.out.println("아보카도 피자를 주문한 회원 정보 조회"); System.out.println("food.getUser().getName() = " + food.getUser().getName()); } N : 1의 양방향 관계인.. Spring Data JPA - (spring - 8) Spring Data JPA란? Spring Data JPA는 JPA를 쉽게 사용할 수 있게 만들어놓은 하나의 모듈 JPA를 추상화 시킨 Repository 인터페이스를 제공한다. Repository 인터페이스는 Hibernate와 같은 JPA구현체를 사용해서 구현한 클래스를 통해 사용된다. Spring Data JPA의 SimpleJpaRepository Spring Data JPA 에서는 JpaRepository 인터페이스를 구현하는 클래스르 자동으로 생성해준다. Spring 서버가 뜰 때 JpaRepository 인터페이스를 상속받은 인터페이스가 자동으로 스캔이 되면, 해당 인터페이스의 정보를 토대로 자동으로 SimpleJpaRepository 클래스를 생성해 주고, 이 클래스를 Spring ‘Be.. SpringBoot의 JPA - (spring - 7) SpringBoot의 환경에서는 EntityManagerFactory와 EntityManager를 자동으로 생성해준다. application.yml같은 설정파일에 DB정보를 전달 해 주면 이를 토대로 자동으로 생성 Spring의 트랜잭션 Spring 프레임워크에서는 DB의 트랜잭션 개념을 애플리케이션에 적용할 수 있도록 트랜잭션 관리자를 제공 @Transactional(readOnly = true) public class SimpleJpaRepository implements JpaRepositoryImplementation { ... @Transactional @Override public S save(S entity) { Assert.notNull(entity, "Entity must not be n.. 영속성 컨텍스트 - (spring - 6) 영속성 컨텍스트란? persistence를 한글로 번역하면 영속성, 지속성이라는 뜻이 되는데 '엔티티를 영구적,지속적으로 저장하는 환경 이라는 뜻으로 쉽게 생각하면 애플리케이션과 DB사이의 가상의 DB 같은 역할을 한다 persistence를 객체의 관점으로 해석해보자면, '객체가 생명(객체가 유지되는 시간)이나 공간(객체의 위치)를 자유롭게 유지하고 이동할 수 있는 객체의 성질'을 의미한다. 개발자들은 직접 SQL을 작성하지 않아도 JPA를 사용하여 데이터를 저장하거나 조회,수정,삭제 가능한데 이러한 일련의 과정을 효율적으로 처리하기 위해 JPA는 영속성 컨텍스트에 Entity 객체들을 저장하여 관리하면서 DB와 소통하게 된다. EntityManager 영속성 컨텍스트에 접근하여 Entity 객체들을 .. spring의 3가지 핵심 특징(IoC/Di, PSA, AOP)와 3가지 계층구조 - ( spring - 5) Spring Spring Framework는 앞서 공부한대로 자바 기반의 웹 애플리케이션 개발을 위한 프레임워크이다. 객체지향적으로 개발할 수 있도록 도와주고, 애플리케이션을 빠르고 효율적으로 개발할 수 있도록 기본 틀과 공통 프로그래밍 모델, API 등을 제공한다. - Spring Container 스프링은 스프링 컨테이너 또는 애플리케이션 컨텍스트라고 불리는 런타임 엔진을 제공하는데, 스프링 컨테이너는 설정 정보를 참고하여 애플리케이션을 구성하는 오브젝트(빈)을 생성하고 관리한다. 그리고 의존성을 갖는 객체에 대해 의존성 주입(Dependency Injection, DI)를 통해 두 객체의 결합도를 낮추도록 도와준다. - 공통 프로그래밍 모델 스프링은 애플리케이션을 구성하는 객체(빈)이 생성되고 동작.. Spring MVC - (spring - 4) MVC 디자인 패턴이란? MVC란 Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나 MVC패턴은 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분해야 각각의 역할을 분리 Model 데이터와 비즈니스 로직을 담당 데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업 수행 View 사용자 인터페이스를 담당 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현 Controller Model과 View 사이의 상호작용을 조정하고 제어 사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View를 업데이트 즉 MVC패턴은 소프트웨어를 구성하는 요소들을 분리함으로써 코드의 재사용성과 유지보수성을 높이고 개발자들 간의 협업을 .. HTTP란 무엇일까 - (spring - 3) HTTP(HyperText Transfer Protocaol)이란? 데이터를 주고받는 양식을 정의한 "통신 규약" 중 하나. -> 통신규약이란, 컴퓨터끼리 데이터를 주고 받을 때 정해둔 약속 따라서 현재 이용되는 대부분의 우베 서버가 HTTP를 기반으로 정해준 규칙에 알맞게 데이터를 주고 받는다. 그럼 어떻게 HTTP로 데이터를 주고 받을까? HTTP에서는 언제나 Request, Response라는 개념이 존재 1. 브라우저는 서버에게 자신이 원하는 페이지(URL 등의 정보)를 요구(Request) 한다. 2. 서버는 브라우저가 원하는 페이지가 있는지 확인하고, 있다면 해당 페이지에 대한 데이터를 실어 응답(Response)하고 없다면 없는 페이지에 대한 데이터를 반환 3. 브라우저는 서버에게 전달 받은.. Spring과Spring Boot의 간략한 차이점 - (spring - 2) Spring -Spring 프레임워크는 2004년에 등장해서 계속 업그레이드해온 현재 매우 오래되고 강력한 프레임워크다. -Spring 프레임워크는 AOP,IoC/DI등과 같은 아주 강력한 핵심 기능들을 가지고 있는데 이를 위해선 위와같은 수많은 xml 설정들이 필요했다. Spring Boot 이러한 점을 개선하기위해 SpringBoot가 등장했는데 기존의 xml 설정 대신 java의 애너테이션 기반의 설정을 적극적으로 사용해서 사용감을 매우 간편하게 만들었다. 또한 기존에는 외부 라이브러리와 프레임워크를 이용하기 위해선 각각 버전들의 호환성을 직접 확인해가며 설정해야 했지만 spring boot에선 위 사진처럼 알아서 의존성에 맞게 묶어서 제공해준다. 마지막으로 springboot는 내장 Apache .. 이전 1 2 다음