월 16,940원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
maven이 안됩니다.. 도움 부탁드립니다.
무직이라 가지고 있는 돈 큰 맘 먹고 책과 인강까지 구입했는데 첫 시작부터 막힙니다. 3~4시간동안했는데 안되니까 많이 속상하네요.. 도움 부탁드립니다...하...
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
notnull을 붙여야하는 이유
int와 같은 원시타입에 null을 입력할 수 없잖아요그래서 nullable = false를 추가하는게 안전하대요근데 전 왜 그게 안전한건지 모르겠어요만약에 에러가 터졌을때 저는 에러내용을 보고 null을 넣어서 에러가 난것을 파악할 수 있을거예요근데 그게 nullable=false인데 null을 넣어서 에러가 난것인지, int와 같은 원시타입에 null을 넣어서 에러가 난것인지에 따라 차이가 있을까요? 에러출력내용은 비슷하게 뜰텐데요..ㅜㅜ
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
transactional이 붙은 메서드의 마지막 쿼리는 날아가지 않는다
@Transactioanl이 붙은 메서드의 마지막 쿼리는 날아가지 않아요@Commit까지 추가해야 마지막쿼리가 출력이되더라구요그 이유가뭔가요..? 마지막 쿼리까지 다 날리고 나서 롤백을 시켜야 논리적으로 맞는 것 같은데..1. flush()메서드 호출2. 엔티티와 스냅샷비교3. 업데이트 쿼리 생성 후 쓰기지연 sql저장소로 보냄4. 디비에 flush5. 디비에 commit4번에서 쿼리가 발생하고 5번에서 롤백이 일어나야하는거아닌가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
IDENTITY - 트랜잭션을 지원하는 쓰기지연
JPA책의 135P를 보면IDENTITY는 트랜잭션을 지원하는 쓰기지연이 안된다고 했는데 save를 제외한 update, delete등은 동작하지않나요?SAVE일때는 디비에저장해야 식별자를 구할수있으니까 그랬던거고 UPDATE는 이미 식별자를 알고있잖아요아래와같이 테스트를 해봤을때도 update문이 가장 마지막에 출력이 됩니다.@Test @Commit @Transactional public void Parent_Child(){ Member member = Member.builder().name("김길동").build(); em.persist(member); System.out.println("-====="); em.flush(); em.clear(); Member member1 = em.find(Member.class, member.getId()); member1.setName("이름바꿈"); System.out.println("===="); }
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@Entity적용시 제약사항이 필요한 이유
@Entity적용시-기본생성자는 필수- final클래스, enum,interface,inner클래스에는 사용할 수 없음- 저장할필드에 final을 사용하면안된다-> 이런 제약조건이 붙는 이유는 뭔가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
flush, flush(), commit의 차이
flush, flush(), commit의 차이1. 엔티티와 스냅샷 비교 후 변경된 것에 대한 SQL 생성2. 생성된 SQL을 쓰기 지연 SQL 저장소에 등록3. 쓰기 지연 SQL 저장소에 등록된 쿼리를 DB로 전송flush() : 1+2+3flush : 3그리고 commit까지 진행해야 디비에 반영됨.그렇다면 commit은 오류없이 완료되었다는 증명같은건가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
em.persist도 jpql인가요?
em.createQuery()로 객체 대상으로 쿼리날리는게 jpql이고em.persist는 jpql이 아닌가요? 그냥 바로 sql을 날리는건가요?jpql 호출시에 flush가 발생하는데em.persist할때도 flush가 발생하나요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
merge
merge는 다음과 같이 동작해요1. 1차 캐시에서 엔티티를 찾는다2. 없으면 디비를 조회한다3. 찾아온 것에 값을 채운다 없으면 새로운 객체를 생성하고 거기에 값을 채운다4. 그리고 값을 반환한다근데 merge는 준영속을 영속화시킬때 사용하잖아요준영속인 개체가 1차캐시에 있을리 없지않나요? 1의 과정을 왜 거치는건가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
기본키매핑-24:30
아래와 같이 에러가납니다.테이블 drop 치고 실행했을 때 입니다.사진과 같이 에러나는 이유가 뭐죠?Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "ID"; SQL statement:
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
영속 엔티티 동일성 보장해주는 코드가 어디에 있는지 궁금합니다
안녕하세요 영한님!!!동일성 보장을 애플리케이션 쪽에서 해주는 코드를 뜯어보고 싶은데 보이지가 않습니다package org.hibernate.internal; public class SessionImpl extends AbstractSessionImpl implements EventSource, SessionImplementor, HibernateEntityManagerImplementorSessionImpl 클래스를 보니까 Map<String, Object> 형태로 저장하기 때문에 동일성이 보장이 되는 걸까요??어느 부분에서 같다고 판별을 하는지 너무 궁금합니다!!!!제가 내린 결론은 MetamodelImpl 클래스에 entityPersisterMap 에서 판별을 하는 것 같습니다!! 수정 ----------------------- 친구가 이거 같다고 해서 이 클래스를 보니까 hascode equals 가 오버라이딩 되어 있었습니다.제가 이해한 바로는 이 entitykey 가 같은 객체를 반환하니까 동일성보장이 된다고 생각합니다.https://docs.jboss.org/hibernate/orm/3.2/api/index.html공식문서를 보니까 EntityKey 가 Serializale id 이 고윳값으로 구분하는 것 같습니다!!제가 이해한게 맞을까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
setter를 private으로 바꾸거나 생성을 안 할때
현재 학습 중인 jpa와 조금 거리가 먼 질문인데요.Spring JPA를 가지고 토이 프로젝트를 진행하고 있는 와중에 문제가 생겨 질문 드립니다.강의에서 말씀 한 것처럼 처음 생성 할 때만 값을 지정하고 중간에 값을 변경하지 못하도록 setter없이 생성자로만 작업하다 발견한 부분인데..thymeleaf 에서 input 값을 받을 때 name으로 받고 있습니다.하지만 setter가 없으니 값을 null로 받는 상황이 나오는데 이럴 때 실무에선 어떻게 해결하나요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
persistence.xml 클래스 관련 문의
안녕하세요.이클립스에 객체를 추가할때마다 persistence.xml에 클래스를 매핑시켜줘야 하는데 하나씩 추가 매핑이 아닌 자동으로 매핑이 가능한지 여쭤보고 싶습니다!
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
getFavoriteFoods() 질문
11분 10초 정도에 getFavoriteFoods()를 어떻게 할 수 있는건가요 get이라는건 값이 있는걸 가져오는 것 같은데 강의를 보면 set도 안해줬는데 어떻게 getFavoriteFoods를 할 수 있는지 궁금합니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
jpa에서는 같은 영속성 컨텍스트 레벨안에서 ==(instance of) 가 true가 나와야 하는 이유가 궁금합니다
(프록시 강의 26분~)안녕하세요영한님께서 jpa에서는 같은 영속성 컨텍스트 레벨 안에서 ==가 항상 true를 보장한다고 하셨는데,이 부분이 잘 이해가 되지 않습니다.em.find( = m1) 후 em.getReference( = m2)em.find하면 영속성 컨텍스트에 실제 member가 저장되니까 em.getReference를 하면, 껍데기를 만들고, 영속성 컨텍스트에 실제 entity값을 DB에서 가져다 달라고 요청하려 하는데, 이미 1차 캐시에 entity가 존재해서 em.getReference를 해도 m1 == m2가 성립하는 것으로 이해했습니다. em.getReference 후 em.getReferenceem.getReference => 프록시 객체 반환이때 프록시 객체를 초기화하는 과정에서 영속성 컨텍스트에 실제 entity를 저장할텐데, 다시 em.getReference를 하면 1차 캐시에 있는 entity를 사용하면 될텐데,왜 껍데기를 만들면서 프록시를 유지하는지 궁금합니다. em.getReference 후 em.findem.getReference => 프록시 객체 반환em.getReference에서 프록시를 초기화하는 과정에서 위와 같이 1차 캐시에 entity가 저장될텐데,왜 껍데기를 만들면서 프록시를 유지하는지 궁금합니다. 위의 3가지 예제를 보니, 여러 과정들을 거쳐 결국 jpa는 같은 영속성 컨텍스트 안에서 ==가 항상 true를 보장되는지, 아니면 true를 먼저 보장하기 위해서 다른 과정들을 끼워 맞추는지 궁금합니다. 여러 과정 => 결국에 모두다 ==가 보장됨or 모두 다 ==를 보장해야함 => ==가 true가 나오도록 끼워 맞추자. 마지막으로 jpa가 같은 영속성 컨텍스트 레벨에서 어떻게 ==를 true로 보장해주는지도 궁금합니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
em.find(Member.~ 이부분에서
Member findMember = em.fin(Member.class, primaryKey --> 요 primary key 부분이 전 o: 로 대체되는데 어떻게 해야 primarykey 로 바뀔까요?? 인텔리제이 쓰고 있습니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
6분 47초에 왜 업데이트 쿼리가 2번 나가는지 궁금합니다!
값이 변경되는건 1개인데 쿼리는 왜 2개나가는지 이해가 잘 되지않습니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
인텔리제이 무료버전을 사용해서 그런데
period같은 객체를 member에 작성할 때 @Embeddable을 사용해야 오류가 안난다고 나와있는데team같은 객체는 member에 작성할 때 many to one같은 어노테이션을 작성해서 오류가 안나는 건가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
json column type 문의
실 사용중에 질문이 있어서 문의드립니다.db column 타입이 json으로된 컬럼의 경우 querydsl 사용시에 해당컬럼을 where절에 사용하는방법이 없을까요?.like , .eq 기능을 사용하고 싶은데 잘안되네요
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
구현 클래스마다 테이블 전략 질문
30븐 10초 쯤에 아이템 아이디가 5번인것으로 예를 들어주셔서 아이템 id가 5번인 table을 모두 다찾는다고 했는데 이해가 되지 않습니다.em.find를 할때 클래스를 넣어주는데 왜 table을 모두 다 찾나요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA 질문입니다.
안녕하세요 김영한님! 다름이 아니라 김영한님 JPA책을 읽으면서 궁금한게 생겨서요.db read commtied + JPA 1차 캐시를 사용하면 repeatable read가 가능한데 JPA 락은 더 높은 격리 수준이 필요하면 건다고 하셨는데 serializable 격리 수준이 필요하면 해결 할 수 있는 락이 없는데 JPA 락을 왜 쓰는지 모르겠습니다