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

#118 [fix] 디자이너 회원가입 api 수정 #120

Merged
merged 11 commits into from
Jan 15, 2024
Merged

#118 [fix] 디자이너 회원가입 api 수정 #120

merged 11 commits into from
Jan 15, 2024

Conversation

pkl0912
Copy link
Contributor

@pkl0912 pkl0912 commented Jan 14, 2024

관련 이슈번호

해결하는 데 얼마나 걸렸나요? (예상 작업 시간 / 실제 작업 시간)

  • 1~2h

해결하려는 문제가 무엇인가요?

  • userId 가 있는 designer 테이블에 값 업데이트

어떻게 해결했나요?

  • set 사용
  • 샘플코드 사용
  • desinger 회원가입 시 새로 생성 고치기

Modifying 어노테이션과 JPA 캐싱: Modifying 어노테이션은 데이터베이스에 대한 변경작업(INSERT, UPDATE, DELETE)을 수행하는 JPQL(JPA Query Language) 또는 SQL 쿼리에 사용됩니다. JPA는 일반적으로 일련의 변경 사항을 영속성 컨텍스트(persistence context)에 캐싱하고, 트랜잭션이 완료될 때까지 실제 데이터베이스에 반영하지 않습니다. 이 때문에, 데이터베이스 변경 후 즉시 새로운 데이터를 조회하려고 할 때 문제가 발생할 수 있습니다. 변경 작업 후에 영속성 컨텍스트가 아직 최신 상태로 업데이트되지 않았기 때문에, 새로운 데이터를 찾지 못할 수 있습니다.

clearAutomatically = true의 역할: Modifying(clearAutomatically = true)를 사용하면, 쿼리 실행 후 JPA의 영속성 컨텍스트를 자동으로 클리어합니다. 이는 변경 사항을 데이터베이스에 즉시 반영하고, 영속성 컨텍스트를 최신 상태로 갱신하는
효과가 있습니다.

즉, clearAutomatically = true 옵션은 변경된 데이터가 데이터베이스에 반영된 직후에 영속성 컨텍스트를 초기화하여 변경 사항을 반영합니다. 이로 인해 이후에 수행되는 조회 작업에서 최신 데이터를 정확히 가져올 수 있게 됩니다.

@pkl0912 pkl0912 requested review from hellozo0 and KWY0218 January 14, 2024 07:09
@pkl0912 pkl0912 self-assigned this Jan 14, 2024
@pkl0912 pkl0912 added the fix label Jan 14, 2024
Copy link
Member

@KWY0218 KWY0218 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

작업하시느라 고생하셨습니다
코맨트 확인해주세요

Comment on lines 27 to 30
@NotNull
private String introduction;

@NotNull
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p2
여기서는 not null 제약 조건을 제거하지 않아도 된다고 생각합니다

String kakaoId = kakaoSocialService.getIdFromKakao(baseUrl, code);

User user = userRepository.findById(userId).orElseThrow(() -> new NotFoundException(ErrorCode.USER_NOT_FOUND_EXCEPTION));
Designer designer = designerJpaRepository.findById(userId).orElseThrow(() -> new NotFoundException(ErrorCode.DESIGNER_NOT_FOUND_EXCEPTION));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p1
조회 할 디자이너는 아직 디비에 없는 상태입니다.

user를 조회한 뒤 user를 업데이트 하고,
designer를 생성하는 식으로 수정해야할 것 같습니다.

Copy link
Member

@hellozo0 hellozo0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다~~! 저도 이제 언능 수정해야겠네요...

Copy link
Member

@hellozo0 hellozo0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 로직을 구현하다가 Designer 객체를 만들때 새로운 User 객체가 한번더 만들어 지는 상황을 맞이 했습니다!

혹시 기존의 로그인시 만들어진 User 객체를 참조하는 Designer 객체만 만들 수 있는 방법 같이 생각해보면 좋을것 같아요!

@hellozo0 hellozo0 self-requested a review January 14, 2024 15:12
Copy link
Member

@KWY0218 KWY0218 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

작업하시느라 수고하셨습니다!

Copy link
Member

@hellozo0 hellozo0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다~!!!! 대단히 감사합니다 대단히 고맙습니다


public interface DesignerJpaRepository extends JpaRepository<Designer, Long> {
@Modifying(clearAutomatically = true)
@Query(value = "insert into Designer (id, hair_shop_address, hair_shop_detail_address, hair_shop_name, instagram_url, naver_place_url, introduction, kakao_open_chat_url) VALUES (:id, :hairShopAddress, :hairShopDetailAddress, :hairShopName, :instagramUrl, :naverPlaceUrl, :introduction, :kakaoOpenChatUrl)", nativeQuery = true)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

디자이너 DB 컬럼 쿼리 확인이요!

Comment on lines +13 to +14
@Query(value = "insert into Designer (id, hair_shop_address, hair_shop_detail_address, hair_shop_name, instagram_url, naver_place_url, introduction, kakao_open_chat_url) VALUES (:id, :hairShopAddress, :hairShopDetailAddress, :hairShopName, :instagramUrl, :naverPlaceUrl, :introduction, :kakaoOpenChatUrl)", nativeQuery = true)
void designerRegister(@Param("id") Long id, @Param("hairShopAddress") String hairShopAddress, @Param("hairShopDetailAddress") String hairShopDetailAddress, @Param("hairShopName") String hairShopName,@Param("instagramUrl") String instagramUrl,@Param("naverPlaceUrl") String naverPlaceUrl,@Param("introduction") String introduction,@Param("kakaoOpenChatUrl") String kakaoOpenChatUrl);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

디자이너 Entity 컬럼값 확인이요!

@pkl0912 pkl0912 merged commit 7148f30 into develop Jan 15, 2024
1 check passed
@pkl0912 pkl0912 deleted the fix/#118 branch January 15, 2024 15:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[fix] 디자이너 회원가입 내부 로직 수정
3 participants