티스토리 뷰
이제 기존에 MyBatis와 같은 쿼리 매퍼를 사용 했다면 dao 패키지를 떠올리겠지만
, dao 패키지와는 조금 결이 다르다고 생각하면 된다.
그간 xml에 쿼리를 담고, 클래스는 오로지 쿼리의 결과만 담던 일들이 모두 아래에 도메인 클래스라고 불
리는 곳에서 해결된다고 한다.
packages

PostsClass

어노테이션 정리
JPA어노테이션
- @Entity : 테이블과 링크될 클래스임을 나타낸다.
- 특이사항 : 웬만하면 Entity의 PK는 Long Type의 Auto_increment를 추천한다고 한다.
- @GeneratedValue : PK의 규칙을 나타낸다.
- @Column : 테이블의 컬럼을 나타내며 굳이 선언하지 ㅇ낳더라고 해당 클래스의 필드는 모두 컬럼이 된다.
Lombok
- @NoArgConstructor : 기본생성자 자동 추가
- @Getter : 클래스 내 모든 필드의 Getter 메소드를 자동생성
- @Bulider : 해당 클래스의 빌더 패턴 클래스를 생성
서비스 초기 구축 단계에선 테이블 설계가 빈번하게 변경되는데, 이때 롬복의 어노테이션들은 코드 변경
량을 최소화시켜 주기 때문에 적극적으로 사용한다.
이 Class의 특징은 Setter를 두지 앟는다고 한다.
자바빈 규약을 생각하면서 Getter와Setter를 무작정 생성하는 경우가 있는데
이렇게 되면 해당 클래스의 인스턴스 값들이 언제 어디서 변해야하는지 코드상으로 명확하게 구분할 수가 없어, 차후 기능 변경 시 정말 복잡해 진다고 한다.
- PostRepository Interface

보통 iBatis나 MyBatis 등에서 Dao라고 불리는 DB Layer 접근자이다.
JPA에선 Repository라고 부르고 안터페이스로 생성한다고 한다.
생성 후에, JpaRepository<Entity Class, PK Type>을 상속하면 기본적인 CRUD 메소드거 자동으로 생성
된다.

이제 테스트 클래스를 만들고 잘 처리가 되는지 확인해야 한다.

어노테이션 확인
1. @After
- Junit에서 단위 테스트가 끝날 때마다 수행되는 메소드를 지정
- 보통은 배포 전 전체 테스트를 수행할 때 테스트 간 데이터 침범을 막기 위해 사용 한다.
- 여러 테스트가 동시에 수행 되면 테스트용 데이터베이스인 H2에 데이터가 그대로 남아 있어 다음 테스트
실행 시 테스트가 실패 할 수 있다.
2. postRepository.save
- 테이블 posts에 insert/update 쿼리를 실행 한다.
- id값이 있다면 update가 , 없다면 insert 쿼리가 실행된다.
3. postsRepository.findAll
- 테이블 posts에 있는 모든 데이터를 조회해오는 메소드이다.
이제 실행을 해보면 테스트는 정상적으로 수행된다.

여기서 추가로 쿼리들을 보고 싶다면 application.properties file에 넣어줘야 한다.
이렇게 설정 한 뒤 다시 실행하면 해당 쿼리가 아래처럼 나온다.

'Framework > Springboot' 카테고리의 다른 글
JPA로 등록/수정/조회 API 만들기 (0) | 2023.07.18 |
---|---|
JWT(Json Web Token)완전 정복 (0) | 2023.06.28 |
머스테치로 화면 구성하기 (0) | 2023.06.19 |
- Total
- Today
- Yesterday
- 청도 미나리
- spring
- SQL
- json
- 비양도 위치
- JWT 완전정복
- 비양도 후기
- RDBMS
- 정규화
- 솔루션
- db
- 비양도 리뷰
- Deadlock
- CentOS
- 코딩테스트
- 코테
- Oracle
- Query
- 배포자동화
- SpringBoot
- mysql
- API
- 청도 미나리 식당
- JPA
- jenkins
- Java
- 알고리즘
- 배포
- 젠킨스
- SQLD
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |