
엔티티 매핑 객체와 테이블 매핑: @Entity, @Table 필드와 컬럼 매핑: @Column 기본 키 매핑: @Id 연관관계 매핑: @ManyToOne, @JoinColumn 객체와 테이블 매핑 @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 @Entity가 붙은 클래스는 JPA가 관리하고 엔티티라 한다 주의 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스 사용 불가 저장할 필드에 final 사용 불가 @Entity 속성 정리 속성 기능 기본값 name JPA에서 사용할 엔티티 이름을 지정 클래스 이름을 그대로 사용(기본값 사용을 권장) @Table @Table은 엔티티와 매..

영속성 컨텍스트 엔티티를 영구 저장하는 환경이라는 뜻 EntityManager.persist(entity); 엔티티 매니저가 영속성 컨텍스트를 관리한다 엔티티 생명주기 비영속 (new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속 (managed) : 영속성 컨텍스트에 관리되는 상태 준영속 (detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 (removed) : 삭제된 상태 영속성 컨텍스트의 이점 1. 1차 캐시 엔티티를 영속성 컨텍스트에 저장하는 순간(persist()) 1차 캐시에도 저장한다 조회(find())가 일어나면 1차 캐시에서 먼저 찾고 존재하면 DB조회를 하지않는다 하나의 트랜잭션 안에서 1차 캐시는 유효하다 2. 동일성 보장 Member ..

JPA Java persistence API는 자바의 ORM 기술의 표준이다 ORM Object-Relational Mapping 객체와 관계형 데이터베이스를 매핑한다는 뜻 ORM 프레임워크는 객체와 테이블을 매핑해 패러다임의 불일치를 개발자 대신 해결해준다. 객체는 객체대로 생성하고, 데이터베이스는 데이터베이스에 맞도록 설계를 가능하게 해준다. 개발자는 이를 매핑하는 방법만 전달해주면 된다. JPA란 자바 ORM에 대한 API 표준 명세이고, 인터페이스의 모음이다. 따라서 구현체가 없고, 사용하기 위해서는 ORM프레임워크를 선택해야한다. 다양한 프레임워크가 존재하지만 가장 대중적인 것은 하이버네이트이다. 동작 과정 JPA는 애플리케이션과 JDBC 사이에서 동작한다. JPA 내부에서 JDBC API를 사..
SOLID SRP (Single Responsibility Principle) : 단일 책임 원칙 OCP (Open-Closed Principle) : 개방 폐쇄 원칙 LSP (Liskov Substitution Principle) : 리스코프 치환 원칙 ISP (Interface Segragation Principle) : 인터페이스 분리 원칙 DIP (Dependency Inversion Principle) : 의존관계 역전 원칙 SRP, 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다 클래스에서 변경사항이 있을 때, 애플리케이션의 파급 효과가 적으면 SRP 원칙을 잘 따른 것으로 볼 수 있다. OCP, 개방 폐쇄 원칙 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다 객체를 ..

의존관계 주입은 크게 4가지 방법이 있다. 1. 생성자 주입 2. 수정자 주입(setter) 3. 필드 주입 4. 일반 메서드 주입 1. 생성자 주입(권장) 생성자 호출시점에 딱 1번만 호출되는 것을 보장 불변, 필수 의존관계에 사용 스프링에서 권장함 (lombok 사용) 2. 수정자 주입(setter) 선택, 변경 가능성이 있는 의존관계에 사용 3. 필드 주입 외부에서 변경이 불가능해 테스트 하기 힘듬 DI 프레임워크가 필요함(@SpringBootTest 처럼 스프링 컨테이너를 테스트에 통합한 경우에만 가능) 4. 일반 메서드 주입 한번에 여러 필드를 주입 받을 수 있음