목록전체 글 (261)
당니의 개발자 스토리
엔티티 클래스 개발2 이어서 이제 Category를 볼게요. 엔티티를 보면, Item과 다대다 관계고, parent랑 child가 있습니다. 이거는 계층 구조를 이렇게 나타낼 수 있다, 맵핑할 수 있다는 걸 여러분들께 보여드리려고 제가 넣어놨습니다. 이제 가끔 JPA 질문을 올리시면서 뭐 Category 같은 계층 구조는 어떻게 해야 돼요? 물어보시거든요. 그러니까 다른 거를 맵핑하는 거는 해봤는데 자기 자신을 셀프로 맵핑하는 거는 안 해보셨을 것 같아요. 사실 하는 방식은 관계형 DB랑 똑같거든요. 자 그리고 db를 보시면, 다대다 맵핑이기 때문에 CATEGORY_ITEM이 나오고 이 구조를 딱 만들 거에요. 자 해보겠습니다. Category 클래스를 만들어주겠습니다. 여기까지 했습니다. 이젠 익숙하죠..
엔티티 클래스 개발1 안녕하세요 이번 시간에는 엔티티 클래스를 실제 코딩을 하면서 개발을 한번 해보겠습니다. 여기에 만들었던 회원 엔티티를 설계한 것을 실제 코드로, 라이브 코딩으로 녹이는 것을 보여드릴게요. 우선 참고적으로 예제에서는 최대한 설명을 쉽게 하기 위해서 엔티티 클래스에 Getter랑 Setter를 모두 다 열어둘 거에요. 그래서 최대한 단순하게 설계를 할 겁니다. 그런데 실무에서는 가급적이면 Getter는 열고 Setter는 꼭 필요한 경우에만 사용하시는 것을 추천드려요. 우선 하나 만들고 설명을 이어갈게요. 우선 여기다가도 domain이라는 패키지를 만들게요. 여기에 이제 핵심 엔티티들을 쭉 넣을 겁니다. 우선 먼저, 기존의 Member 클래스를 지우고 다시 할게요. domain 에다가 ..
도메인 모델과 테이블 설계 이번 시간에는 도메인 모델과 테이블을 설계해 보겠습니다. 먼저 회원은 여러 상품을 주문할 수 있단 말이에요. 그래서 회원과 주문의 관계는 이제 일대다의 관계구요. 그리고 회원이 한번 주문할 때 여러 개의 상품을 주문할 수 있거든요. 한번 주문할 때 여러 개를 주문할 수 있고, 상품도 여러 주문에 담길 수 있기 때문에 회원과 상품은 다대다 관계가 됩니다. 하지만 이런 다대다 관계는 관계형 데이터베이스는 물론이고 엔티티에서도 거의 사용하지 않습니다. 따라서 그림처럼 주문상품이라는 엔티티(Entity는 JPA에서 테이블에 대응하는 하나의 클래스라고 생각하면 됩니다. 즉, 테이블이죠.)를 추가해서 다대다 관계를 일대다, 다대일 관계로 풀어낸 겁니다. 사실 여기 주문상품 안에 주문 수량..
요구사항 분석 안녕하세요. 이번 시간에는 도메인을 한번 분석 설계를 해보겠습니다. 먼저 요구사항이 뭔지 알아야 되겠죠. 그리고 요구사항을 이해한 걸 바탕으로 도메인 모델과 테이블을 쭉 설계를 하고 그 다음에 설계된 걸 바탕으로 엔티티 클래스들을 개발해야 되겠죠. 그리고 마지막으로 엔티티 클래스를 설계할 때 주의점에 대해서 정리를 해드리면 될 것 같습니다. 자 먼저 이번 시간에는 딱 요구사항을 분석하는 것만 있는데요. 굉장히 간단한 쇼핑몰입니다. 먼저 동작하는 걸 한번 보여드릴게요. 자 Hello Shop이라고 하는 쇼핑몰인데, 이 쇼핑몰은 일단 회원에 대해서 기본적으로 회원가입을 하고 회원 목록을 볼 수가 있습니다. 그리고 이제 상품을 등록하고, 등록된 상품을 볼 수 있고요. 마지막으로 회원과 상품을 엮..
JPA와 DB 설정, 동작확인 이번 시간에는 JPA와 데이터베이스를 설정하고 실제 동작하는지 확인해 보겠습니다. 먼저 IntelliJ로 돌아가서 application.properties를 지우고, 저는 YAML을 좋아해서 application.yml 파일을 만들겠습니다. .properties를 쓰던가 yaml을 쓰던가 둘 중에 하나를 선택하시면 되는데 설정파일이 많아지고 복잡해지면 저는 yaml이 더 낫더라구요. 자 그래서 이제 먼저 세팅을 해야 되겠죠. datasource 부터 설정을 할 건데, datasource란 DB와 관계된 커넥션 정보를 갖고 있으며, 빈으로 등록하여 인자로 넘겨줍니다. 이 과정을 통해 Spring은 datasource로 DB와의 연결을 획득합니다. 그래서 datasource로 ..
빌드하고 실행하기 이제 빌드를 해서, 실제 실행할 수 있는 파일을 한번 만들어보겠다. 이거는 이제 인텔리제이 id 안에서 실행을 한 거고, 이걸 꼭!!! 꺼야된다. 즉, 서버를 꼭 꺼야된다. 안 그러면 오류생긴다. 그리고 터미널로 들어가자. 끄고나서, study라는 폴더에 hello-spring 들어가서 빌드를 할거다. 내 컴퓨터에서는 이렇다.빌드는 그냥 쉽다. ./gradlew build 엔터하면, 필요한 라이브러리들을 다운 받기도 하고, 빌드가 된다. 이제 build 폴더가 생기면, build 폴더에 들어가서 libs에 들어가면, 파일이 만들어져있다. java는 어떻게 실행시키냐면, java -jar hello-spring-0.0.1-SNAPSHOT.jar 하면, 스프링이 뜬다. 이제 웹사이트에 다시..
View 환경설정 에러 페이지 말고 뭐라도 동작하도록 페이지를 만들어볼 거다. 제일 먼저 가장 간단한 welcome page 만들어보자. 스프링 부트는 resouces라는 폴더에 있는 static에다가 index.html을 넣어주면, 얘를 welcome 페이지로 해준다. welcome page는 그냥 도메인(웹 주소)만 누르고 들어왔을 때의 첫 화면이다. 어떻게 하냐면, static이라고 하는 정적 페이지에 이라고 만들어주면, 이게 welcome page가 된다. 우리는 프론트가 아니니까 복붙을 하겠다. 이렇게 한 다음 서버를 껐다가 다시 켜보겠다. hello를 눌러보면 아무것도 없으니까 에러페이지가 뜰 것이다. 페이지 소스를 봐도 그대로다. 어쨌든, 홈 화면, welcome page가 잘 된 것을 볼 ..
라이브러리 살펴보기 build.gradle에서는 우리가 당겨온 라이브러리들이 보인다. 세 가지밖에 없다. 그런데 실제 라이브러리, External Libraries 라고 이게 이제 당겨온 라이브러리들인데, 얘를 열어보면 엄청 많다. 내가 댕겨온 적 없는 라이브러리들이 죄다 댕겨져 왔다. 왜 그러냐면, 요즘에는 웹 애플리케이션을 만들려면 이 정도는 기본적으로 땡기고 시작을 해야되는거다. 이게 뭐냐면, Maven이나 Gradle 같은 build tool들은 의존관계를 다 관리해준다. 무슨 소리냐면, 내가 spring-boot-starter-web을 땡겨오면, spring-boot-starter-web한테 필요한 라이브러리들이 의존관계에 의해서 알아서 당겨와지는 거다. 즉, 이 프로젝트는 쓰려면 스프링 웹과 ..