웹 계층 개발@NotEmpty() : jakarta를 통해서 값을 확인해주는 역할로 값이 비어있으면 알려주는 역할 @Valid : @NotEmpty, @NotNull과 같은 어노테이션이 붙은 항목을 validation 해준다. Spring Model : key와 value로 이뤄져있는 HashMap이다.addAttribute()를 호출함으로 view에 전달할 데이터를 담아서 전달할 수 있다.Servlet의 request.setAttribute()와 유사한 역할을 한다. BindingResult : 스프링에서 제공하는 검증 오류 처리 방법이다.BindingResult가 없으면 오류 발생 시 Controller가 정상 호출되지 못하고 오류가 발생해 Error Page로 이동한다.@Valid 이후에 사용 시..
도메인 개발Repository에서 사용되는 어노테이션@PersistenceContext : 스프링 컨테이너의 EntityManger 빈을 주입받는 것@PersistenceContext 대신 @RequiredArgsConstructor와 @Autowired를 사용해서 final EntityManager를 주입 받는 방법도 있다.@PersistenceUnit : 스프링 컨테이너의 EntityMangerFactory 빈을 주입받는 것 Entity 클래스에서 사용되는 어노테이션@GenerateValue : PK 값인 ID 값을 자동으로 생성해주는 역할로 EntityManger에 의해 persist()로 영속화될 때 ID값을 만들어서 넣어준다. (DB 저장 이전에 ID값 생성)ID를 만드는 방식은 별도 테이블로 ..
도메인 분석 설계회원이 상품을 주문하는 기능이 있는 예제예제 분석연관관계 설정 시 되도록 다대다 연관관계를 사용하지 말고 일대다 - 다대일 관계로 풀어서 사용해라!다대다 관계를 사용하면 필드를 추가하지 못한다.예제에서는 다양한 연관관계를 사용해보기 위해서 다대다 연관관계를 사용실무 단계에서는 회원이 주문을 참조하지 않고 주문이 회원을 참조하는 것으로 충분하다.회원이 주문을 하기 때문에 주문 리스트가 필요해 보이지만 객체 관점에서는 다르다.예제에서는 연관관계를 위해서 추가DB 테이블에서는 다대다(N:M) 관계가 없기 때문에 카테고리와 상품의 연관관계에서 매핑 테이블이 별도로 필요하다.연관관계의 주인은 외래 키가 있는 쪽을 택하는 것이 좋다.연관관계 주인 = 두 객체 중 제어 권한(데이터 저장, 수정, 삭제..
라이브러리스프링 부트 라이브러리spring-boot-starter-webspring-boot-starter-tomcat: 톰캣 (웹서버)spring-webmvc: 스프링 웹 MVCspring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)spring-boot-starter-data-jpaspring-boot-starter-aopspring-boot-starter-jdbcHikariCP 커넥션 풀 (부트 2.0 기본)hibernate + JPA: 하이버네이트 + JPAspring-data-jpa: 스프링 데이터 JPAspring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅spring-bootspring-core : Spring 프레임워크의 핵심 요소로 I..