오늘 할 일
🐢 코드 스테이츠 47일차
[Spring MVC] JDBC 기반 데이터 액세스 계층
- Daily Coding
- Spring Data JDBC 기반의 도메인 엔티티 및 테이블 설계
- Spring Data JDBC를 통한 데이터 액세스 계층 구현
다른거
- 1일 1커밋
- 복습
오늘 배운 것
😐 [Spring MVC] JDBC 기반 데이터 액세스 계층
Spring Data JDBC 기반의 도메인 엔티티 및 테이블 설계
- 엔티티와 테이블을 설계하고, 관계별로 코드를 작성하는 방식을 선택한다.
애그리거트 객체 매핑 규칙
- 모든 엔티티 객체의 상태는 애그리거트 루트를 통해서만 변경할 수 있다.
- 하나의 동일한 애그리거트 내에서는 엔티티 간에 객체로 참조한다.
- 애그리거트 루트와 애그리거트 루트 간의 엔티티 객체 참조는 Id를 이용하여 참조한다.
- 1대1 또는 1대 N이면 AggregateRefence 클래스를 사용해서 Id를 참조해주면 된다.
- N대N의 경우는 우선 1대N, N대1 관계로 변경해주고 1대N, N대1의 관계를 중간에서 Id를 참조하게 해주는 클래스를 통해 1대N대1 관계로 만들어 준다.
엔티티 구현
- @Id 애너테이션을 사용하여 식별자를 지정할 수 있다.
- @Table 애너테이션을 붙이면 이름을 설정해줄 수 있다. 기본적으로 클래스명과 테이블 이름이 매핑되지만 예약어와 같은 이름의 테이블을 사용하게 되는 경우, @Table("ORDERS") 같은 형태로 바꿔줄 수 있다.
- @MappedCollection 애너테이션은 엔티티 클래스 간에 연관 관계를 맺어주는 정보를 의미한다. idColumn의 경우 자식 테이블에 추가되는 외래키에 해당하는 컬럼명을 지정한다. keyColumn의 경우 외래키를 포함하고 있는 테이블의 기본키 컬럼명을 지정한다.
리포지토리(Repository)
- 데이터 액세스 계층에서 데이터베이스와 상호작용하는 역할을 하는 인터페이스를 리포지토리라고 한다.
- CrudRepository 인터페이스를 통해서 편리하게 데이터를 데이터베이스의 테이블에 저장, 조회, 수정, 삭제할 수 있다.
쿼리 메서드(Query Method)
- 쿼리 메서드를 이용해서 SQL 쿼리문을 사용하지 않고 데이터베이스에 질의를 할 수 있다.
- find + By + SQL 쿼리문에서 WHERE 절의 컬럼명 + (WHERE 절 컬럼의 조건이 되는 데이터) ’ 형식이며, WHERE 절의 조건 컬럼을 여러 개 지정하고 싶다면 ‘And’를 사용하면 된다.
- 예시(EMAIL 컬럼과 NAME 컬럼을 조건으로 지정) - findByEmailAndName(String email, String name)
- findBy + 이름 형태에서 이름은 반드시 엔티티 클래스의 멤버 변수명을 적어주어야 한다.
다른거
- 1일 1커밋
프로그래머스에서 Lv.0 치킨 쿠폰을 풀었습니다. 생각보다 로직을 간단하게 만들기 어려웠습니다. 서비스 치킨을 시켜도 쿠폰을 주는 보기 드문 착한 치킨집임을 기억하셔야 문제에 대한 로직을 정확하게 구현할 수 있습니다. 재귀로 해보고 싶어서 재귀로도 해봤습니다. 탈출조건을 이상하게 걸어서 한참 헤메다가 고치고 풀었습니다…
Programmers 치킨 쿠폰
GitHub - chaning49/algorithm: 코딩테스트를 위한 알고리즘 공부
코딩테스트를 위한 알고리즘 공부. Contribute to chaning49/algorithm development by creating an account on GitHub.
github.com
느낀점
- 너무나도 방대한 양의 내용을 배워서 정신이 없었다. 사실 나중에 가서는 뭔지 모르고 코드를 따라 적은 것 같은데, 주말동안 다시 봐야 조금이나마 이해할 수 있을 듯하다.
- 쉬운 문제같이 생겨도 방심하지 말고 꼼꼼하게 푸는 습관을 들이자!
- 이번주는 잠을 거의 못자서 운동을 많이 못했다. 주말에 푹 쉬고 컨디션을 끌어올려야겠음!! 무리하면 다침!!
내일 할 일
- 1일 1커밋
- 복습
'TIL' 카테고리의 다른 글
TIL_20221030 (0) | 2022.10.30 |
---|---|
TIL_20221029 (0) | 2022.10.29 |
TIL_20221027 (0) | 2022.10.27 |
TIL_20221026 (0) | 2022.10.26 |
TIL_20221025 (2) | 2022.10.25 |