개발을 하면 Service 단에 일단 @Transactional 을 붙이고 시작하는 경향이 있다. 이번에는 이 @Transactional에 대해서 알아보자. ▶ 트랜잭션이란?@Transactional 어노테이션에 대해 알아보기 전에 트랜잭션이 무엇일까?트랜잭션은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위 이다. 여기서 데이터베이스의 상태를 변화시킨다는 것= SQL을 이용하여 DB에 접근하는 것을 의미한다.(SELECT, INSERT, DELETE, UPDATE) 작업 단위에는 이러한 SQL 명령문들이 여러개 존재할 수 있다. 예를 들어서 일기 웹서비스를 예로 들어보자.1. 일기를 쓰고 작성하기 버튼을 누른다.2. 일기 작성이 처리되고 자동으로 일기 목록으로 돌아온다.3. 일기 목록에서 직..
BackEnd
아마 개발할 때 DTO 클래스에 toEntity메서드와 from 메서드를 추가한 적이 있을 것이다.그리고 from 메서드에는 static을 붙였을 것이다.오늘은 DTO에 toEntity와 from을 붙이는 이유와 from은 왜 static인지를 알아볼것이다. ▶ 우선 이유 먼저 🔥DTO에서 toEntity나 from 같은 메서드를 추가하는 이유는데이터를 엔티티와 DTO간에 변환할 수 있게 하기 위해서이다.클라이언트로부터 받은 데이터를 엔티티로 변환해서 데이터베이스에 저장하거나,데이터베이스에서 조회한 엔티티를 클라이언트로 보내기 전에 DTO로 변환하는 작업이 필요하기 때문이다. DTO는 데이터를 주고받기 위한 '상자' 라고 할 수 있다.이 상자 안에 있는 데이터를 밖으로 꺼낼때는 toEntity 메서드를..
▶들어가며개발을 하고 API 명세서를 짜다보면“아 이거 PUT 써야됨 아니면 PATCH 써야됨??”이런 순간이 올것이다.오늘 한번 알아보자. 우선 PUT과 PATCH의 정의에 대해서 알아보자. ▶ PUT 과 PATCH의 정의HTTP PUT 메서드는 요청 페이로드를 사용해새로운 리소스를 생성하거나,대상 리소스를 나타내는 데이터를 대체한다. HTTP PATCH 메소드는 리소스의 부분적인 수정을 할 때에 사용된다. 정의만 봐도 어느정도 느낌이 온다.그 느낌을 구체화 해보자. 우리는 3가지 예시를 통해 PUT과 PATCH의 차이에 대해서 알아볼것이다. ▶ 차이점▷ UPDATE 방식의 차이PUT아래와 같은 리소스가 있다.idnamemoney1김씨50002이씨70003박씨3000이 리소스에 id 값이 3..
ERD를 짜다가 보면 Identifying Relationship(식별관계)와 Non-Identifying Relationship(비식별관계)을 봤을것이다.오늘은 이 둘이 무엇이고, 무슨 차이가 있는지 알아보자. ▶ Identifying Relationship(식별관계)Identifying Relationship은 부모테이블의 PK를 자식테이블의 PK로 사용하는것이다.간단하게 예시로 보자면부모테이블(학생정보) 없이 자식 테이블(성적 정보)이 존재할 수 없는 관계이다. 이렇게 두개의 PK가 존재해도 된다.subject_id는 자식 테이블의 PK이고student_id는 부모 테이블의 PK이면서 자식테이블의 PK이자 FK이다. ▶ Non-Identifying Relationship(비식별관계)Non-..
개발을 하다보면 Entity에서 필드를 만들 때 원시타입인 long 대신 래퍼클래스인 Long을 사용하는 걸 많이 봤을 것이다.왜 long를 안쓰고 Long를 쓸까?이 둘의 차이점은 무엇일까? 궁금해졌다. 바로 알아보자. ▶원시타입(Primitive type)과 래퍼클래스(Wrapper Class)란?일단 원시타입은 뭐고 래퍼클래스는 뭘까? 이 사진을 보면 이해가 될 것이다.기본자료형이 원시타입이고, 래퍼클래스는 원시타입을 객체화 한 것이다. 원시타입(기본자료형)은 언제나 값이 존재한다.필드에서 초기화하면 디폴트 값으로 0에 준하는 값이 들어가며, 메소드나 클래스 내에서는 초기화 및 선언을 같이 해줘야 실행이 된다. (초기화만하면 에러 발생) 래퍼클래스는 값이 존재하지 않는 "NULL" 상태일 수 있다..
Spring Data JPA에서 Entity에 기본 생성자가 필요한 이유가 무엇일까?@NoArgsConstructor(accsee = AccseeLevel.PROTECTED)를 왜 붙이는거지? 궁금해졌다.궁금하면 공부해야지~ ▶Reflection이란?그 전에 알아야하는것이 있다. Reflection은 Java에서 제공하는 API이다. Reflection은 구체적인 클래스 타입을 알지 못해도!클래스의 메서드나, 타입, 변수들에 접근할 수 있도록 해주는 API이다. 아니? 이게 어떻게 가능하죠? 클래스나 메소드가 프라이빗하면요??그걸 알아보기 전에! Reflection이 무슨 의미인지 아는가?반사라는 의미이다. 즉 클래스 자체를 조작하는것이 아니라, 반사된 클래스를 조작해서 클래스에 영향을 주는것이다...