목록springboot (22)
관심쟁이 영호
이제부터는 모든 코드를 하나하나 뜯어보고, 어떤일이 일어나있는 지, 왜 그렇게 되는지 완벽하게 분해분석을 할 예정이다. 1. H2 서버를 시작해주고, 프로젝트를 실행해준다. - 해당 내용에 대한 설정은, application.yml에 표시되어 있다. spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver - 여기서 url로 설정되어 있다. 2. url : localhost:8080으로 접속해준다. 그럼 홈화면이 뜬다. - 왜 localhost:8080인가? 이 이유는 yml에 설정이 되어 있기 때문이다. yml에 server.port에 대한 설정이 없으면 ..
스프링 공부를 해본 적이 있다면, 누구나 연관관계에 대해서 고민을 해본 적이 있을 것이다. 오늘은 그 연관관계가 어떤 것인지 살펴볼 예정이다. 아래의 그림을 보자. 어떠한 게시판의 게시글의 예시이다. 작성자: 홍길동은 User Table에서 데이터를 가지고 있다. 내용은 Board Table에서 데이터를 가지고 있다. 댓글은 Reply Table에서 데이터를 가지고 있다. 우리가 JPA를 사용하지 않을 때는, DB에서 JOIN을 이용하여 조회를 한다음 해당하는 데이터를 게시판에 뿌려주는 방식을 사용했을 것이다. 여기서 훨씬 편리하게 JPA기술을 사용할 수가 있다. JPA를 사용하면 우리가 Board에만 조회쿼리를 날려도 다 나온다. 흐름을 보면 SELECT * FROM Board Where Id = 1;..
이번엔 Reply 클래스를 생성했다. 이 코드가 완성되면 DB에 Reply Table이 생성된다. 코드를 보자! // Reply.java @Data @NoArgsConstructor @AllArgsConstructor @Builder @Entity //User 클래스가 스프링이 시작할 때, MySQL에 테이블을 생성한다. public class Reply { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; // 시퀀스, auto_increment @Column(nullable = false, length = 200) private String content; @ManyToOne @JoinColumn(name = "boardi..
이번엔 Board Table을 생성해보자. 먼저 코드를 살펴보면 // Board.java @Entity public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) //auto_increment private int id; @Column(nullable = false, length = 100) private String title; @Lob // 대용량 데이터용 private String content; // 섬머노트 라이브러리 사용하기. 디자인할 때, 태그가 섞여서 디자인이 됨 @ColumnDefault("0") private int count; //조회수 //글쓴이를 작성하기 위해서는 id값을 통해서 Select를 한번더 해..
이번 시간에는 주문 도메인을 개발할거다. 개발자님께서 이 부분이 가장 중요하다고 하신다. 실제 비즈니스 로직들이 JPA로 어떻게 풀어나갈 수 있는지 볼 수 있다고 하신다. 1. 구현 기능 - 상품 주문 - 주문 내역 조회 - 주문 취소 2. 구현 순서 - 주문 엔티티, 주문상품 엔티티 개발 - 주문 리포지토리 개발 - 주문 서비스 개발 - 주문 검색 기능 개발 - 주문 기능 테스트 구현에 대한 기초 To Do List이다. 시작해보자. 3. 먼저 코드를 살펴보자. // Order.class @Entity @Table(name = "orders") @Getter @Setter public class Order { @Id @GeneratedValue @Column(name = "order_id") priva..
이전 포스팅에서는 회원 도메인을 완성했고, 테스트까지 완료했다. 이번 포스팅에서는 상품 도메인을 할 예정이다. 1. 상품 도메인 기능 및 개발 순서 (1) 기능 - 상품 등록 - 상품 목록 조회 - 상품 수정 (2) 순서 상품 엔티티 개발(비즈니스 로직 추가) -> 상품 리포지토리 개발 -> 상품 서비스 개발, 상품 기능 테스트 이렇게 될 예정이다. 2. 구현 시작. (1) ItemRepository 생성 // ItemRepository.class @Repository @RequiredArgsConstructor public class ItemRepository { private final EntityManager em; public void save(Item item){ if(item.getId() =..