전체 글
-
데이터 무결성 지켜야지, 안 지킬거야??Project Trouble Shooting/[Dotoring] 멘토링 어플리케이션 2023. 8. 7. 12:06
데이터 무결성 데이터의 무결성이란 무엇일까?? 필자가 이해한 바로는 데이터 무결성이란 업무적 무결성 + 데이터베이스에서의 무결성이다. 업무적 무결성이란 애플리케이션 로직 안에서 포함되는 어떠한 제약조건이다. DBMS에서의 무결성이란 데이터베이스에 타입, 관계, 속성등을 정의하여 트랜잭션을 유지시켜주는 최소한의 장치이다. 이번 포스팅에서는 DBMS에서의 무결성에대해서 다뤄보도록 하겠다. 만약, DB에서 데이터 무결성을 설계하지 않을 경우에는 어떠한 일들이 일어날까?? PK를 사용하지 않을 경우 → 테이블에 중복된 데이터 존재 FK를 사용하지 않을 경우 → 부모와 자식 데이터의 논리적인 관계가 깨질 수 있다. 컬럼 제약 조건을 하지 않을 경우 → 기본값, NULL값 등이 비정상적으로 데이터베이스에 존재할 수..
-
식별자, 비식별자 관계는 뭐고 언제 사용해야하는 걸까??Project Trouble Shooting/[Dotoring] 멘토링 어플리케이션 2023. 8. 4. 22:12
도토링 프로젝트를 진행하며 여러 아쉬웠던 점이 있었지만, 그 중 순위권 안에 드는 것은 단연코 설계할 시간이 너무나도 부족했던 것이다. 카카오 테크 캠퍼스와 동아리 프로젝트를 같이 병행하다 보니.. ++ 캡스톤까지 다 변명이야 8월 초에는 도토링의 DB 설계부터 단단히 다져볼 생각이다. 두번째 포스팅할 주제는 식별자와 비식별자 관계이다. 식별자 관계와 비식별자 관계가 무엇인 지 알아보기 이전에 이를 모르고 설계를 진행할 경우 아래와 같은 어려움을 맞이할 수 있다. 식별자 관계만을 이용하여 데이터 모델링을 전개할 경우, PK 속성의 숫자가 증가할 수록 관련된 SQL 구문이 복잡해져 개발 오류가 많아지게 된다. 비식별자 관계만을 이용하면 테이블간의 과다한 조인이 유발되 성능 저하가 올 수있다. 성능 저하 절..
-
엔티티의 통합과 분리의 기준이 뭐야??Project Trouble Shooting/[Dotoring] 멘토링 어플리케이션 2023. 8. 4. 22:06
도토링 프로젝트를 진행하며 여러 아쉬웠던 점이 있었지만, 그 중 순위권 안에 드는 것은 단연코 설계할 시간이 너무나도 부족했던 것이다. 카카오 테크 캠퍼스와 동아리 프로젝트를 같이 병행하다 보니.. ++ 캡스톤까지 다 변명이야 8월 초에는 도토링의 DB 설계부터 단단히 다져볼 생각이다. 이와 관련하여 처음으로 포스팅할 주제는 엔티티 타입의 통합과 분리이다. 엔티티타입의 통합과 분리는 어떤 기준으로 하는 걸까?? ‘아는 만큼 보이는 데이터베이스의 설계와 구축’이라는 책에서는 아래와 같이 말한다. 엔티티타입의 통합과 분리는 단순하게 엔티티타입의 모습만을 보고 결정하는 것이 아니라 분석의 대상이 되는 업무 패턴을 이해한 후에 업무의 트랜잭션의 패턴을 분석한 후에 엔티티의 통합과 분리를 결정하여라! 도토링 프로..
-
OSIV(Open Session In View) default 값을 사용해야할까?스터디/JPA 2023. 7. 31. 00:08
OSIV에 대해 공부하면서, 기본 설정값을 그대로 사용하는 것이 적절한지에 대한 의문이 들었습니다. 이에 관해 정리하여 포스팅을 작성하려고 합니다.OSIV란OSIV는 영속성 컨텍스트를 View 영역까지 열어두는 기능입니다. 즉, View Layer에서도 LazyLoading으로 엔티티를 조회할 수 있다는 말입니다. OSIV ture일 경우 (default) OSIV 전략은 트랜잭션이 시작되는 시점, 즉 최초 데이터베이스 커넥션이 생성될 때부터 API 응답이 완료될 때까지 영속성 컨텍스트와 데이터베이스 커넥션을 유지하는 방식입니다. 이로 인해 View Layer에서 지연 로딩을 활용할 수 있습니다. 또한, View Layer에서는 트랜잭션 범위에 포함되지 않기 때문에 엔티티를 수정해도 쿼리가 발생하지 않습..
-
private 메서드는 트랜잭션 처리를 할 수 없는 이유스터디/Spring 2023. 7. 26. 16:58
의문 private 메서드는 @Transactional을 적용할 수 없다. 뭔가 예상이 가지만 그래도 한번 알아보자!! 먼저 @Transactional 부터 살펴보자! @Transactional 평소에 저희가 자주 사용하는 @Transactional에는 AOP가 적용되어있습니다. 이를 스프링 트랜잭션 AOP라고 합니다. 스프링 트랜잭션 AOP는 @Transactional이 붙여진 메서드가 실행되기 전에 begin을 호출하고 메서드가 종료한 뒤에 commit을 호출합니다! 어떻게 할 수 있는 걸까요?? 답은 프록시입니다!! Spring에는 두가지 프록시 구현체가 있는 데 Springboot에서는 CGLIb를 사용하기 때문에 CGLIb를 기준으로 설명하겠습니다! 아래는 에코노베이션 동아리에서 진행중인 도토링..
-
DTO에 대한 고민스터디/Spring 2023. 7. 17. 10:56
저번 주에는 카카오 테크 캠퍼스 2단계 과제 수행을 기회로 평소 DTO에 관해 고민한 것을 정리해보는 시간을 가졌습니다!! DTO는 Data Transfer Object 즉, 데이터를 전달할 때 사용하는 객체입니다. 먼저, 첫 번째 고민이었습니다.과연 DTO를 사용하면 어떤 이점을 얻을 수 있는 걸까요? 단일 호출 시 여러 매개변수를 일괄처리하여 네트워크의 오버헤드를 줄인다.직렬화의 캡슐화의 이점직렬화된 객체는 외부로부터 데이터를 캡술화하고 보호하는 데 도움이 된다. → 보안 기술 적용하기 좋다.객체를 직렬화함으로써 플랫폼간의 호환성을 높일 수 있습니다.엔티티를 프레젠테이션 레이어에 노출시키지 않을 수 있다. 위의 DTO 이점 중 3번에 대해서는 알고 있었지만, 1번과 2번 장점은 이번에 공부하며 처..
-
토큰을 사용한 인증과 인가스터디/Web 2023. 7. 10. 04:18
https://rasony.tistory.com/148 토큰을 사용하는 이유로그인을 세션으로 구현한다고 하면 주변에서 시선이 느껴지는 경험을 다들 해본 적이 있을 것이다. 그렇다면 쿠키와 세션으로 로그인을 구현하면 도대체 어떤 문제가 발생하길래 다들 이렇게rasony.tistory.com 안녕하세요. 최근에 에코노베이션 동아리 주간발표 시간에 토큰을 활용한 인증과 인가에 대해서 발표하였습니다.이에 대한 내용을 다시 한번 정리해보려고 합니다. AccessToken과 RefreshToken이란? AccessToken은 사용자가 자원에 접근하기 위해서 사용하는 토큰입니다. 그리고, RefreshToken은 기존의 사용자의 AccessToken이 만료되었을 때 재발급 받기 위해 사용됩니다. 즉, AccessT..
-
토큰을 사용하는 이유스터디/Web 2023. 7. 3. 00:57
로그인을 세션으로 구현한다고 하면 주변에서 시선이 느껴지는 경험을 다들 해본 적이 있을 것이다. 그렇다면 쿠키와 세션으로 로그인을 구현하면 도대체 어떤 문제가 발생하길래 다들 이렇게 반응하는 걸까?? 지금부터 쿠키와 세션으로 로그인을 구현하는 방법과 각각의 한계에 대해서 알아보고, 이를 극복할 수 있는 토큰을 사용하여 로그인을 하는 법에 대해서 알아보도록 하겠다. 먼저, 쿠키를 사용하는 방식이다. 쿠키 위키백과에서 쿠키에 대한 정의는 아래와 같다. HTTP 쿠키(HTTP cookie)란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 사용자의 웹 브라우저를 통해 인터넷 사용자의 컴퓨터나 다른 기기에 설치되는 작은 기록 정보 파일 필자는 쿠키는 데이터를 담는 그..