스프링데이터 + JPA/웹 애플리케이션 개발 27

7. 엔티티 개발

@Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String name; @Embedded private Address address; @OneToMany(mappedBy = "member") private List orders = new ArrayList(); } @Getter는 좋은데, @Setter는 생각하면서 넣으셈. @Setter 필요한 곳만 넣는게 좋음. 애노테이션 안쓰고. 차라리 별도의 비즈니스 메소드를 넣는 게 좋음. private로 만들고 비즈니스 메소드에서 사용하든.. Address는 임베디드타입 @Embeddable publ..

6. 도메인 모델과 테이블 설계

내가 한 이것과 카테고리 빼면 거의 비슷하다. 아 근데 저거 다대다 관계인데.. 또 현실로 보면 한 상품이 여러 카테고리에 포함되어 있을 수 있고, 한 카테고리가 여러 상품을 품을 수 있어서.. 멤버 아 그렇지 멤버 주소도 있어야 하지.. 근데 주소 여러 개 일수도 있으니까 저것도 테이블을 고려 해 봐야 할 듯. 주문 Member_id 있어야 하고, 주문상품도 있어야 하는데, 일대다 관계니 외래키는 다 쪽에 맡기니 여긴 없고, 주문 상태. 주문날짜 배송정보 그렇지. 주문과 1:1 주소정보도 있어야 하지. member의 주소와 다를 수 있으니 주문아이템 있어야지. 수량, 가격이 다를 수 있지. 할인같은 거 어떤 상품인지도 알아야 겠지. 상품 상품이름 가격 양 카테고리 카테고리 난 이 쪽이 사실 잘 모르겠음..

5. 요구사항 분석

요구사항 분석 기능 목록 회원기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문 시 배송 정보를 입력할 수 있다. 우선 먼저 무슨 테이블이 필요할 지 생각해 보자. 아직은 기본적인 전체 회원, 전체 주문, 전체 상품 등 정도만 있는 것 같다. 기본 테이블은 회원, 상품, 주문이며, 세세하게 보자. 일단은 그냥 회원은 id, username만 두자. 회원 id username 상품 id name DTYPE amount price 주문 id date delivery order_product id order_id..

4. DB(H2) 설치 및 설정

이거 버전 맞춰서 설치 해야 함. https://qwefdg3.tistory.com/698 여기 참조. 그리고 이제 설정인데.. application.properties 쓰다가 application.yml로 쓰신다고 하신다. 뭐 종속성 많아지면 그게 더 편하다고.. 하긴 뭐랄까 뭐에 대한 설정인지 들여쓰기로 나눠져 있어서 보기 편하긴 하다. spring: datasource: url: jdbc:h2:tcp://localhost/./jpashop username: sa password: 1234 driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show_sql: true format_sql: t..

3. 뷰 환경설정

스프링은 주로 타임리프를 밀음 타임리프 장점 중 하나는 이런 게 그냥 웹브라우저로 열어도 열림. 다른 건 어떤 프로그램에 의해 랜더링을 한번 거쳐야 열리는 데, 이건 그냥 열림. 우선 그냥 보기 위해 기본적인 컨트롤러 하나만 만들어 봄 @Controller public class HelloController { @GetMapping("hello") public String hello(Model model){ model.addAttribute("data","hello!!!"); return "hello"; } } 컨트롤러 만들고, GetMapping 시켜서 get 메소드로 hello라는 url로 날아오는 요청은 저 메소드를 실행함. Model은 argumentResolver에 의해 넣어짐. Model 자체..

2. 프로젝트 환경 설정

프로젝트 생성 라이브러리 살펴보기 view 환경설정 DB설치 (h2) JPA, DB 설정, 동작확인 할거다. 먼저 프로젝트 생성 https://start.spring.io/ Spring web thymeleaf Spring data jpa h2 database lombok 이렇게 종속성 가져간다. h2가 개발용이나 연습용이나 이럴 때 좋다고 한다. 가볍고 좀 포켓같은 느낌인 것 같다. 스프링 데이터 JPA는 스프링 데이터와 하이버네이트를 사용한다. 잘 세팅 되었나 main, test 실행 함 해보고 lombok같은 경우 인텔리제이에도 추가로 플러그인을 깔아야 함. 종속성 관계 보려면 gradle 창을 보면됨. 안보일 경우 view - tool window - gradle 뭐 여러가지 자동으로 가져온다. ..

1. 스프링 부트 + JPA

스프링 부트는 복잡하고 어려운 스프링 기술을 간결하고 쉽게 사용할 수 있도록 도와주는 기술 JPA는 강력한 JAVA ORM 표준기술 둘이 합치면 높은 생산성으로 빠르게 웹 애플리케이션 개발 가능 Java 진영에서는 이 두 기술로 개발하는 것이 추세 웹 프로젝트 라고 하면 요구사항 분석 설계 아키텍쳐 구성 비즈니스 로직 개발 테스트 웹 계층 개발 거의 이 순으로 따라가면서 한다고 보면 됨. 환경 구성 요구사항 분석 분석을 토대로 도메인 설계 엔티티 설계 테이블 설계 그 후 ORM으로 매핑을 하고, 애플리케이션 아키텍처 구성 그 다음 핵심 비즈니스 로직 개발 테스트 케이스 검증 웹계층 개발 (뷰템플릿, html, 컨트롤러) 완성 유지보수 이게 도메인 주도 설계임