목록연관관계 (4)
관심쟁이 영호

스프링 공부를 해본 적이 있다면, 누구나 연관관계에 대해서 고민을 해본 적이 있을 것이다. 오늘은 그 연관관계가 어떤 것인지 살펴볼 예정이다. 아래의 그림을 보자. 어떠한 게시판의 게시글의 예시이다. 작성자: 홍길동은 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를 한번더 해..

이제 본격적으로 개발을 시작한다. 이번 강의는 이전 강의에서 분석했던것을 차례대로 개발하는 것이다. 엔티티 클래스 개발이라는 것은 객체 하나하나를 코딩하기 시작한다는 뜻인것 같다. 해보자. 시작하기에 앞서, 예제에서는 모든 클래스에 Getter, Setter를 설정한다. ※ 실무에서는 Getter만 열어두고, Setter는 필요시에만 설정해두는 것을 추천하신다. -> Getter는 조회를 실제로 엄청나게 많이 하기 때문에 열어두는 것이 좋고, Setter는 열어두었다가 데이터가 변경되는 경우가 있어서, 어디서 어떻게 데이터가 바뀌는지 파악하기가 힘들어서 개발장애가 일어나는 일이 있을 수 있다고 하신다. 1. domain pakage 생성 해당 "domain pakage"는 주요 Entity를 모두 넣을 ..