[1주차] 인프런 워밍웝 클럽 Backend

[1주차] 인프런 워밍웝 클럽 Backend

인프런 워밍업 클럽 스터디 3기 -백엔드 프로젝트(Kotlin) 1주차 발자국 입니다.

 

강의내용 간단한 정리

 

웹 서비스를 구현하는 요소

클라이언트 : 요청하는 주체

서버: 응답하는 주체

데이터베이스: 데이터의 집합

 

프레임워크 vs 라이브러리

프레임워크는 특정 구조를 제공하는 개발의 뼈대이고, 라이브러리는 특정 기능을 수행하는 코드 집합이다.

프레임워크와 라이브러리의 차이는 제어의 역전에 있다.

프레임워크가 코드 실행 흐름을 제어(필요한 부분 작성) 하고 라이브러리는 개발자가 필요할 때 호출해서(개발자 주도적 호출) 사용한다.

Spring Framework

Spring Framework는 Java기반의 웹 애플리케이션 프레임워크이다.

기본적으로 MVC 패턴을 가지고 있다.

  • Model: 데이터를 담습니다. Controller는 데이터를 넣고,

  • Views는 데이터를 꺼내올 수 있습니다.

  • View: 사용자에게 보여지는 화면을 담당합니다. Model에서 데이터를 꺼내올 수 있습니다. Controller: 요청을 받아 작 업을 수행합니다. 작업의 결과 데이터를 Model에 넣을 수 있습니다

스프링 Bean과 의존성 주입(Dependency Injection)

Bean은 Spring 컨테이너가 관리하는 자바 객체이다.

객체를 직접 생성해서 사용하는 게 아니라 Spring컨테이너가 객체를 생성하고 관리한다.

 

HTTP

HTTP는 클라이언트와 서버 간 데이터를 주고받는 프로토콜이다.

HTTP메서드로는 GET, POST, PUT, PATCH, DELETE 있고,

그에따른 응답코드를 보내준다.

 

REST API

REST는 자원을 URL로 표현하고, HTTP 메서드를 활용해 상태를 변경하는 방식

-URL을 이용한 자원의 표현

-URL만으로 어떤 자원에 대한 요청인지 이해할 수 있게 합니다.

-HTTP 메서드를 이용한 행위의 표현

-CRUD에 부합하도록 적절한 HTTP 메서드를 사용하여 요청이 어떤 행위를 할 것인지 파악할 수 있게 합니다.

 

JPA

JPA는 Java에서 ORM기술을 사용하는 표준 인터페이스이다.

JPA는 직접 SQL을 작성하지 않고, 객체와 테이블을 자동으로 매핑한다.

데이터를 객체지향 관점에서 접근 할 수 있다.

성능에 대한 단점이 발생할 수 도 잇다.

 

트랜잭션

여러 개의 데이터베이스 작업을 하나로 묶어주는 논리적인 단위이다.

트랜잭션은 모든 작업이 성공해야 최종적으로 반영되며, 하나라도 실패하면 전체가 롤백 되는 원칙을 따른다.

 

Git

가장 많이 사용되는 분산 버전 관리 시스템이다.

Git으로 관리할 시 커밋 메세지를 남긴다.

버전을 관리 할 때 feature로 나누고 커밋 컨벤션을 따르기도 한다.

 

 

실습

JPA를 사용하므로 Repository 패턴을 사용한다.

interface AchievementRepository:JpaRepository<Achievement ,Long> {

}

JpaRepository는 interface를 사용한다.

 

@Entity
class ProjectSkill(
        project : Project,
        skill : Skill
):BaseEntity() {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name ="project_skill_id")
    var  id : Long?= null;

    @ManyToOne(targetEntity =Project::class, fetch = FetchType.LAZY )
    @JoinColumn(name ="project_id", nullable = false)
    var project : Project = project

    @ManyToOne(targetEntity =Skill::class, fetch = FetchType.LAZY )
    @JoinColumn(name ="skill_id", nullable = false)
    var skill : Skill = skill

}

@Entity : JPA 엔티디를 선언한다.

@Id : 테이블의 기본키를 선언한다.

@GeneratedValue : Id생성 전력을 선언한다. 다양한 전략이 있다.

@Column : 테이블 컬럼에 대응함

@OneToMany : 일대다 관계를 정의한다.

@ManyToOne : 다대일 관계를 정의한다.

 

회고

전체적으로 기본적인 내용이라 이론을 공부하는 느낌이었다.

Kotlin이 처음이다 보니 어색한 부분도 많았다. 다음부터는 실습과 직접 코드로 구현해 보는 것을 해야겠다.

 

 

댓글을 작성해보세요.

채널톡 아이콘