Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeORM repository 클래스의 create 메소드에 관한 논의 #118

Open
maong0927 opened this issue Oct 31, 2020 · 2 comments
Open

TypeORM repository 클래스의 create 메소드에 관한 논의 #118

maong0927 opened this issue Oct 31, 2020 · 2 comments
Labels
BE 🧑🏻‍💻 백엔드 discussion 💭 의논해볼 거리!

Comments

@maong0927
Copy link
Collaborator

의논거리 🤔

  • create 메소드를 사용해야 할까요?
  1. 사용했을 경우
const MilestoneService = {
  createMilestone: async (milestoneData: createMilestone): Promise<void> => {
    const milestoneRepository: Repository<MilestoneEntity> = getRepository(
      MilestoneEntity
    );
    const milestone: MilestoneEntity = await milestoneRepository.create(
      milestoneData
    );
    await milestoneRepository.save(milestone);
  },
};
query: START TRANSACTION
query: INSERT INTO `Milestone`(`id`, `title`, `description`, `dueDate`) VALUES (DEFAULT, ?, ?, ?)
query: COMMIT
  1. 사용하지 않았을 경우
const MilestoneService = {
  createMilestone: async (milestoneData: createMilestone): Promise<void> => {
    const milestoneRepository: Repository<MilestoneEntity> = getRepository(
      MilestoneEntity
    );
    await milestoneRepository.save(milestone);
  },
};
query: START TRANSACTION
query: INSERT INTO `Milestone`(`id`, `title`, `description`, `dueDate`) VALUES (DEFAULT, ?, ?, ?) 
query: COMMIT

이미지 이름
출처 : https://typeorm.delightful.studio/index.html

create 메소드가 어떤 역할을 하는 녀석인지 애매하네요 . insert 메소드 구현시 create 메소드를 써야할까요?

@maong0927 maong0927 added BE 🧑🏻‍💻 백엔드 discussion 💭 의논해볼 거리! labels Oct 31, 2020
@moaikang
Copy link
Collaborator

moaikang commented Nov 1, 2020

오 엄청 흥미로운 이야기네요 👍
저도 궁금해서 공식문서를 뒤져보니
스크린샷 2020-11-01 오후 4 17 06
스크린샷 2020-11-01 오후 4 15 52

출처

이 내용에 따르면 create는 데이터를 만드는 역할을 하는 거고,
save는 데이터를 만드는데, 만약 그 데이터가 이미 존재한다면 그 데이터를 수정한다는 내용인거 같아요.

제 생각에는 POST 메서드에서 데이터를 수정할 가능성이 있는(?) save메서드를 사용하는 것 보다는
create 메서드를 사용하는게 예측 못한 상황을 줄이고, 방어적으로 프로그래밍 하는데 좋은 거 같아요.

여러분들은 어케 생각하시나요?

@namda-on
Copy link
Collaborator

namda-on commented Nov 1, 2020

제 생각에는 POST 메서드에서 데이터를 수정할 가능성이 있는(?) save메서드를 사용하는 것 보다는
create 메서드를 사용하는게 예측 못한 상황을 줄이고, 방어적으로 프로그래밍 하는데 좋은 거 같아요.
-> 저도 동의합니다

또, 모든 service에 해당하는 사항은 아니지만, create를 썼을 때의 장점이 있다고 생각합니다. 예를 들어 issue를 create 하고 response 로 생성한 issue 를 반환해야하는 경우 create 를 통해 생성된 객체를 반환하면 간편하지만, save를 통해 생성한다면 따로 find 함수를 써야합니다. (query 상으로는 똑같습니다, 단지 코드상의 편리함, 가독성? 차이라 생각합니다.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BE 🧑🏻‍💻 백엔드 discussion 💭 의논해볼 거리!
Projects
None yet
Development

No branches or pull requests

3 participants