1편
이번 시간엔 SpringBoot & JPA로 간단한 API를 만들기를 따라 할거다.
분량이 많아 1편 2편을 나누기로 한다.
Tip) |
라고 한다. spring 과 mybatis를 사용해 보진 않았지만 spring을 사용하는 si 업체들에서 아직도 많이 사용하고 있는 듯 하다. (지인 피셜)
하지만 난 spring이 처음이라 jpa를 사용해 보기로 마음먹었다. 생산성을 높여주는 새로운 기술을 써보는게 좋지않겠나 싶다.
1. 도메인 코드 만들기
domain/posts 패키지와 posts 클래스, postsRepository 인터페이스를 만들어 줬다.
그리고 Posts.class 를 다음과 같이 작성해줬다.
Posts.class
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Entity
public class Posts {
@Id
@GeneratedValue
private Long id;
@Column(length = 500, nullable = false)
private String title;
@Column(columnDefinition = "TEXT", nullable = false)
private String content;
private String author;
@Builder
public Posts(String title, String content, String author) {
this.title = title;
this.content = content;
this.author = author;
}
}
@Entity 어노테이션에서 에러가 났다.
프로젝트 생성할 때 jpa 설정을 빼먹었나 보다.
bulid.gragle 에 아래 코드를 추가해주고 update 해준다.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
jpa는 디비와 연동을 쉽게 할수 있는 모듈이다.
보통 디비 작업을 변경하려면 쿼리를 수정하는 경우가 많은데 jpa는
이 Entity 클래스를 변경해준다고 한다. (간편할거같다.)
- @Entity
- 테이블과 링크될 클래스임을 나타냅니다.
- 언더스코어 네이밍(_)으로 이름을 매칭합니다.
- ex) SalesManager.java -> sales_manager table
- @Id
- 해당 테이블의 PK 필드를 나타냅니다.
- @GeneratedValue
- PK의 생성 규칙을 나타냅니다.
- 기본값은 AUTO 로, MySQL의 auto_increment와 같이 자동증가하는 정수형 값이 됩니다.
- 스프링 부트 2.0에선 옵션을 추가하셔야만 auto_increment가 됩니다!
- @Column
- 테이블의 컬럼을 나타내면, 굳이 선언하지 않더라도 해당 클래스의 필드는 모두 컬럼이 됩니다.
- 사용하는 이유는, 기본값 외에 추가로 변경이 필요한 옵션이 있을경우 사용합니다.
- 문자열의 경우 VARCHAR(255)가 기본값인데, 사이즈를 500으로 늘리고 싶거나(ex: title), 타입을 TEXT로 변경하고 싶거나(ex: content) 등의 경우에 사용됩니다.
이 정도 어노테이션만 있어도 테스트 웹사이트를 구축해보는데 무리가 없을 것 같다.
더 필요한 기능들은 그때그때 찾아보는게 좋겠다.
(@NoArgsConstructor, @Getter, @Builder) 이런 것들을 찾아보면 도움이 많이 될것 같다.
Tip)
PK를 그냥 row_stamp로 관리하는게 좋다는 뜻인거 같다. 나중에 참고해야지.. |
'플랫폼 > 스프링 프레임 워크' 카테고리의 다른 글
스프링 부트 도커 파일 만들기 / docker/ spring boot / intelly j / jib / jar / gradle (0) | 2020.03.25 |
---|---|
[스프링 부트] war / jar 차이 (java) (0) | 2020.03.25 |
[1] 쿠팡 api 프로젝트 / 적용 테스트 (스프링 부트 / 자바 ) (0) | 2020.02.02 |
1. Github 프로젝트 생성&SpringBoot & Gradle [스프링부트로 웹 서비스 출시하기] (0) | 2019.12.23 |
스프링 부트 프로젝트 생성하기 (0) | 2019.12.13 |
댓글