inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

안녕하세요, EntityManager에 대해 궁금한 점이 있어 질문 남깁니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

JPA 기본편 강의와 같이 듣고 있습니다. 좋은 강의 항상 감사드립니다. (질문 도중 제가 잘못 이해 하고 있는 부분이 있다면 말씀주시기 바랍니다.) 다름 아니라 EntityManager는 요청이 들어올 때 생성되어 사용됬다가 해당 요청이 마무리 되면 삭제된다고 이해 하고 있습니다. 근데 @Repository 를 DI를 통해 생성할 때 @RequiredArgsConstructor 를 통해 EntityManager도 생성해줍니다. 그럼 이 EntityManager 인스턴스는 @RequiredArgsConstructor 위 어노테이션으로 인해 필요할 때 마다 그 때 그 때 생성된다고 볼 수 있을까요? 아니면 싱글톤 객체 안에 필드임으로 그 때 그 때 새로운 값을 할당 받는건가요? 감사합니다, 좋은 하루 되세요~

  • 웹앱
  • spring
  • JPA
  • java
  • spring-boot
씨쁠쁠러버 댓글 2 좋아요 11 조회수 3412

JPA update

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요 . 일부 field 에 대한 update를 할때, 기존 entity의 모든 field를 꼭 불러와서 update를 해야하나요? 감사합니다 !!

  • spring
  • spring-boot
  • java
  • 웹앱
  • JPA
댓글 1 좋아요 0 조회수 254

generated 폴더 자동 생성이 됩니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

PDF 파일에서 IntelliJ Gradle 대신에 자바 직접 실행 항목에 적힌 설명처럼 IntelliJ IDEA 변경하고 프로그램 실행시에 /src/main 하위에 generated 폴더가 자동으로 생기는데 왜 생기는건가요?? 안 생기게 못하나요?? 환경 스프링 부트 2.4.2 인텔리제이 얼티메이트 2020.3.1

  • spring-boot
  • java
  • spring
  • JPA
  • 웹앱
화이 댓글 2 좋아요 0 조회수 4588

어노테이션 관련 질문드립니다.

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

7분 즘에 MemberRepository 클래스르 만들고 @PersistenceContext 어노테이션을 private EntityManager em; 에 붙였는데 원래 정석대로라면 팩토리를 만들고 그걸로 엔티티매니저를 반환받는거였는데 이 어노테이션으로 그 과정을 스킵한다고 봐도 되나요? 팩토리 만들 때 마다 비용이 많이 소모된다고 알고있는데 이 어노테이션도 똑같이 팩토리를 한번만 만들고 그 팩토리로 엔티티매니저를 반환하나요? 그렇다면 이 과정을 알고 있다는 전제 하에 그냥 간단하게 @Autowired 같은 거라고 보면 될까요 ㅎㅎ...

  • 웹앱
  • java
  • spring
  • spring-boot
  • JPA
twosom 댓글 4 좋아요 1 조회수 2225

질문은 아닙니다만 devtools 동작이 안되는 경우

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

아무리 devtools 를 적용시켜봐도 리컴파일을 하고 새로고침을 해도 페이지 변하지 않길래 구글님에게 수소문 해본 결과 https://lejewk.github.io/springboot-devtool/ 이거대로 해보니 되네요. 혹시나 devtools 동작 안하시는 분들 참고하시라고 공유차원에서 올려봤습니다~

  • java
  • JPA
  • 웹앱
  • spring
  • spring-boot
twosom 댓글 3 좋아요 3 조회수 490

Bootstrap을 직접 다운받지않고 CDN을 이용해 간편하게 적용하는 법입니당.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

`resources/templates/fragments/header.html`의 코드를 아래와 같이 변경해주시면 됩니다. `<!-- Bootstrap CDN -->`아래 코드 4줄이 Bootstrap을 적용시켜주는 코드입니다. <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head th:fragment="header"> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink- to-fit=no"> <!-- Custom styles for this template --> <link href="/css/jumbotron-narrow.css" rel="stylesheet"> <!-- Bootstrap CDN --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> <title>Hello, world!</title> </head>

  • JPA
  • spring-boot
  • 웹앱
  • spring
  • java
