목록프로그래밍 (59)
관심쟁이 영호
이번 기록은 Form 객체를 분리를 통해서 검증 로직을 서로 다르게 적용하는 것이다. 이 말이 무슨 뜻인가!? 다음과 같은 상황으로 이해해보자. "회원 가입 시에는 id의 길이가 최대 10, 회원 정보 수정에는 id의 길이가 최대 15로 수정이 가능하게 해 주세요." 위와 같은 상황에 Form 객체를 분리하여 검증 로직을 다르게 적용한다는 말이다! 목차 Form 객체 분리란? Form 객체 분리하기 분리에 따른 후 처리 번외 - 겪은 에러 Form 객체 분리란? Form 객체로 분리한다는 말이 무슨 뜻일까? 코드로 살펴보자. User.java @Data @Entity(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationT..
오늘은 인터페이스에 관해서 공부를 할 예정이다. (출간된 "자바의 정석" 책을 참고했습니다.) 인터페이스란? - 추상 메서드의 집합이다. (추상 메서드 : 구현을 하지않은 메서드) - 모든 멤버가 public이다. - 구현된 내용이 하나도 없다. 이렇게 볼 수 있다. 그럼 추상클래스와 무엇이 다른가? 추상클래스는 구현된 메서드도 포함할 수 있다. (인터페이스도 JDK 1.8 version 부터는 구현된 상수, static 메서드와 같은 멤버변수를 가질 수 있다.) 인터페이스 선언방법 interface practice{ public static final FIRST = 1; public abstract abc(int num); } 위와 같이 인터페이스를 선언할 수 있다. 인터페이스의 구현 인터페이스를 구현..
이번 포스팅에서는 concat, filter, map, slice, 스프레드(전개) 연산자에 대해서 살펴볼 것이다. 스프레드 연산자 스프레드 연산자는 깊은 복사를 실시하는 연산자이다. 아래 코드를 보자. const a = [1,2,3] const b = [...a]; b.push(4); // a??? 이렇게 했을 때, a의 값은 어떻게 될까? 정답은 [1,2,3] 그대로다. 이것이 깊은 복사이다. a의 모든 값을 복사하여 새로운 메모리를 할당한 배열 b에 저장한다. 그래서 b에 새로운 값을 푸쉬해도 a에는 아무런 영향을 주지 않는다. concat concat 함수는 추가하는 함수라고 생각하면 된다. 아래 코드를 보자. const a = [1,2,3]; const b = a.concat(4); // b??..
오늘은 이전에 만들었던 코드부분을 직접 html을 만들고, css를 적용하고 실제로 동작을 시켜볼 예정이다. html, css수업이 아니기 때문에 코드에 대한 설명은 생략하셨다. 먼저 html과 css를 적용해야한다. 필요한 부분은 회원 가입, 회원 목록, 상품 등록, 상품 목록, 상품 주문, 주문 내역이다. 약간의 코드는 생략한다. 1. html 매칭시켜주기. //home Controller @Controller @Slf4j public class HomeController { @RequestMapping("/") public String home(){ log.info("home controller"); return "home"; } } - @RequestMapping("/") 이렇게 작성하면, 기본 ..
1. 구현 기능 - 회원 등록 - 회원 목록 조회 2. 구현 순서 - 회원 엔티티 코드 다시 보기 - 회원 리포지토리 개발 - 회원 서비스 개발 - 회원 기능 테스트 순서는 이렇게 할 것이다. 실무에서 하는 방법대로 하신다고 하시니, 숙지해두면 좋을 순서일 것이다. 1. 회원 리포지토리 구현 리포지토리는 이전에 포스팅한 글에서 언급했듯이, DB에 JPA기술을 사용하여 직접 접근하는 것이다. 회원 리포지토리라 함은, DB에 저장되어있는 회원정보를 GET, SET하는 기능이 있을 것이다. - repository pakage를 생성한다. - repository pakage에 MemberRepository를 생성했다. - 그리고 코드를 넣는다. // MemberRepository.class //스프링에게 이것이..
1. Getter와 Setter 실무에서는 Getter를 이용하여 데이터 조회를 하는 경우가 상당히 많다. 그래서 Getter를 열어두지 않으면 많이 힘들다. 그래서 열어두는 것이 좋다. 반면에, Setter는 데이터를 잘못 바꾸는 경우가 있어서 열어두었다가 어느 부분에서 어떻게 데이터가 업데이트 되었는지 파악하기가 힘든 경우가 있다. 그래서 꼭 필요한 경우가 아니라면 Setter를 닫아두는 것을 추천하신다. -> 변경전용 비지니스 메서드가 필요하다. 2. 엔티티 식별자 엔티티의 식별자는 id, PK 컬럼명은 member_id를 사용해주는 이유는, 엔티티는 타입이 있어서 id필드 만으로 쉽게 구분할 수 있지만, 테이블은 타입이 없다. 그래서 구분이 상당히 힘들다. 그리고 관례상 테이블은 테이블명 + id..