Coding Note
SpringBoot) 블로그 프로젝트_4.yml설정, 테이블 생성 본문
스터디 2일 차
2022.03.17
1. yaml 이란
데이터 전송 파일
기존 사용했던 web.xml, root-context.xml, servlet-context.xml의 합본이라고 생각하면 될 거 같다!
https://www.inflearn.com/questions/16184
jpa:
open-in-view: true
hibernate:
ddl-auto: create
naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
use-new-id-generator-mappings: false
show-sql: true
properties:
hibernate.format_sql: true
ddl-auto
- create - 서버 시작 시마다 DB초기화
- update - 수정 사항만 DB에 반영
- none - DB에 아무런 반영을 하지 않음.
physical-strategy
- - org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
- - 엔티티를 만들 때 변수명 그래도 DB 필드를 만들어 준다.
- - 엔티티를 만들 때 변수명에 언더스코어를 붙여준다. 예) createDate -> create_date
use-new-id-generator-mappings: false
- mysql로 말하면 auto_increment 오라클로 말하면 시퀀스를 어떤 식으로 사용할지 방식을 결정하는 것
- false : jpa가 사용하는 기본 넘버링 전략을 따라가지 않는다는 뜻
- true : 기본 넘버링 전략을 따라간다는 뜻
2. Blog 테이블 만들기(User/Blog/Reply)
user, board. reply 테이블 생성
- User
- Board
- Reply
+ 연관관계 주인
- FK를 가진 오브젝트
- FK를 누가 가졌는가!!!
https://ict-nroo.tistory.com/127
+ Json(공용어)
- 데이터 통신을 위한 중간 데이터
- 통신 시 : 자바 오브젝트 -> JSON
- 응답 시 : JSON -> 타 언어
Why. 왜 사용할까?
- 효율적으로 언어 번역을 하기 위함!
3. 회원가입
- 회원가입
//http://localhost:8000/blog/dummy/join
//http의 body에 username, password, email 데이터를 가지고 요청함
@PostMapping("/dummy/join")
public String join(User user) {//key=value 약속된 규칙
System.out.println("username:" +user.getUsername());
System.out.println("password:" +user.getPassword());
System.out.println("email:" +user.getEmail());
userRepository.save(user);
return "회원가입이 완료 되었습니다.";
}
}
- role null값 not null
user.setRole(RoleType.USER);
+ postman - xxx~
-> 데이터가 마인 타입으로 전송됨
key=value&key=value
- 페이징 처리
//페이징 처리
//페이지당 2건에 데이터를 리턴받아 볼 예정
//http://localhost:8000/blog/dummy/user
@GetMapping("/dummy/user")
public List<User> pageList(@PageableDefault (size=2, sort="id", direction = Sort.Direction.DESC) Pageable pageable) {
Page<User> pagingUser = userRepository.findAll(pageable);
List<User> users = pagingUser.getContent();
return users;
}
- 페이징 결과
꿀팁!!
브라우저에서 json형식으로 가독성 있게 볼 수 있도록 JSONView 설치하기
- 수정
@Transactional //함수 종료시 자동 commit됨
@PutMapping("/dummy/user/{id}")
public User updateUser(@PathVariable int id, @RequestBody User requestUser) {//json 데이터를 요청 => Java Object(MessgeConverter의 Jackson라이브러리가 변환해서 받아줌!-@RequestBody)
System.out.println("id :"+id);
System.out.println("password :"+requestUser.getPassword());
System.out.println("email :"+requestUser.getEmail());
//Update문에 save 사용 잘 안함. - null
//이럴경우 람다식으로 처리
User user = userRepository.findById(id).orElseThrow(()->{//영속화
return new IllegalArgumentException("수정에 실패하였습니다.");
});
user.setPassword(requestUser.getPassword());
user.setEmail(requestUser.getEmail());
//userRepository.save(user);
//더티 체킹 @Transactional
return user;
}
//람다식
User user = userRepository.findById(id).orElseThrow(() -> { //익명 처리 가능
return new IllegalArgumentException("해당 유저는 없습니다.");
});
return user;
}
@Transactional
@Transactional 선언하면 save 선언 안 해도됨
- 더러운 조각? 찌꺼기를 날림...
- DB: 모아두었다가 한꺼번에 커밋하는 것
- JPA : 변경 감지되면 DB를 수정해줌
영속성 컨텍스트와 더티 채킹
flush : 메모리에 꽉 찬 데이터를 더 큰 데이터에 옮기고 기존 데이터를 비운다.
=> 프로그래밍에서 버퍼를 비운다고 함.
- 삭제하기
- if문을 사용하여 등록 Id가 없을 경우 "삭제 실패"
id: 1이 삭제된 걸 확인할 수 있다!!
'SpringBoot > 블로그만들기PJ' 카테고리의 다른 글
SpringBoot) 블로그 프로젝트_6.부트스트랩을 이용한 화면 구현 (0) | 2022.03.17 |
---|---|
SpringBoot) 블로그 프로젝트_5.JSON 통신 이론 (0) | 2022.03.17 |
SpringBoot) 블로그 프로젝트_3.Git (0) | 2022.03.16 |
SpringBoot) 블로그 프로젝트_2.MySQL (0) | 2022.03.16 |
SpringBoot) 블로그 프로젝트_1.환경설치 (0) | 2022.03.16 |