이 포스팅은 인프런 김영한님의 JPA 강의를 듣고 복습하며 정리한 내용입니다. API 개발 어느 순간 앱을 개발해야 할 시점이 왔다고 가정하자. 이 시점에서는 기존에 웹을 개발하던 것처럼 View Template을 반환하는 것이 아닌 API 형식으로 데이터를 주고 받아야한다. 어플리케이션은 API 데이터를 받아, 클라이언트에서 필요한 것들을 구현해주기 때문이다. API 개발을 할 때 주의해야 할 사항 1. 엔티티를 파라메터로 받지 마라. 엔티티는 해당 API 뿐만 아니라 정말 다양한 곳에서 사용될 수 있다. 예를 들어 엔티티의 name이 userName으로 바뀌었다고 가정해보자. 이럴 경우, 어느 순간 특정 API 컨트롤러가 고장이 나는 경우가 발생할 수 있다. 따라서 DTO(Data Transfer O..
@RequiredArgsConstruct @Autowired public myClass(nextClass nextclass, EntityManager entityManager){ this.nextClass = nextClass; this.entityManager = entityManager; } @RequiredArgsConstruct는 위 코드를 대신해주는 녀석이다. 이 어노테이션으로 의존관계를 주입하기 위해서는 반드시 메서드 내에 생성자가 하나만 있어야한다. 스프링은 생성자가 하나만 있으면, 생성자에 @AutoWired를 달지 않아도 필요한 스프링 빈을 찾아서 의존관계를 주입해주기 때문이다. 이 때, JPA와 관련되서 쓴다면 EntityManager도 함께 DI를 해주는 것을 인지해야한다.
트랜잭션(Transaction)이란? 트랜잭션은 우리 말로 '거래'라는 뜻을 가지고 있다. 이것을 중고거래에 빗대어서 한번 살펴보자. 당근마켓에서 선입금을 아이패드를 사기 사기 위해 선입금을 했다. 받았더니 벽돌이었다. 사기 당했을 때, 입금하기 시점 이전으로 돌릴 수 있는 개념이 바로 트랜잭션이다. 트랜잭션은 트랜잭션 내의 모든 작업들이 성공적으로 끝이나면, 작업의 결과를 묶음으로 적용한다. 반대로 작업들 중 하나라도 오류가 발생하면, 이전에 있는 모든 작업들이 성공적이었다고 하더라도 모두 없던 일처럼 돌린다. 데이터베이스에서는 트랜잭션 개념 단위로 일을 처리하게 되고, 모든 작업이 성공해야 데이터베이스에 작업 결과물이 반영될 수 있다. @Transactional 어노테이션의 기능 tx.begin() ..
0. 설계 주의 사항 단방향 연관관계를 기본으로 설계해라. 필요한 양방향을 추가한다연관관계의 주인은 FK와 가까운 곳으로 설정해라.다대다 연관관계는 일대다 / 다대일로 풀어낸다. Setter는 가급적 제공하지 않는다. 대신, 필요한 별도의 메서드를 제공해서 변경 지점을 확실하게 한다. 객체를 기준으로 설계한다. 맵핑은 연관관계를 기준으로 한다. EnumType은 String으로 설정한다. ORDINAL로 설정 시, 변경 및 확장에 취약하다. 일대일에서 FK는 많이 접근하는 쪽에 둔다. 1. Join Column DB의 테이블과 테이블의 연관 관계를 정해주는 것이다. 즉, 이 테이블(엔티티)의 이 Column을 FK로 사용할껀데, 이 FK는 다른 테이블의 어떤 PK라는 것을 알려주는 것이다. 이걸 하면 D..
이 포스팅은 인프런 김영한님의 강의를 복습하며 정리한 내용입니다. HTML FORM 전송 방식 application/x-www-urlencoded multipart/form-data HTML FORM 전송 방식은 위와 같이 두 가지(https://ojt90902.tistory.com/651)가 있다. 이름에서부터 유추가 가능하겠지만 multipart/form-data는 뭔가 여러 형태의 데이터를 전송해 줄 것이라는 것이 유추된다. 그와 대조적으로 application/x-www-urlencoded는 한 형태의 데이터를 전송해줄 것이라는 것이 유추된다. application/x-www-urlencoded 전송 방식 application/x-www-urlencoded는 HTML 폼 데이터를 전송하는 가장 기..