본문 바로가기

인프런79

검증 - Bean Validation Bean Validation 이란? 먼저 Bean Validation은 특정한 구현체가 아니라 Bean Validation 2.0(JSR-380)이라는 기술 표준이다. 쉽게 이야기해서 검증 애노테이션과 여러 인터페이스의 모음이다. Bean Validation을 사용하려면 build.gradle에 implementation 'org.springframework.boot:spring-boot-starter-validation' 의존관계를 추가한다. 테스트 코드 @Data public class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 1000000) private Integer pri.. 2022. 5. 29.
메시지, 국제화 메시지 기획자가 화면에 보이는 문구가 마음에 들지 않는다고, 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까? 여러 화면에 보이는 상품명, 가격, 수량 등, label 에 있는 단어를 변경하려면 다음 화면들을 다 찾아가면서 모두 변경해야 한다. 왜냐하면 해당 HTML 파일에 메시지가 하드코딩 되어 있기 때문이다. 이런 다양한 메시지를 한 곳에서 관리하도록 하는 기능을 메시지 기능이라 한다. 국제화 메시지에서 설명한 메시지 파일( messages.properties )을 각 나라별로 별도로 관리하면 서비스를 국제화 할 수 있다. 영어를 사용하는 사람이면 messages_en.properties 를 사용하고, 한국어를 사용하는 사람이면 messages_ko.properties 를 사용하.. 2022. 5. 26.
타임리프 - 기본기능(2) URL 링크 단순한 URL @{/hello} -> /hello 메뉴얼 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#link-urls 리터럴 리터럴은 소스 코드상에 고정된 값을 말하는 용어이다. String a = "Hello" int a = 10 * 20 "Hello"는 문자 리터럴, 10과 20은 숫자 리터럴이다. 타임리프에서 문자 리터럴은 항상 ' ( 작은 따옴표 ) 로 감싸야 한다. 공백 없이 쭉 이어진다면 하나의 토큰으로 인지해서 작은 따옴표를 생략할 수 있다. 연산 비교연산 : HTML 엔티티 사용만 조심 조건식 : 자바와 동일 Elvis 연산자 : 조건식의 편의 버전 No-Operation : _ 인 경우 타임리프 실행하지 .. 2022. 5. 25.
다양한 연관관계 매핑 다대일 [N:1] @ManyToOne 다대일 단방향 -> 가장 많이 사용, 다대일의 반대는 일대다 다대일 양방향 -> 외래 키가 있는 쪽이 연관관계의 주인, 양쪽을 서로 참조하도록 개발 일대다 [1:N] @OneToMany ( 이 모델은 권장하지 않음. 실무에서 거의 사용하지 않음. ) 일대다 단방향 -> 일(1)이 연관관계의 주인, 테이블 일대다 관계는 다(N)쪽에 외래 키가 있음 일대다 단방향 단점 -> 엔티티가 관리하는 외래 키가 다른 테이블에 있음, 일대다 단방향 매핑보다는 다대일 양방향 매핑을 사용하자 일대다 양방향 -> 공식적으로 존재 X, @JoinColumn(insertable=false, updatable=false) 다대일 양방향 매핑을 사용하자 일대일 [1:1] @OneToOne 일대.. 2022. 5. 16.
연관관계의 주인과 주의점 연관관계의 주인 (Owner) 두 객체 연관관계 중 하나를 정해서 테이블의 외래 키를 관리해야 한다. 이 떄 관리하는 객체를 연관관계의 주인이라고 한다. 누구를 주인으로 ? -> 외래 키가 있는 곳을 주인으로 ( 또는 ManyToOne에서 Many쪽이 좋다. ) 주의할점 순수 객체 상태를 고려해서 항상 양쪽에 값을 설정하자 연관관계 편의 메소드를 생성하자 N에 작성해도 되고 1에 작성해도 된다 양방향 매핑시에 무한루프를 조심하자 (컨트롤러에서 엔티티를 절대 반환하지 말것) 예) toString(), lombok, JSON 생성 라이브러리 정리 단방향 매핑만으로도 이미 연관관계 매핑은 완료 양방향 매핑은 반대 방향으로 조회(객체 그래프 탐색) 기능이 추가된 것 뿐 JPQL에서 역방향으로 탐색할 일이 많음 .. 2022. 5. 14.
JPA 연관관계 매핑 기초 연관관계 매핑 기초 객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다. - 조영호(객체지향의 사실과 오해) ( 책 추천 : 객체지향의 사실과 오해, 오브젝트 ) 객체를 테이블에 맞추어 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없다. 따라서 객체 연관관계를 사용한 객체 지향 모델링을 해야한다. 단방향 연관관계는 -> 간단하고 어렵지 않다. Member class 기준 private Team team; 을 선언한 후 @ManyToOne 과 @JoinCoulmn(name = "TEAM_ID") 어노테이션을 달아주면 된다. 양방향 연관관계와 연관관계의 주인 -> 어렵다 (연관관계 매핑의 핵심) 양방향은 Member class는 그대로 두고 Team class에 private List.. 2022. 5. 13.