실행결과 : save를 통한 업데이트 실행결과 : createDate와 role이 NULL로 나온다. 원래 save는 insert할 때 사용하는 것이다. 만약 save를 할 때 id값을 넘겨주면 만약 그 id가 데이터베이스에 있다면 그것을 업데이트한다. 그런데 문제는 위 코드에서 password와 email, username만 있기 때문에 다른 값들이 NULL로 변해버리는 문제가 발생한다. 따라서 업데이트 할 때는 save를 거의 사용하지 않는다. 만약 save를 통해 업데이트하고 싶다면 코드를 다음과 같이 작성하면 된다. 여기서의 user는 NULL이 없기 때문이다. id==2의 유저를 업데이트 해보겠다. 실행결과 : save 함수는 id를 전달하지 않으면 insert를 하고, id를 전달하면 해당 i..
테이블 데이터 비우고 다시 넣기 우선 테스트를 하기 위해 기존에 저장된 테이블을 비우자 이렇게 저장된 테이블이 비워진다. ddl-auto를 create로 설정한 다음 부트를 재실행하자 그러면 기존 테이블들이 drop되고 새로 생성된다. 이제 포스트맨에서 값들을 넣어보자 이렇게 값을 전달하고 MySQL Workbench에서 테이블을 확인해보면 값들이 잘 들어간 것을 확인할 수 있다. 이제 데이터가 지워지지 않게 ddl-auto를 다시 update로 설정한다. selete 테스트 그럼 이제 DummyControllerTest.java에서 select 코드를 작성해보자 Optional이란? Optional는 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, 참조하더라도 NPE(NullPointerE..
회원가입을 위한 insert 테스트 DummyControllerTest.java 작성 실행결과 : 실행결과 : 성공적으로 값이 잘 받아진다. 이제 회원가입을 위한 insert 테스트를 진행해보자 우선 UserRepository를 만들자. com.cos.blog.repository 패키지를 만들고 그 곳에 Interface인 UserRepository.java 를 만든다. extends JpaRepository를 한다. JpaRepository에는 User테이블이 들고 있는 모든 행을 다 리턴하는 findAll() 함수가 있다. 또 PagingAndSortingRepository.class에는 정렬을 하거나 페이징을 해서 받는 등의 함수가 있다. 따라서 이런 함수들을 직접 작성하지 않아도 된다. exten..
연관관계 주인은 FK를 가진 오브젝트이다. 자바에선 User오브젝트 데이터베이스에선 User 테이블이 들고있는 것 Board, Reply도 마찬가지이다. 기존의 방식(mybatis 등)에서는 상세보기 페이지를 나타낼 때 User, Board, Reply 이 세 개를 join해서, select해서 해당 페이지에 데이터를 다 들고오게된다. select * from Board where Id = 1; 그런데 ORM을 사용하게 되면 이 Board 테이블만 select하면 된다. 설명하자면, 상세보기 페이지에서 Board만 select해서 요청하면 User정보를 같이 준다. 왜냐면 Board가 User 오브젝트를 들고 있기 때문이다. 현재 Board 오브젝트가 User 오브젝트는 들고 있는데 Reply 오브젝트를..
ORM과 JPA ORM이라는 것은 Java(다른 언어 등) Object를 테이블로 매핑해주는 기술이다. 즉, 내가 오브젝트를 만들면 테이블로 만들어주는 것이다. JPA는 ORM을 사용하기 위한 인터페이스를 모아둔 것이다. JPA를 사용하기 위해서는 JPA를 구현한 Hibernate, EclipseLink, DataNucleus 같은 ORM 프레임워크를 사용해야 한다. User 테이블 생성 우선 com.cos.blog.model 패키지를 만들고 Board, Reply, User 클래스들을 생성한다. User 클래스를 먼저 살펴보자 일단 모든 테이블에는 primary key가 필요하기 때문에 primary key 부터 정의한다. MySQL에서 auto_increment로 넘버링한다. 이렇게 작성했는데, 이 ..
우선 시작 전에, 혹시 sts4에서 jsp나 html 파일을 생성할 수 없는 경우 플러그인을 설치해주어야 한다. 마켓에서 이 플러그인을 설치하면 된다. 이제 yml에 대해 알아보자 내가 기존에 만들던 스프링 레거시 게시판에서는 web.xml, root-context.xml, servlet-context.xml 파일들이 있었다. 하지만 스프링 부트에선 이 세 파일들의 합본으로 application.yml을 사용한다. application.yml server: port: 9090 servlet: context-path: /blog encoding: charset: UTF-8 enabled: true force: true spring: mvc: view: prefix: /WEB-INF/views/ suffix..
lombok 이란? lombok은 Java 라이브러리로, 반복되는 getter, setter, toString 등의 메서드 작성 코드를 줄여주는 라이브러리이다. lombok 설치 및 세팅 우선 maven에서 다운로드 한다. 그리고 설치를 해준다. maven에서 다운받은 lombok 폴더를 연다. 이 폴더 안에서 우클릭을 하고 Git Bash Here를 누른다. $ java -jar lombok-해당버전.jar 명령어를 치고 엔터키를 누르면 위 캡쳐화면과 같이 installer가 뜬다. 사용하고 있는 STS4.exe 파일을 설정해준다. 이제 설치가 완료되었으니 사용해보자 lombok 을 이용한 코드 작성 ※ 코드를 작성하기 전에 스프링 툴을 종료하고 다시 시작한 다음 코드를 작성해야한다! 작성했었던 기존 ..
postman 다운로드 https://www.postman.com/ Postman API Platform | Sign Up for Free Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs—faster. www.postman.com http 요청방식 http 요청 실습1 우선 8080포트 중복에러가 떴는데 실행 중인 포트에 안 잡혀서 9090포트로 바꿔서 접속하기로 했다. application.yml 그리고 com.cos.blog.test 패키지에 HttpCon..