묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일대일 optional 여부에 따른 UNIQUE 제약
안녕하세요! 강의를 너무나 잘 듣고 있습니다. 일대일 강의를 들으면서 이것저것 만져보다가 @OneToOne(optional=true) 인 경우에는 UNIQUE 제약이 걸리지 않고 반대로 false인 경우에는 UNIQUE 제약이 걸리는 것을 알게 되었습니다.혹시 이렇게 구현된 이유가 무엇인지 알 수 있을까요?
-
해결됨실전! 스프링 데이터 JPA
Optional 적용 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 회원 이메일을 사용하여 MemberRepository에서 회원 정보를 조회하는 메서드를 구현해 보았습니다. 해당 이메일의 회원이 DB에 존재하지 않을경우를 고려하여 다음과 같이 Optional로 감싸주었습니다. Transactional(readOnly = true) public interface MemberRepository extends JpaRepository<Member, Long> { Optional<Member> findByEmail(String email); ... } 이 경우 Service 단에서 해당 메서드를 사용할 경우 변수 타입을 Optional<Member>로 선언해 줘야 했습니다. @Transactional public void followFriend(FollowFriendRequest request) { Member requester = getMember(request.getRequesterEmail()); Optional<Member> receiver = memberRepository.findByEmail(request.getReceiverEmail()); log.info("requester: '{}', receiver: '{}'", requester, receiver); if (receiver == null) { throw new MemberEmailNotFound(); } if (requester.hasFriend(receiver) || relationRepository.existsByOwnerEmailAndFriendEmail(request.getRequesterEmail(), request.getReceiverEmail())) { throw new EmailDuplicatedException(request.getReceiverEmail()); } relationRepository.save(new Relation(requester, receiver)); } 이러면 위 코드 마지막 줄의 Relation 생성자 또한 Optional을 포함한 생성자를 추가로 만들어 줘야 하고 이렇게 되면 Relation 엔티티의 receiver 필드값에도 Optional을 씌워줘야 하는 문제가 발생했습니다. 이 경우 Optional을 어떻게 사용하는게 옳은건지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Optional에 대한 질문
안녕하세요 . Optional 쓰면서 궁금한게 있어서 질문드립니다. 다름이 아니라, JpaMemberRepository에서 아이디로 회원을 찾는 메서드(findById)에서 리턴값을 Optional로 감싸서 리턴하는데(아래 그림 참고) Optional에 대해서 궁금해서 구글링을 하다가 아래의 블로그를 찾게 되었습니다. https://homoefficio.github.io/2019/10/03/Java-Optional-%EB%B0%94%EB%A5%B4%EA%B2%8C-%EC%93%B0%EA%B8%B0/ 블로그의 4번 째 항목 보시면 아래의 글처럼 되어 있는데 어떤것이 더 효율적인지 궁금해서 질문드립니다. 감사합니다 ^^
-
미해결더 자바, Java 8
Optional에서 of()는 언제 사용할까요??
Optional ofNullable()과 of()의 차이는 널 값을 가질 수 있는지로 알고있는데요.ofNullable()의 코드를 봐도 내부적으로 of()를 사용하고 성능상에도 큰차이가 있을까? 라는 생각이 드는듯한 코드인데 of()를 사용하는 경우가 어떤것이 있을까요?? public static <T> Optional<T> of(T value) { return new Optional<>(value); } public static <T> Optional<T> ofNullable(T value) { return value == null ? empty() : of(value); }
-
미해결iOS 개발을 위한 swift5 완벽 가이드
if랑 옵셔널 사용했는데 뭐가 잘못된걸까요? 똑같이 인덱스 범위 벗어난다고하네요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. let m = Matrix() m[0,0] // m[0,10] struct Matrix2 { var data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] subscript(row: Int, col: Int) -> Int? { if row < data.count && col < data[0].count { // 행의개수, 열의개수 미만 3이면 0~2까지 return data[row][col] } else { return nil } } // 읽기전용 서브스크립트, get {}생략 됨 } let test = Matrix() m[0,4]
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
선생님 optional<>관련 질문이 있습니다.
선생님 강의 시청도중 궁금증이 생겨서 질문남깁니다. 자바 8부터 객체 리턴시에 null이 리턴되어 참조되는걸 방지하고자 optional을 사용한다고 말씀하셨는데요 optional로 감싼 객체는 1회용으로 거기서 원래 객체를 꺼내면 메모리에 남은 optional객체는 gc가 수거해야할 쓰레기가 되는건가요? 그렇다면 무분별한 optional남용은 오버헤드를 초래할 수 있을 것 같은데요 메소드명에 OrNull을 추가해서 명시적으로 해당 메서드에서는 null이 리턴될 가능성이 있다고 알리고 사용하는 쪽에서 null값을 리턴받은경우에 대한 예외처리를 분기문등으로 진행하는게 낫지 않나요? 정확히 optional을 사용할때의 어떤 장점때문에 오버헤드의 가능성을 감수하고 사용하는 건가요?