ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL 50th day
    TIL(Today I Learned) 2021. 12. 11. 17:42

    @Transactionnal

    • Test 케이스에 존재하면 테스트가 끝난 후에 롤백을 해서 DB에 남기지 않는다.
      • 반복적인 테스트를 위해

    @Rollback(false)

    • transactional에 의해 롤백되는것을 막아주는 어노테이션
      • 저장이 잘되는지 확인하는 목적

    PersistenceContext

    • 실제로는 DB에 저장하는것이 아니라 영속성Context를 통해서 Entity를 영속화한다는 의미이다.
      • 따라서, 영속성컨텍스트를 통해 만들어진 데이터는 save한 데이터와 같게된다.
      • 예) 아래 코드
      • 자세한건 추후에 다루도록 한다.
    // JpashopApplicationTests
    assertThat(findMember).isEqualTo(member); // 결과 true

    springboot 라이브러리 세팅

    • 스프링부트가 지원하는 내부 라이브러리들은 스프링부트에 적합한 버전으로 끌어온다
      • 하지만, 스프링부트가 지원하지 않는 외부라이브러리들은 사용자가 직접 버전을 명시해줘야한다.
      • 예) 아래 코드
    //build.gradle
        implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'

    p6spy

    • 데이터베이스 데이터를 로그에 남겨주는 configuration
    • 외부라이브러리
    • 버젼 명시가 필요
    • 개발 단계에서는 사용하는것이 좋지만 배포 단계에서는 성능테스트가 이뤄져야한다.(성능에 영향을 미친다면 제외하는것이 좋다.)

    엔터티 양방향, 단방향(연관관계 주인 설정)

    • 엔터티를 객체지향적으로 설계할 때는 단방향으로 설계하는것이 바람직하다.
    • 만약 양방향으로 설계했다면 연관관계의 주인을 정해야하는데, 외래 키가 있는 주문을 연관관계의 주인으로 정하는 것이 좋다.
      • 일반적으로 일대다에서 '다'에 외래키가 존재한다.
      • 자동차와 바퀴의 연관관계를 구분지을 때, 바퀴가 '다'이므로 연관관계의 주인으로 설정하는것이 바람직하다
        • 만약 자동차를 주인으로 결정하면 관리하지 않는 바퀴 테이블 외래 키 값이 업데이트 되므로 관리와 유지보수가 어렵고, 추가적으로 별도의 업데이트 쿼리가 발생하는 성능문제도 있다.

    ER 모델

    • Entity-Relationship model(ER 모델)은 데이터베이스를 디자인 하기 위해 이용되는 모델링 기법으로, 데이터베이스에 대한 요구 사항을 그래픽적으로 표현하는 방법이다. ER 모델은 특정 DBMS 및 하드웨어에 독립적으로 데이터베이스 구조를 나타낼 수 있다.(데이터베이스에 저장되는 데이터들을 추상화하여 나타내기 때문에)

    매핑 테이블

    • 매핑 테이블은 각 테이블의 PK를 외래 키로 참조하는 테이블로 값 집합을 저장할 때 주로 사용된다.
      • 예) 카테고리가 하나일 때 제품이 여러개일 수 있고, 제품마다 여러개의 카테고리를 가질 수 있다. 따라서 PK가 두개인것이다.(카테고리와 제품 이름) 때문에, 1대다의 성질을 갖는 매핑 테이블을 생성해서 이 문제를 해결할 수 있다.

    'TIL(Today I Learned)' 카테고리의 다른 글

    TIL 52th day  (0) 2021.12.13
    TIL 51th day  (0) 2021.12.12
    TIL 49th day  (0) 2021.12.10
    TIL 48th day  (0) 2021.12.09
    TIL 47th day  (0) 2021.12.08
Designed by Tistory.