미리바니 댓글 9 좋아요 38 조회수 5028

Builder 사용 시 NullPointerException 뜨는 경우 참고사항 (NPE)

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

@OneToMany ( mappedBy = "order" , cascade = CascadeType. ALL) private List < OrderItem > orderItems = new ArrayList <>() ; 이런 식으로 코드를 작성 후 Lombok의 @Builder를 사용하시는 분들은 빌더 패턴을 통해서는 필드에 아무리 기본값을 명시해뒀더라도 기본값이 null아니면 0이 튀어나오므로 @Builder.Default 를 따로 선언해주셔야 null이 아닌 ArrayList가 생성됩니다. @Builder.Default @OneToMany ( mappedBy = "order" , cascade = CascadeType. ALL) private List < OrderItem > orderItems = new ArrayList <>() ;

  • 웹앱
  • java
  • spring-boot
  • JPA
  • spring
한창훈 댓글 1 좋아요 4 조회수 789

batch insert 질문있습니다!

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요 주니어입니다! 이 강의랑은 동떨어진 질문이긴한데요 ㅎㅎ; 강의보면서 계속 이거저거 생각하다보니 영한님은 혹시 batch insert하실때 어떻게 하시는지 궁금합니다 ! 회사에서는 JPA를 쓸때 기본키 전략이 IDENTITY 이면 JPA로 batch insert하기가 어려워서 jdbcTemplate으로 한다고 하거든요. 수량은 대략 5,000~10,000건 단위이고요. JPA초고수께서는 어떤방식으로 batch insert를 하시는지 갑자기 너무너무너무 궁금해져서 동떨어진 질문을 달게됐습니다.. 아 그리고 강의보면서 항상 감사드리고있어요. 제 마음속의 스승님이십니다 !

  • spring
  • spring-boot
  • 웹앱
  • java
  • JPA
한창훈 댓글 2 좋아요 1 조회수 472

비즈니스 로직을 엔티티에 위임하는 기준이 궁금합니다!

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요! 강의 잘 듣고 있습니다~ 주문 취소와 주문 가격 조회 비즈니스 메서드를 엔티티 내부에서 선언하신 이유가 궁금합니다! 오더와 달리 멤버의 경우 엔티티에 비즈니스 로직을 작성하지 않은 건 리포지토리에서 사용한 save, find 외에 별다른 로직이 없기 때문인가요? 서비스가 아닌 엔티티에 비즈니스 로직을 위임하는 기준이 궁금합니다!

  • spring
  • 웹앱
  • spring-boot
  • JPA
  • java
정원be 댓글 1 좋아요 3 조회수 375

Bear(베어) 강의 자료

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요. 영한님 좋은 강의 제공해주셔서 감사합니다. 다름이 아니라, Bear(베어)에서 강의 자료를 보고 싶은데 pdf 파일은 볼 수 없는 거 같습니다. 혹시 베어에서 볼 수 있게 .md파일로도 강의자료 부탁드려도 되겠습니까? 감사합니다.

  • spring-boot
  • java
  • spring
  • 웹앱
  • JPA
댓글 1 좋아요 0 조회수 579

테이블 아이디 설계 및 hidden 태그 관련 질문 드립니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

항상 명강의 감사합니다. 강의를 들을때마다, 강사님에 노고가 느껴지니, 매번 소름이 돋네요. ㅎㅎ 오늘도 강의 잘 듣고 있습니다. 2가지 질문을 드립니다. 1. 테이블 아이디 설계 저는 회원 테이블을 설계할때, 기본키를 '아이디' 로 설정했었습니다. 아이디가 유니크 하기 때문에 기본키로 잡았었는데, 강의에서는 엔티티에서 기본키를 따로 잡으시고(기본키는 자동으로 값을 셋팅) 진행을 하시던데 실무에서도 회원 테이블을 설계하신다면 '회원 아이디' 와는 별개로 기본키 필드를 설계하고 @GereratedValue 로 자동으로 값을 할당하도록 진행하시나요.? 2. hidden 태그(다소 부족한 질문일수도 있습니다.) 강의 내 코드를 보면, 회원에 대한 아이디를 hidden 태그에 노출하는데, 이게 보안상에 문제가 될 여지는 없을 까요.? 물론 서버단에서 회원에 권한을 체크한다면 문제가 되지 않는다고는 생각하지만, 노출된다는게 꺼림칙해서요.....(단순히 제생각입니다.) 아니면 hidden 태그를 사용하지 않고, 구현하는 방법이 따로 있을까요.?

  • JPA
  • 웹앱
  • spring
  • java
  • spring-boot
