자바 ORM 표준 JPA 프로그래밍 - 기본편

자바 ORM 표준 JPA 프로그래밍 - 기본편

(127개의 수강평)

1471명의 수강생
JavaJPASpring Data JPA
월40,333원
121,000원
3개월 할부시
지식공유자 · 김영한
54회 수업· 총 16시간 1분수업
평생 무제한 시청
수료증 발급 강의
수강 난이도 초급
빡친사람 프로필

단일 값 연관 경로 조회시 연관 엔티티로 조회하는것과 연관 엔티티의 필드를 조회하는데 차이가 있는건가요? 빡친사람 5시간 전
강의를 들으면서 예제를 따라하던 중 단일 값 연관 경로 조회 부분에서 실제 쿼리가 조금 다르게 나가는것을 보고 질문 드립니다 final List<Team> result = entityManager.createQuery("select m.team from Member m", Team.class) .getResultList(); 처음 강의를 들으며 위 코드 실행시에 로그를 확인해 보니 select             team1_.id as id1_27_,             team1_.name as name2_27_          from             Member member0_          inner join             Team team1_                  on member0_.team_id=team1_.id 실제 쿼리는 위와 같이 제대로 inner join 발생하는것을 확인 했습니다 그런데, 단일 값 연관경로의 경우 탐색이 가능하다고 하셔서  final List<String> result = entityManager.createQuery("select m.team.name from Member m", String.class) .getResultList(); 위와 같이 팀명을 조회하는 코드를 실행하고 로그를 보니 select             team1_.name as col_0_0_          from             Member member0_ cross          join             Team team1_          where             member0_.team_id=team1_.id 위와 같이 inner join이 아니라 cross join이 발생 했습니다 1번째 쿼리에서 전체 컬럼이 아니라 name 컬럼만 select 할것으로 예상했는데 join 형식이 같이 바뀌어 버립니다 m.team, m.team.name 조회시 join 형식이 어떤 이유로 바뀌는지 궁금합니다

0
youngyun jo 프로필

batch_size에 대해서 질문이 있습니다. youngyun jo 1일 전
hibernate.jdbc.batch_size 를 2로 주고, 영속성 컨텍스트에 4개의 엔티티를 저장하면 결국에 트랜젝션 커밋시점에 4개의 쿼리가 나가는데.. 여기서 궁금한게 있어서 질문을 드립니다. 1) 배치사이즈가 2이고 엔티티가 4개가 저장되어있다면, 배치 사이즈 크기에 해당하는 2개의 엔티티를 저장하는 쿼리가 실행될꺼 같았는데 아닌가요? 2) 테스트해본 결과 4개의 insert 쿼리가 내보내지는데 이 시점에 배치에 해당하는 최적화가 이루어지는건가요? 대용량으로 배치작업으로 어떠한 이점이 있는지 알고 싶어서 질문드립니다.그리고 유익한 강의 매우 재밌게 잘 듣고 있습니다. 감사합니다.

0
빡친사람 프로필

JOIN 전략시 하위 테이블 PK, FK는 JPA에서 알아서 처리하는건가요? 빡친사람 7일 전
Album, Book, Movie 테이블에서 따로 필드 생성하지 않고 별다른 어노테이션도 추가하지 않았는데  create table 호출시 자동으로 id 컬럼이 등록됩니다 이 내용은 JPA에서 상속관계라는걸 감지하면 알아서 상위 테이블의 PK를 하위 테이블에 매핑해주는건가요? 혹시 자동으로 매핑해준다면 하위 테이블에서는 다른 컬럼명으로 매핑할 수 있는 방법도 있을까요? ex) item.id <-> album.item_id, book.item_id, movie.item_id

1
haru 프로필

안녕하세요 강사님 커리큘럼에대한 질문드립니다. haru 8일 전
강사님의 강의 로드맵을 수강하려는 학생인데요. 혹시 자바ORM JPA기본~활용수강전에 servlet/JSP프로그래밍 과 sql 강의를 먼저 학습해야하는지 궁금합니다. 만약 해야한다면 오라클과 mysql중에 어떤것이 좋을까요..? 혹은 미리 배워야할것/같이 배우면 좋을것을 알려주시면 감사하겠습니다. 감사합니다.

1
YoungHo Seong 프로필

임베디드타입 그리고 Id지정 질문입니다. YoungHo Seong 9일 전
이전에 질문을 했어야 했는데 지금 시점에 궁금해서 질문 남깁니다. 현재 DB모델 관계를 보면 member - orders - product orders가 Id를 가지고 있기는하지만 fk2개일경우 pk로 사용할수 있다고 알고 있습니다.1. member_id, product_id를 orders에서 Id로 사용하고 싶을경우 어떻게 해줘야하나요?2. member_id, product_id를 하나의 임베디드 객체로 만들어서 Id로도 사용이 가능한가요?

