![[인프런 워밍업 클럽 3기] 1주차 발자국](https://cdn.inflearn.com/public/files/blogs/37105a3a-852f-4349-9518-c7b0ae325dd8/인프런워밍업클럽.png)
[인프런 워밍업 클럽 3기] 1주차 발자국
이번주 학습 내용
웹 기본 개념
3-tier-architecture
클라이언트 / 서버 / 데이터베이스
웹 프레임워크와 Spring Framework
프레임워크를 사용하면 웹 개발에 필요한 공통적인 기능들을 편리하게 구현할 수 있다
디자인 패턴
MVC 패턴
Model: 데이터를 담는 역할
View: 사용자에게 보여지는 화면 담당
Controller: 사용자의 요청과 응답을 처리
레이어드 아키텍처 (layerd-architecture)
Controller: 클라이언트 요청과 응답을 처리
Service: 비즈니스 로직에 맞게 데이터 처리
Repository: 데이터베이스에 접근하여 데이터 요청
스프링 프레임워크 의존성 주입
생성자 주입
생성자가 호출될때 주입
setter 주입
setter 메서드를 호출하여 주입
필드 주입
필드에 @Autowired 사용
코틀린 문법
class Table(
// 주생성자
// 주생성자의 파라미터와 프로퍼티를 지정한다.
var arg: String,
val arg2: Int
) {
// 프로퍼티
var arg3: String
}
JPA
@Entity
테이블과 매핑할 클래스를 지정하며, JPA가 관리한다.
기본 생성자를 필수로 한다.
@GenerateValue
키 생성 전략
IDENTITY 전략
기본 키 생성을 데이터베이스에 위임하는 전략 / MySQL, PostgreSQL, SQL Server, DB2에서 사용한다.
insert 후 기본키를 받아올 수 있다. 데이터베이스와 1번 통신한다.
SEQUENCE 전략
데이터베이스의 유일한 값을 순서대로 생성 / 시퀀스를 지원하는 DB에서 사용이 가능하다. Oracle, PostgreSQL
시퀀스를 조회 후 / insert를 실행하기 때문에 데이터베이스와 2번 통신한다.
TABLE 전략
키 생성 전용 테이블을 생성하여, 마치 데이터베이스의 시퀀스를 사용하는 것처럼 할 수 있다.
테이블만 생성하면 모든 데이터베이스에서 사용이 가능하다.
@Enumlated
enum 타입을 매핑할 때 사용한다.
EnumType.ORDINAL : enum의 순서를 저장한다.
EnumType.STRING : enum의 이름을 저장한다.
ORDINAL을 사용할 경우 순서가 바뀌면 데이터의 정합성이 깨질 수 있기 때문에 되도록 STRING 사용을 권장한다.
@MappedSuperclass
@Entity는 실제 테이블과 매핑되지만 @MapperSuperclass는 실제 테이블과 매핑되지 않는다. 단순하게 매핑정보를 상속하는 목적으로 사용된다.
왜 abstract class로 지정할까??
abstract class가 아닌 일반 class로 지정하여도 동작에는 문제는 없어서 왜 abstract class로 지정하는지 찾아보니 MappedSuperclass는 매핑 정보만 제공하려는 목적이기 때문에 해당 클래스를 직접 생성해서 사용하는 일은 없으므로 abstract class로 지정한다고 한다.
이번주 미션 진행
회고
직장, 운동, 공부를 병행 하려니까 시간 분배가 쉽지 않은 것 같습니다😢
생각보다 미션과 발자국이 제출해야 하는 마감일이 있어 다음주는 출퇴근 시간에 강의를 들으려고 합니다.
코틀린과 JPA도 처음 사용하다보니 모르는 것이 많아서 정리하는 시간이 소요되는 것 같아 궁금한 부분은 그때그때 정리해 두려고 합니다.
무사히 완주하는 것을 목표로 달리겠습니다!
댓글을 작성해보세요.