데브 코스/TIL

[TIL] DAY 56

반응형

오늘 할 일

  1. 강의 수강
  2. 특강 참여
  3. 과제 피드백 반영

 

TIL

강의 수강(JPA)

JDBC

  • 자바 애플리케이션은 JDBC API를 이용해 데이터 계층과 통신한다.
  • 과정 : Connection 획득 -> Statement 이용한 질의 -> ResultSet 이용한 질의 결과 사용 -> Statement, Connection 반납
  • 모든 동작을 하나하나 작성해야하기 때문에 하나의 쿼리를 동작시키기 위한 과정이 너무 번거롭다.

 

JDBCTemplate

  • SpringContext 사용하기 위해 @SpringBootTest 사용
  • JDBC Template를 이용해서, 데이터 계층에 접근이 가능하다.
  • 기존 JDBC를 이용했을때의 반복적인 작업을 JDBC Template이 대신 수행해준다.
  • jdbctemplate에 의존성 주입 → 연결이나 statement, resultset 등을 대신 생성한다.
  • 하지만, JDBC와 같이 자바 코드 상에 쿼리문이 있기 때문에 유지보수하기 어렵다는 단점이 있다.

 

MyBatis

  • @Mapper 애노테이션을 사용하는 방법과 xml 파일로 사용하는 방법이 있다.
  • 하지만, 이러한 방식을 객체 패러다임에 불일치가 발생하게 된다.
  • dependency 추가
<!--MyBatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>
  • properties.yaml
mybatis:
  type-aliases-package: com.example.jpa.repository.domain
  configuration:
    map-underscore-to-camel-case: true
    default-fetch-size: 100
    default-statement-timeout: 30
  mapper-locations: classpath:mapper/*.xml

 

 

JPA

  • JPA는 쿼리를 작성하지 않아도 자바 객체 변경을 통해 쿼리를 수행할 수 있다.
  • 테이블이 Entity 클래스로 관리되기 때문에 테이블의 모양과 객체의 모양이 동일하게 매핑된다.
  • 동일성을 유지하며 관리할 수 있다.

 

  • dependency 추가
<!--JPA-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
  • properties.yaml
spring:
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:~/test;
    username: sa
    password:
  jpa:
    generate-ddl:true
		open-in-view:false
		show-sql:true
  • Entity : table 명과 매핑
@Table(name = "customers")
  • JpaRepository
    • 상속받아 Jpa로 지정해준다.
    • <엔티티, primary key>
public interfaceCustomerRepository extends JpaRepository<CustomerEntity, Long> {
}

 

JPA를 사용해야 하는 이유

  • 생산성 증진
    • SQL의 의존적인 개발에서 벗어나 객체 중심으로 생산적인 개발이 가능하다.
  • 객체와 관계형 테이블의 패러다임 불일치
    • 추상화, 상속, 다형성 등을 제공한다.
    • 관계형 DB 중심으로 구조화 되어있으며, OOP의 특징을 지원하지 않는다.
  • JPA가 ORM(Object Relation Mapping)인 이유
    • 객체와 관계형 DB를 매핑시켜주기 때문이다.

 

특강 참여

용어

  • 책을 읽고 공부하는 것보다 주변 사람들과 대화하며 나오는 주제부터 아는 것이 좋다.
  • 용어의 탄생 배경 - 중의적 의미 - 사전적 의미와 예제를 같이 살펴보자!
  • 모두가 아는 예보다는 나만이 설명할 수 있는 예제를 만들자!

 

로드 리뷰

  • 일반 사항이나 예외사항은 팀원들과 같이 진행하고, 보완된 후 멘토님에게 리뷰를 요청하자!
  • 동료 코드와 구글링을 통해 다른 사람들의 코드를 읽는 연습을 하자!

 

자료구조

  • 기본 원리를 먼저 습득하고 나중에 직접 코딩을 해보자!

 

내일 할 일

  1. 강의 수강
  2. 과제 피드백 반영

 

 

느낀 점

JDBC, MyBatis 등을 다시 사용해보니 정리가 되는 느낌이라 좋았다. JPA는 처음 사용해보았는데 객체로 테이블을 매핑해 사용할 수 있다니.. 혁신의 혁신이었다. 왜 여태까지 공부하지 않았는지 모를 정도로 정말 편했다. 이번 주에 열심히 공부해서 꼭 익히고 싶다.

반응형

'데브 코스 > TIL' 카테고리의 다른 글

[TIL] 2021.11.09  (0) 2021.11.11
[TIL] 2021.11.08  (0) 2021.11.11
[TIL] DAY 55  (0) 2021.09.28
[TIL] DAY 54  (0) 2021.09.28
[TIL] DAY 53  (0) 2021.09.27