1
김영규 프로필

질문 있습니다. 김영규 11일 전
안녕하세요. 예제를 진행하며 질문이 있습니다. findMember.setName메소드를 통해 member객체의 name속성을 "HelloJPA"로 set 한 후 변경을 감지하여 update쿼리를 날리게 한 후 다시 main 메소드를 실행하면 동일하게 findMember.setName메소드를 통해 member객체의 name속성을 "HelloJPA"로 set 하겠지만 update쿼리는 출력되지 않는 것을 보면, 또한, findMember.setName(new String("HelloJPA"))도 update 쿼리는 출력되지 않는 것을 보면 변경을 감지한다는 의미가 name의 경우 hashCode나 equals 여부인 것 이려나요...;; 

1
빡친사람 프로필

대규모의 레코드가 저장된 테이블 컬럼 추가시에는 어떤 방법을 쓰나요? 빡친사람 12일 전
강의 내용과는 관계가 없는 질문이지만...스키마 자동생성 옵션 사용시 운영에서는 create, create-drop, update 사용하지 않는것이 좋다는 말씀을 듣고 갑자기 궁금해졌습니다 create, create-drop 같은 경우는 테이블 drop 시켰다가 재생성 하는거라 레코드가 싹 다 날아가니 당연히 하면 안되는건 알겠는데 update같은 경우는 기능 적용하려면 어떻게든 컬럼 추가가 필수인데 외부에서 직접 ALTER TABLE 실행하더라도 똑같이 테이블 lock이 걸리지 않을까 생각합니다 저희 회사같은 경우는 레코드가 많아봤자 몇만건이라 길어봐야 몇초 내로 끝나기에 배포시간에 맞춰 ALTER TABLE 직접 실행하곤 합니다 (애초에 SPRING, JPA 사용도 안하는곳이라 이렇게 할 수 밖에 없지만...) 대기업의 경우 레코드가 엄청 많이 들어가있을거 같은데 이런 경우 테이블에 컬럼 추가가 필요하다면 어떻게 처리하시는지 궁금합니다

1
ymyj33 프로필

영속성 컨텍스트2번 강의 샘플코드에 대한 질문이 있습니다. ymyj33 13일 전
안녕하세요. 선생님 강의 잘 듣고있습니다. 다름이 아니라 영속성 컨텍스트2 번 강의에 20분쯤 코드관련 질문이 있습니다.  선생님이 쓰신 코드 제가 따라 쳐보면 나오는 코드 primaryKey로 선생님은 치시면 되시는거 같던데.. 저는 왜 o: 이렇게 표시되는 건지 궁금합니다.

2
대동소이 프로필

h2database 콘솔 접속시, 연결 거부문제.. 대동소이 14일 전
안녕하세요 강사님 강의 잘듣고 있습니다. 다름이아니라, h2database 관련 내용중에서 가이드 대로 다 해 봤는데요, h2database 연동이 매우 불안정 한것 같습니다. h2콘솔 접속한다음에 연결 클릭해도,  "페이지에 연결 할수 없습니다." 라고 출력 되기도 하고 그리고, app 실행시 socketTimeOut 뜨면서 잘되다가도 중간에 연결이 끊기기도 하네요.. pom.xml 에 h2database 1.4.199버젼으로 맞춰주고, (물론 h2database도, 199버젼입니다) jdbc 부분도 jdbc:h2:tcp://localhost/~/test로 맞춰 주었습니다. 물론 접속전에 jdbc:h2:~/test이걸로 파일 생성도 해주구요..  저는 window를 쓰고 싶있어서 배치파일 더블클릭하는 식으로 실행하고 있는데 이게 문제가 있는걸까요? cmd에서 netstat -ano들어가도 호스트 번호인 8082가 출력되는 내용은 없구요..  설정 내용들 캡쳐로 보여드리니, 문제가 있는 부분이 있다면 말씀부탁드립니다. h2 콘솔 답변 부탁드립니다.

2
GSP 프로필

객체지향 쿼리 언어1 - 기본 문법 소개부분에서 코드를 따라하던 도중 에러가 발생하여 질문남깁니다! GSP 16일 전
QUERY DSL 파트를 따라하던 도중 아래와 같은 에러가 발생하였습니다. Unable to resolve column "..."  Unable to resolve table "MEMBER" 쿼리문은 정상적으로 날라갑니다. DB 사진 입니다. 간단한 이슈인거같은데 에러를 해결할 방법을 찾지못해 질문남깁니다. 답변달아주시면 정말 감사하겠습니다!

