연관관계 매핑객체의 참조와 테이블의 외래키를 매핑하는 것JPA에서는 연관관계에 있는 상대 테이블의 PK를 멤버 변수로 갖지 않고, 엔티티 객체 자체를 통째로 참조 방향단방향 : 두 엔티티가 관계를 맺을 때, 한쪽의 엔티티만 참조하고 있는 것양방향 : 두 엔티티가 관계를 맺을 때, 양쪽이 서로 참조하고 있는 것 다중성@ManyToOne : 다대일 (N : 1)@OneToMany : 일대다 (1 : N)@OneToOne : 일대일 (1 : 1)@ManyToMany : 다대다 (N : N) 어떤 엔티티를 중심으로 상대 엔티티를 바라보느냐에 따라 다중성이 다르게 됨 연관관계의 주인객체를 양방향 연관관계로 만들면 연관관계의 주인을 정해야 함연관관계를 갖는 두 테이블에서 외래키를 갖게 되는 테이블이 연관관계의 주인..
jjuya
QueryDSL이란?QueryDSL은 하이버네이트 쿼리 언어(HQL :Hibernate Querey Languge)의 쿼리 타입에 안전하게 생성 및 관리해 주는 프레임워크.QueryDSL은 정적 타입을 이용하여 SQL과 같은 쿼리를 생성할수 있게 해 줌. Spring boot와 Spring Data JPA를 함께 사용한다. 하지만 복잡한 쿼리, 동적쿼리를 구현하는 데 있어 한계가 있다. 이러한 문제점을 해결할 수 있는 것이 QueryDSL이다 QueryDSL등장하기 이전에는 Mybatis, JPQL, Criteria 등 문자열 형태로 쿼리문을 작성하여 컴파일 시에는 오류를 발견하는 것이 불가능했다하지만 QueryDSL은 자바 코드로 SQL문을 작성할 수 있어 컴파일 시에 오류를 발생하여 잘못된 쿼리가 실..
파일 업로드 시 이미지 파일을 DB에 저장하면 절대 안 되기 때문에 작업경로에 폴더를 만들어 그쪽에 저장되도록 해야한다!application.properties폴더 이름 생성org.aaaa.upload.path=upload CustomFileUtil 파일 업로드 시 공통으로 사용할 CustomFileUtil 클래스 생성@Component 어노테이션 주입 1. 파일경로 생성@Value("${org.aaaa.upload.path}")private String uploadPath;@Value에 경로 주입 2. 초기화 메소드 생성파일을 저장할 폴더 생성@PostConstructpublic void init(){ File tempFolder = new File(uploadPath); if(!tempFo..
ControllerAdvice와 RestControllerAdvicespring은 전역적으로 예외처리 할 수 있는 @ControllerAdvice와 @RestControllerAdvice어노테이션을 각각 spring 3.2, Sprong 4.3부터 제공하고 있다두 개의 차이는 controller와 RestController와 같은데,RestControllerAdvice는 ControllerAdvice와 달리 @ResponseBody가 붙어있어 응답 Json으로 내려준다는 점에서 다르다 @RestControllerAdvicepublic class CustomControllerAdvice { @ExceptionHandler(NoSuchElementException.class) public Resp..
@Component개발자가 직접 작성한 class를 Bean으로 등록하기 위한 어노테이션 @Bean, @Configuration개발자가 직접 제어가 불가능한 외부 라이브러리 또는 설정을 위한 Class를 Bean으로 등록할 때 @Bean어노테이션 사용. 1개 이상의 @Bean을 제공하는 클래스의 경우 반드시 @Configuration을명시해주어야함
Lombok 생성자 생성 @NoArgsConsteuctor : 파라미터가 없는 디폴트 생성자를 생성@AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자를 생성@RequiredArgsConstructor : final이나 @NonNull으로 선언된 필드만 파라미터로 받는 생성자를 생성@NoArgsConstructor 파라미터 없는 디폴트 생성자 생성@NoArgsConstructorpublic class Member{ private String name; private int age; }NoArgsConstructor를 사용하면 아래와 같은 java코드가 된다public class Member{ private String name; p..
Spring Data JPAJPA는 java 오프젝트를 관계형 데이터 베이스에 매핑하는 java표준JPA는 개발자가 데이터 베이스에 데이터를 CRUD(Create, Read, Update, Delete)를 위해 SQL을 작성할 필요 없이 객체를 조작하는 것만으로 데이터베이스에 CRUD수행할 수 있게 해 줌대표적인 JPA기반 구현체로 Hivernate가 있음Spring Data JPA는 JPA를 더 쉽게 사용할 수 있게 도와주는 모듈JPARepository와 같은 인터페이스를 상속, 새로운 Repository 인터페이스 생성, 정해진 규칙대로 메소드명을 명명하면 Spring Data JPA가 자동으로 코드를 제공한다.public interface TodoRepository extends JpaReposit..
Spring Framework vs Spring Boot Spring Framework 자바 언어 기반의 프레임워크로, 자바 언어의 가장 큰 특징인 객체 지향 언어의 장점을 살려 애플리케이션 개발을 할 수 있게 도와주는 프레임워크 Spring Boot 스프링 프레임워크 기반 전반적인 스프링 기술들의 설정, 버전 관리를 알아서 해주고,내장서버(톰켓)을 제공 해 도와주는 개발자들이 개발에만 집중하도록 도와주는 프레임워크 스프링부트의 특징의존성 관리스프링 프레임워크에서는개발에 필요한 각 모듈의 의존성을 직접 설정해야 했습니다호환되는 버전 또한 명시해야 정상 작동이 되었습니다이와 같은 불편함을 해소하기 위해 'spring-boot-starter'라는 의존성을 제공합니다.💡'spring-boot-st..
스프링 프레임워크란?자바 기반의 애플리케이션 프레임워크자바 언어를 이용해 엔터프라이즈급 개발을 편리하게 만들어주는 '오픈소스 경량급 애플리케이션 프레임워크'쉽게 말해, 자바로 애플리케이션을 개발하는데 필요한 기능을 제공하고 쉽게 사용하도록 돕는 도구이다스프링의 핵심 가치는애플리케이션 개발에 필요한 기반을 제공해서 개발자가 비즈니스 로직 구현에만 집중할 수 있게 하는 것!스프링의 특징과 구조에 대해 알아보자 제어 역전(Ioc)의존성 주입의 상위 개념으로,스프링 컨테이너가 필요에 따라 개발자 대신 Bean들을 관리(제어) 해주는 행위Spring에서는 xml 파일 또는 어노테이션 방식으로 스프링 컨테이너에 Bean(객체)를 등록하기만 하면, 컨테이너에서 Bean의 생명주기(생성 -> 의존성 설정 -> ..