
엔티티 (Entity) : 엔티티란 데이터베이스의 테이블에 대응하는 클래스이다. @Entity가 붙은 클래스는 JPA에서 관리하며 엔티티라고 한다. 데이터베이스에 item 테이블을 만들고 이에 대응 되는 item 클래스를 만들어서 @Entity 어노테이션을 붙이면 이 클래스가 엔티티가 되는 것. 클래스 자체나 생성한 인스턴스도 엔티티라고 부른다. 엔티티 매니저 팩토리 (Entity Manager Factory) : 엔티티 매니저 인스턴스를 관리하는 주체 - 애플리케이션 실행 시 한 개만 만들어지며 사용자로부터 요청이 오면 엔티티 매니저 팩토리로부터 엔티티 매니저를 생성한다. 엔티티 매니저 (Entity Manager) : 영속성 컨텍스트에 접근하여 엔티티에 대한 데이터베이스 작업을 제공한다. - 내부적으..
어노테이션 설명 @Getter / @Setter 코드를 컴파일할 때 속성들에 대한 Getter/Setter 메소드 생성 @ToString toString() 메소드 생성 @ToString(exclude={"변수명"}) 원하지 않는 속성을 제외한 toString() 메소드 생성 @NonNull 해당 변수가 null 체크. NullPointerException 예외 발생 @EqualsAndHashCode equals()와 HashCode() 메소드 생성 @Builder 빌더 패턴을 이용한 객체 생성 @NoArgsConstructor 파라미터가 없는 기본 생성자 생성 @AllArgsConstructor 모든 속성에 대한 생성자 생성 @RequiredArgsConstructor 초기회되지 않은 Final, @N..

의존성 주입 [DI(Dependency Injection)] & 제어의 역전[IoC(Inversion of Control)] 👉 IoC(Inversion of Control : 제어의 역전) - 애플리케이션의 전체 동작 방식을 구성하기 위해 구현 객체를 생성, 연결하는 별도의 설정 클래스인 AppConfig가 있다고 하자. - 위 그림과 같이 OrderServiceImpl은 필요한 인터페이스(DiscountPolicy)들을 AppConfig로 부터 호출하지만 어떻게 생성 될지는 알 수 없다. 메소드가 실행 됬을때 제어흐름도 AppConfig 가 들고 있던걸 실행하는것이기 때문에 프로그램의 제어 흐름에 대한 모든 권한도 AppConfig가 가지고 있다. 다쓰면 객체도 반납한다. - 이처럼 프로그램의 제어 ..

Annotation의 종류 Built-in Annotation : 자바에서 기본적으로 제공하는 어노테이션 (ex. @**Override)** Meta Annotation : 커스텀 어노테이션을 만들수 있게 제공된 어노테이션. (ex. **@Target)** Custom Annotation : 사용자가 직접 정의한 어노테이션 (java 외 spring, junit 등.. 모두 포함) (ex. **@Test)** Annotation 만들기 Meta Annotation 을 사용해서 만든다. @Target 말 그대로 어노테이션의 타겟을 지정하는 것입니다. FIELD : 해당 어노테이션을 Feild에 붙일때 METHOD, TYPE : Class나 Enum 등의 어떤 대상을 위한 어노테이션인지 타입에 붙일 때 그외..
빈(Bean) - 애플리케이션에서 빈(Bean)이라는 이름으로 객체를 미리 생성해놓고 돌려쓰는것을 얘기한다. (한번만 생성하고 쓰레드들이 다같이 쓴다. = 싱글톤) 즉, 스프링앱에 여러 번 빈을 요청하더라도 매번 동일한 객체를 돌려준다는 것이다. (스프링이 빈을 관리한다.) 이유 : 애플리케이션 컨텍스트(컨테이너) 가 싱글톤으로 빈을 관리하는 이유는 대규모 트래픽을 처리할 수 있도록 하기 위함. (메모리는 한정적이기 때문) 컴포넌트(Component) : 개발자가 직접 작성한 Class를 Bean으로 등록한 것 (Bean 과 동일하게 한번만 생성하고 쓰레드들이 다같이 쓰게 하려고) **@Component** 는 개발자가 지금 개발중인 직접 컨트롤이 가능한 클래스들의 경우 Bean으로 등록하기 위해 사용된..
redirect: - URL로 리다이렉트 (리다이렉트는 완전히 새로운 URL로 요청이 된다.) forward: - URL로 포워드 (포워드는 기존 요청 값들이 유지된 상태로 URL이 전환된다.) 모듈 : 소프트웨어 설계에서 기능단위로 분해하고 추상화 되어 재사용 및 공유 가능한 수준으로 만들어진 단위 모듈화 : 소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법 1. 일반적으로 모듈 이란? 보다 작고 이해할 수 있는 단위로 나뉘어진 것 본체에서 분리되어 작은 부분으로 유기적으로 구성되어 있다가, 필요할 때 본체에 합류하여 그 기능을 수행할 수 있는 것 통상, 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체로 봄 2. 문제를 다룰 때 ..
@RequiredArgsConstructor @NoArgsConstructor @AllArgsConstucroctor @GenerateValue(stratege = GenerationType.Auto) @GenerateValue(stratege = GenerationType.Identity) @GenerateValue(stratege = GenerationType.Table) @GenerateValue(stratege = GenerationType.Sequence) @MappedSuperClass @PathVariable @Transactional의 쓰임 @RestController @RequestBody 와 @ResponseBody 의 차이. JSON 형식과 JacKson @Column @Table @..