햇병아리 댓글 1 좋아요 0 조회수 240

엔티티에서 @GeneratedValue에 관한 질문입니다!

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요 항상 좋은 강의에 항상 감사하고 있습니다! 다름이 아니라 JPA를 통해서 디비를 생성하지 않고 이미 따로 MySQL로 만든 디비를 객체에 매핑만 하여 사용하려고 하는데요! 1. 보통 이렇게 하는게 일반적인가요? 2. 이미 pk로 순서대로 1, 2, 3 ... 을 맥인 상황에서 엔티티와 매핑하고 그 다음 jpa 를 통해 insert를 하게 되면 가장 마지막 id값을 읽고 그다음 자동으로 이어서 +1 을 하게 되주나요? 질문이 너무 두서가 없네요 ㅠㅠ 예를 들어 이미 기존 member라는 테이블에 (pk로 id 컬럼) 1 memberA 20 서울 2 memberB 19 울산 이런 상황에 엔티티로 매핑하고 증가시키면 자동으로 id는 3부터 이어서 시작이 되는걸까요?

  • java
  • spring
  • spring-boot
  • 웹앱
  • JPA
이상진 댓글 3 좋아요 0 조회수 297

ValidateDuplicateMember 메소드와 트랜젝션 관련해서 질문입니다.

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