1
donald 프로필

부모 자식관계에서 부모 삭제시 Set Null방법에 대해궁금합니다. donald 16일 전
안녕하세요~  부모테이블과 자식테이블간의 관계를  자식테이블에서 ManyToOne으로 단반향으로만 설정하고 부모의 PK 값이 Null이 허용(FK가 NUll 허용) 되는 테이블일때 부모의 테이블 값을 삭제할 경우 자식테이블에서 참조하고있는 부모의값을 null로 변경하고싶습니다. 인터넷으로 검색해보니 해결책으론 부모테이블 삭제할때 참조하고있는 자식테이블을 조회하여 일일히 반복문을 통해 null을 처리하더라구요 이와같은 방법말고 부모의값이 delete될때 자식이 자동으로 null 처리되게 자동으로 맵핑하는방법이있을까요? DB에선 직접 외래키 설정시  OnDelete, OnUpdate에 제약조건으로 cascade, set null 등을 하는것이 가능한데 위와같은 방법으로 자동 맵핑해줄 수 있을까요? ( 부서 테이블과 사원테이블이 있을때, 신입사원의 경우 부서테이블자체가 존재하지않기때문에 참조값없이 null값을 저장하고부서이동간에 부서가 삭제되었을떄 해당 부서의 인원들을 null 처리 해주시 위함입니다.) @ManyToOne@OnDelete(action = OnDeleteAction.NO_ACTION)@JoinColumn(name ="post_idx")private Post post; public enum OnDeleteAction { /** * Take no action. The default. */ NO_ACTION, /** * Use cascade delete capabilities of the database foreign-key. */ CASCADE} 위와같이 OnDelete 어노테이션으론  NO_ACTION, CASCADE 밖에 존재하지않아서 질문드립니다.

1
YoungHo Seong 프로필

상속관계에서 궁굼한 부분이 있습니다. YoungHo Seong 17일 전
Item class에서 @Entity 어노테이션을 쓰고 Item을 상속받은 Movie, Album class에서 @Entity 을 다시 사용하는데 어노테이션은 상속이 안되는건가요? 아니면 정규화된 테이블 처럼 만들기 위해서 @Entity를 모든 class에 써준건가요? *질문을 정리하자면 어노테이션은 상속을 받을때 같이 적용이 안되는건가요?

1
mingi.kang 프로필

fetch 조인, 엔티티 그래프 질문입니다. mingi.kang 19일 전
안녕하세요. 강의를 들으며 조금 불분명한 부분이 있어서 질문 남깁니다. 가령 멤버들의 팀을 조회하는 쿼리를 작성한다면 우선 팀 전체를 조회하는 쿼리가 실행되고 각 팀이 자신들의 멤버를 조회하는 쿼리가 전체 팀의 수 만큼 발생될것 같습니다.(N+1문제) 이런 경우에는 오히려 즉시로딩을 사용하는게 맞아보이기에 fetch 조인 혹은 그래프 기능을 사용한다고 이해했습니다만 맞게 이해를 한것인지 잘 모르겠습니다. 조금만 더 설명해주시면 정말 감사하겠습니다. 좋은 하루 되세요. 

4
happysy26 프로필

SequenceGenerator로 시퀀스를 생성했는데 시퀀스가 테이블로 생성됩니다. happysy26 19일 전
어디서 실수한건지 못찾겠네요 ㅠㅠ 분명 @TableGenerator이 아니라  @SequenceGenerator로 생성했는데  시퀀스 이름 자체를 create table로 생성해버리네요  문제가 뭘까요? ㅠㅠ

1
아리마 프로필

양방향 연관관계에서 지연로딩 문의드립니다. 아리마 19일 전
최근에 영한님 강의를 다시 한번 보고 있습니다. 지연로딩에서 궁금한 부분이 하나 생겼는데요. Team 과 Member 로 양방향 연관관계를 설명해 주실 때,  위 코드에서 Member 의 select 절이 지연로딩으로 수행되고 안되고의 기준은 1차캐쉬에 값이 있고 없고라고 말씀해 주셨는데요. 그 1차 캐쉬의 기준이 조금 궁금해졌습니다. em.persist 로 Team 을 저장했을 때도 Team 에 대한 1차 캐쉬는 존재할테고, em.clear 이후 em.findTeam 을 했을 때도 1차 캐쉬에는 값이 생성된 시점일텐데요.. 그런데 전자에서는 getMember 의 지연로딩이 발생하지 않고 후자에서만 지연로딩이 발생하는 메커니즘이 좀 궁금해졌습니다. 제가 너무 어렵게 생각하는 걸까요? ㅎㅎ 

1
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스