@Transactional 애노테이션을 붙인 메서드는 오버라이딩 할 수 있어야 하기때문에 ValidateDuplicateMember 메서드를 private 접근지정자를 설정하면 명시적으로 @Transactional 애노테이션을 해당 메서드에 붙일 수가 없는데, 강사님께서 하신것처럼 클래스 레벨로 @Transactional(readOnly = true) 애노테이션을 붙이면 ValidateDuplicateMember 메서드는 트랜젝션이 적용이 안되는지 궁금합니다. 만약 적용이 안된다면 접근 지정자를 protected 로 변경해서 사용해도 되는지 궁금합니다. ----------------------- 전체 소스코드 입니다. ------------------------------- @Service @Transactional public class MemberService { @Autowired private MemberRepository memberRepository ; /** * 회원가입 * @param member member entity * @return memberId */ public Long join(Member member) { ValidateDuplicateMember(member); memberRepository .save(member); /* * member를 영속화 할때 key를 member의 id로 설정 (generateValue) * member 객체의 id 필드에는 값이 채워져있는 것을 보장할 수 있음 */ return member.getId(); } @Transactional (readOnly = true ) protected void ValidateDuplicateMember(Member member) { List<Member> findMembers = memberRepository .findByName(member.getName()); if (!findMembers.isEmpty()) { throw new IllegalStateException( "이미 존재하는 회원입니다." ); } } /** * 회원 전체 조회 * @return memberList */ @Transactional (readOnly = true ) // 성능 최적화 public List<Member> findMembers() { return memberRepository .findAll(); } /** * 회원 단건 조회 * @param memberId memberId * @return findMember */ @Transactional (readOnly = true ) public Member findOne(Long memberId) { return memberRepository .findOne(memberId); } }

  • java
  • spring
  • 웹앱
  • JPA
  • spring-boot
준돌 댓글 3 좋아요 2 조회수 698

안녕하세요 트랜잭션 처리에 관해 질문드립니다.

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요, 팀장님! 트랜잭션을 엔티티 매니저를 직접 다루는 리포지토리에서 하는 것이랑 서비스 계층에서 하는 것이랑 어떤 차이가 있나요?@Transactional을 서비스 계층이 아니라 리포지토리에서도 걸 수 있는데 서비스 계층에서 거는 이유가 궁금합니다. 그리고 MVC 강의 출시는 언제쯤 예상하시나요?ㅎㅎ 감사합니다.

  • java
  • 웹앱
  • spring-boot
  • JPA
  • spring
댓글 1 좋아요 3 조회수 237

수강을 시작하기 전에 한 가지 질문을 드립니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요 강사님, 이번 강의도 잘 듣겠습니다. 이번 강의를 본격적으로 시작하기 전에 질문을 하나 드리려고 합니다. 저는 현재 강사님의 스프링 입문편, 기본편, HTTP 강의를 완강한 상태입니다. 이제부터는 강사님께서 추천해주신 야생형 코스로 JPA 로드맵을 수강하고자 하는데요. 이번 강의를 어떤식으로 공부하는게 좋을지 고민입니다. 저는 아직 JPA 기본편을 듣지 않았기 때문에 JPA에 대한 사전지식이 전무합니다. 이런 상황에서 활용편 강의를 수강하게 되면 분명히 막히는 부분이 많이 나오겠지요. 그럴 때마다 그런 부분들에 대한 이해를 하기 위해 노력하면서 들어야 할까요? 아니면 이해가 안 되는 부분은 그냥 따라치기만 하면서 넘어가고 나중에 기본편 학습 후 다시 돌아왔을때 철저한 이해를 목표로 수강하는게 좋을까요? ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 추가적으로, JPA라는 기술에 대한 질문을 하나 더 드리고 싶습니다. 흔히들 말하는 국내 대표 IT 서비스 기업 "네카라쿠배" 같은 곳에서는 JPA 기술이 활발하게 사용될 것이라는 생각이 듭니다. 그러나 취업을 준비하는 취준생 입장에서 이러한 탑급 IT 기업만을 목표로 하여 JPA에만 집중하는 것이 맞는지에 대한 고민이 있습니다. 갈 수만 있다면 자체 IT 서비스를 운영하는 저런 거대 기업들에 가는 것이 좋기야 하겠지만.. 국내 대형 SI 기업들, 그 외 대기업 계열사들, 다른 중견기업들 등 최대한 포괄적으로 준비하여 "취업 1승"에 대한 성공 확률을 최대한 높이고 싶은 것이 불안한 취준생의 마음입니다. 이러한 측면에서 보았을 때, 최신 트렌드인 JPA만 공부하기 보다는 아직 그렇지 못한 기업들을 함께 고려하여 MyBatis 등의 기술도 준비해서 프로젝트를 진행해보는게 맞는 것인가? 하는 생각이 듭니다. 질문의 핵심은 이것입니다. "네카라쿠배 등의 IT 기업 외에 다른 곳들에서 JPA를 활발하게 사용하나요? 그렇지 않다면 다른 곳들에서 가장 활발히 사용되는 기술은 무엇인가요?" 물론 강사님께서 모든 기업에 근무하셨던 것은 아니니 전부 빠삭하게 꿰차고 답변을 주시기는 어렵겠지만.. 그래도 현직 베테랑 개발자의 입장에서 저같은 취준생에게 조언을 해주실 수 있는 부분이 있지 않을까 싶어서 질문을 남깁니다. ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 부디 조언을 부탁드립니다. 감사합니다.

  • 웹앱
  • spring
  • spring-boot
  • java
  • JPA
akakakakak 댓글 3 좋아요 0 조회수 414

cannot resolve column 'Object'

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

이렇게 빨간줄이 떠서 신경쓰이시는 분들은 Settings -> Editor -> Inspections 에서 Unresolved database를 검색 -> Unresolved database references in annotaions 를 체크 해제 하시면 빨간줄이 없어집니다. IntelliJ가 너무 꼼꼼하게 검사를 해주기 때문에 발생한다고 합니다. 출처: https://log-laboratory.tistory.com/285

  • java
  • spring
  • 웹앱
  • spring-boot
  • JPA
ms-seo 댓글 1 좋아요 13 조회수 461

OrderItem을 DB에서 지우고자 할 때

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요. 주신 예제로 여러 가지 응용을 해보고 있는데, 한 가지 질문이 있어 질문드립니다. OrderItem을 지우는 상황을 가정을 했을 때, 지우는 방법에 대해 여쭤보고 싶습니다. (parent에 의존하여 영속화 되어있는 객체를 지우는 상황) Order를 지우면 OrderItem은 CASCADE 옵션 덕분에 잘 지워지지만, 반대로 Order는 두고 OrderItem 하나만 지우기 위해 Order <-> OrderItem 관계를 끊어도 OrderItem은 지워지지 않습니다. 아래는 제가 시도했던 부분입니다. - Parent인 Order의 list에서 OrderItem 삭제 - Child인 OrderItem에서 this.order = null; this.item = null;로 모든 관계 삭제 - @OneToMany 옵션이 있는 Parent쪽에서 orphanRemoval = true 옵션 넣기 - 위 과정 모두 한 뒤, em.persist(Order); 호출 위 모두 해보아도 OrderItem에 null로 들어갈뿐 OrderItem이 삭제 되진 않습니다. 구글링을 해봤을 땐 orphanRemoval 옵션 추가하고 연관관계 삭제하라는 말뿐이네요.. 혹시 방법이 있을까요? 그리고 추가로, 여기선 OrderItem이라는 다:1 매핑된 객체는 CASCADE를 통해 따로 영속화하지 않았는데, 보통 다:1 매핑은 전부 그러한가요? 제가 느끼기엔 서로 독립적으로 저장해야할 때라고 판단하였는데, 다:1이면 독립적일 수가 없을 것 같더라구요. 어떤 경우에 따로따로 영속화하고, 어떤 경우는 이 예시와 같이 한꺼번에 하는지 궁금합니다. 감사합니다.

  • 웹앱
  • spring
  • java
  • JPA
  • spring-boot
고운 코끼리 댓글 22 좋아요 2 조회수 3674

안녕하십니까 강사님 주문하기에서 질문이 있습니다

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문하기 service입니다. 여기보시면 itemId로 하나의 아이템을 조회해서 ---> OrderItem에 파라미터로 item을 등록하지 않습니까? 궁금한 점이 있는데 만약 하나의 아이템이 아니라, 여러가지 아이템을 한번에 주문하고 싶다면 위 코드를 어떻게 바꿔야 할까요? Order의 createOrder은 파라미터를 (OrderItem... orderitem)으로 여러가지 아이템들이 올 수 있도록 만들어놨는데, 여러가지 아이템을 등록하기 위해서는 OrderItem의 createOrderItem을 어떻게 바꿔야 하는지 궁금합니다.

  • java
  • JPA
  • spring-boot
  • 웹앱
  • spring
pak7380 댓글 1 좋아요 0 조회수 189

선생님 질문있습니다.

미해결

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

다른분이 질문하신건데 9:30초에 const productId = props . match . params . productId ; 여기서 props.match.params.productId 가 어디서 나온건지 잘 모르겠습니다 ㅠㅠ. App.js 에서 Auth로 감싸줘서 props가 있는건 알겠는데 match.params.productId가 어디서 나온건지 모르겠네요 ㅠㅠ App.js -> hoc/auth.js -> user_actions.js-> index.js-> routes/users.js 까지 가봤는데 잘 모르겠네요 ㅠㅠ

  • mongodb
  • 웹앱
  • react
  • nodejs
  • redux
이동욱 댓글 1 좋아요 2 조회수 162

이번 강의 users.js에서 map() 대신 forEach()를 사용한 이유

미해결

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

간단한 궁금증입니다.. map()과 forEach()의 세세한 차이점은 검색을 해봤는데 map메소드가 보통 성능 면에서도 더 빠르고 기존의 데이터를 변형시키지 않고 새로운 배열을 반환하기 때문에 기존 데이터가 필요한 경우에도 쓸 수 있을 것 같다는 생각이 들었습니다. 강사님은 각각 어떤 경우에 map()과 forEach()를 사용하시는지 여쭤보고 싶습니다!

  • 웹앱
  • redux
  • mongodb
  • react
  • nodejs
댓글 1 좋아요 0 조회수 237

인기 태그

인프런 TOP Writers

주간 인기글