월 16,940원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 컨텍스트 질문입니다.
3:58초 경에 findMember.setAge(20)으로 결과가 바뀌면 영속성 컨텍스트에 관리가 되는 거고, 안바뀌면 관리가 되지 않는다라는데 이유가 뭔가요 ?JPA가 DB의 데이터에 접근하고 수정하고 작성,삭제 할 수 있다 = 영속성 컨텍스트가 관리한다 같은 말일까요 ?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
상품주문 질문
한명의 회원이 하나의 상품을 여러개 주문하는 것은 가능하지만, 여러개의 상품을 주문하지는 못하나요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일대다 관계에서의 값타입 질문입니다.
@OneToMany @JoinColumn(name = "MEMBER_ID") private Order order; @OneToMany @JoinColumn(name = "MEMBER_ID") private List<Order> orders; 두개가 무슨 차이가 있는지 궁금합니다.일대다 관계라면 컬렉션을 안써도 되지 않나요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Hello JPA-프로젝트 생성 초기 세팅을 도와주세요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의 영상을 보면서 따라 해보려는 중 인대 실제 프로젝트 생성부터 의존성 파일 작성 시 버전이 완전히 다른 것 같아 도움 글 올립니다.강의 자료에는 version: 1.0.0을 사용하라고 나와 있지만 해당 버전으로 생성이 불가능 하여 최신 버전으로 프로젝트를 생성했습니다.그에 따라서 강의자료를 복붙 할 때도 혹시 몰라 현재 설치한 h2 데이터베이스 버전과 Hibernate 최신 버전으로 맞추었습니다.이후 강의 자료에서 /META-INF/persistence.xml를 생성 하라고 하여 따라 하였습니다.하지만 프로젝트 버전도 다르고 하여서 인지 이후 따라하기 실습 중 진행이 되지 않아 질문 글 올리게 되었습니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Integer 타입 질문입니다
public static void main(String[] args) { Integer a = Integer.valueOf(10); Integer b = a; a = 20; System.out.println("a = " + a); System.out.println("b = " + b); }=======출력값 ========a = 20b = 10이렇게 하면 값이 변경되는데 PPT에서 변경X라는 말이 무슨 말일까요 ?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
즉시로딩과 지연로딩의 성능 차이에 대해 궁금합니다.
Member와 Team을 예로 생각했을 때즉시로딩 -> Member만 필요해도 Team과 쿼리문이 같이 나감지연로딩 -> Member만 불러오고, Team은 프록시 객체로 불러와서, Team이 필요할 때 영속성 컨텍스트에 연결을 요청하고 요청 쿼리문이 나가는 것이 맞나요 ? Member.getTeam().getName()을 1번 수행한다고 했을 때 즉시로딩(Member + Team 쿼리문 같이)의 성능이 지연로딩( Member 쿼리문 따로, Team 쿼리문 따로)보다는 좋지만 강의에서 나온 여러가지 문제로 웬만해서는 지연로딩을 사용하는 것이 더 좋다. 이것이 맞나요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Item - OrderItem 관계 및 양방향관계?
ORDERS와 ORDER_ITEM의 관계는 하나의 주문 안에, 주문된 여러가지 아이템(book,album,movie등)이 있을 수 있기 때문에 1:N인 것 이 맞나요 ?OrderItem과 Item의 관계가 잘 이해 가지 않아서 찾아보다가 https://www.inflearn.com/course/lecture?courseSlug=ORM-JPA-Basic&unitId=21699&category=questionDetail&tab=community&q=805804 이 답변을 보고 헷갈리는 부분이 있는데요. Book을 n번 주문할 수 있기 때문에 1:N이라고 하셨는데 이 말은 즉, Book이라는 아이템 안에서도 주문된 여러가지 책(일본 책, 독일 책, 한국책) 이 있을 수 있기 때문에 1:N이라는 말일까요?어떤 Member가 어떤 주문을 했는지 Order를 참고하는 것과 어떤 Order가 무엇을 구매했는지 Order_Item을 참고하는 것이 같은 맥락이라고 생각하는데 전자는 잘못된 설계고 후자는 괜찮은 설계인 이유는 무엇일까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
살려주세여~~ h2 Database - > Mariadb 연동 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요.기존 강의에서는 H2 데이터 베이스로 연동하는영상으로 나와 있는데 ,저는 MariaDB로 변경해서사용을 하고 싶어서 MariaDB 설정으로 변경해서H2 콘솔을 실행을 시키니깐 해당 오류가 발생합니다제가 수정한 부분persistence.xml , application.properties , pom.xmlMariaDB 관련 설정으로 수정을 해줬습니다....H2 콘솔에서 저장한설정 - >Generic MariaDB 변경해줬고 접속 url을 jdbc:mariadb://localhost:3306/{제 DB명}입력해서 접속을 했었습니다만, 아래의 오류가 발생한 상황입니다Class "org.mariadb.jdbc.Driver" not found [90086-214]
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
외래키의 위치?에 관해 질문입니다.
public class Team2 { @Id @GeneratedValue @Column(name = "TEAM_ID") private int id; private String name; @OneToMany @JoinColumn(name = "MEMBER_ID") private List<Member> members = new ArrayList<>(); }public class Member2 { @Id @GeneratedValue() private Long id; @Column(name = "name") private String username; @ManyToOne(mappedBy = "members") private Team team; } 강의를 듣다가 외래키를 Team에 두면 안되는 것인가? 하고 혼자 코드를 작성해보았는데요.@ManyToOne은 mappedBy옵션을 지원하지 않는 걸로 봐서 1:N에서 N쪽이 외래키가 있어야하고, 연관관계의 주인이 되어야하는 것 같은데연관관계의 주인이 되는 외래키는 어떤 방식으로 설정해주나요 ?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
값 타입이라는건 결국 엔티티 객체 안에 포함된다 라고 생각해도 될까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. JPA에는 두가지 데이터 타입 (엔티티,값타입)이 존재한다고 하셧는데 값 타입의 설명을 들어보면 뭔가 자바에서의 primitive type이나 객체들의 이야기랑 많이 비슷한거 같아서요 , 제가 당장 이해한 바로는 엔티티 객체 안에 여러 값타입이 존재한다 라고 생각이 되는데 제가 올바르게 이해하고 있는지 궁금합니다..
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@NotNull과 nullable의 차이 및 EnumType 질문
둘 다 null을 허가하지 않는 다는 의미로 쓰이는 것 같은데어떤 차이가 있는 건가요 ? @EnumType 애노테이션을 제거하고 멤버를 추가해도 @EnumType.Ordinal 옵션을 적용 한 것처럼 Integer로 컬럼을 만들고 user = 0, admin=1 으로 잘 저장하던데 @EnumType은 어떤 역할을 하는 것인가요? EnumType.String이 필수로 써야할만큼 EnuType.Ordinal은 안좋은 옵션같은데 Default가 String이 아니라 Ordinal인 거는 따로 무슨 이유가 있는 건가요 ?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 컨텍스트의 성능적 이점이 있나요 ?
1차 캐시, 쓰기지연, 더티체킹(스냅샷), 지연로딩영속성 컨텍스트의 특징이 이정도인 거 같은데 더티체킹은 엔티티(객체)를 컬렉션에서 관리하듯이 도와줘서 수정측면에서 도움이 많이 되는 것 같긴 한데 1차캐시나 쓰기지연 로딩은 디비에 데이터 몇 번 덜 접근한다고 해서 큰 차이 없을 것 같은데 성능적인 측면에서 많이 도움 되나요?실무를 해본 적이 없어서 제가 잘 모르는 것일까요 ?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Maven을 많이 사용하나요 ?
DB 접근 2편이나 활용1편에서는 Gradle을 사용해서application.properties를 통해 h2를 설정하고 build.gradle을 통해서 라이브러리를 받아왔던 것 같은데 이번 강의에서는 xml파일들을 사용해서 상당히 어색한데요.최근에 Gradle을 많이 사용한다면 xml로 설정하는 방법을 따로 공부할 필요는 없을까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
데이터 베이스가 자꾸 오류나요
해당 오류가 생기면서 데이터베이스 로그인이 되지 않습니다. 뭘 어떻게 해야하나요....
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@ManyToOne이 외래키를 생성해준다고 이해해도 괜찮을까요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 김영한님 설명을 들어보면 @ManyToOne어노테이션이 다대일 관계에서 객체와 테이블을 매핑해준다고 하셧는데 , @ManyToOne이 사용되면 객체와 테이블을 매핑해줌과 동시에 테이블에서도 외래키를 생성해준다고 생각하면 맞을까요??
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
16:25초 부터의 설명이 이해가 가지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@Column에서 unique나 length제약조건을 거는것은 런타임에 영향을 주지 않는다 하시고 @Table에서 name을 사용해서 테이블 명을 바꾸는것은 런타임에 영향을 주신다고 하셧는데 둘의 차이를 이해하지 못하고 있습니다. @Table의 name을 변경하는것이 인서트 쿼리나 업데이트 쿼리에 영향을 준다고 하셧는데 이 말 자체를 이해하지 못하고 있는 것 같습니다..
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
mappedSupperclass를 왜 써야하는걸까요??
mappedSupperclass를 안써도 될 것 같은 느낌이 들어 test코드를 작성해보았습니다. 하지만 값이 안들어 왔다는 null 결과가 나오더라구요 흠,, 정말 변수들에 값을 넣어주기 위해 mappedSupperclass를 사용하는건가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
쓰기지연, 변경감지 매커니즘의 동작과정에 대해서 질문드립니다.
그림상에서 flush가 두번 찍혀있어서 매커니즘의 구동 순서가 조금 햇갈려서 그런데1번의 flush와 4번의 flush의 의미가 조금 다른건가요? 아니, flush가 두번 동작하는건가요?우선은 선생님께서 트랜잭션 커밋 요청 시 내부적으로 flush가 발생한다고 하셨습니다.flush의 동작과정이 1차 캐시의 최초 스냅샷과 수정된 Entity의 값을 비교하고 변경내용 있을 경우 저장소에 UPDATE쿼리 저장하고 쿼리를 실행하는것까지가 맞을까요?그렇다면 쓰기지연의 경우에도 동일한 매커니즘처럼 보이는데 해당 그림에서는 flush가 빠져있어서 조금 햇갈리네요..쓰기지연의 경우는 persist 동작과정중에 따로 flush를 하지 않고 1차캐시에 저장됨과 동시에 쓰기지연 저장소에도 저장된다고 설명해주셨고, 이후에 트랜잭션 커밋 요청시 내부적으로 flush가 발생하면서 쿼리가 실질적으로 실행된다는 순서로 이해했습니다.강의 내용상으로 요약해보면 [쓰기지연] persist호출 후 flush 호출persist에서 INSERT 쿼리 저장flush에서 저장된 쿼리 실행[변경감지] flush가 두번 작동첫번째 flush에서 변경감지후 UPDATE 쿼리 저장두번째 flush에서 저장된 쿼리 실행이렇게 차이가 나는걸로 이해를 했습니다.두 매커니즘이 위와 같이 약간의 차이가 있는게 맞을까요?그리고 추가적으로 엔티티 삭제 remove시에는 직전 내용인 변경감지와 동일한 매커니즘이라고 설명해주셨는데아무리 생각해도 delete의 경우에는 변경감지의 매커니즘보다는 쓰기지연의 매커니즘과 같다고 생각이 들어서 질문드립니다!질문드리기가 조금 까다로운내용이라 저의 궁금포인트가 이해가 되셨는지 모르겠네요...영속성 관리 파트의 모든 강의를 들어야 명확하게 이해가 가능한건지제가 너무 까다롭게 이해하려고 하는 건지 그래도 순서를 조금 철저히 명확하게 알아야 정확하게 JPA를 사용할수 있지 않을까 싶어 질문드리오니 너그러운 마음으로 답변 부탁드리겠습니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
find() 영속화 이후 저장, 쿼리 순서 트랜잭션영향여부
저장의 경우에 persist 이후 transaction commit시점에 쿼리를 날린다고 하신건 이해가 됬습니다.혹시 그렇다면 find시에는단순히 find해서 영속성을 두번 조회할때 로직 절차상으로는 member1을 영속화 하면서 1차캐시에 저장해둠과 동시에 SELECT쿼리가 나가고 member2를 조회할때 1차캐시에서 조회하는것에 대해서 이해가 되었습니다혹시 이때에는 갱신에서의 절차와 같이 아래의 트랜잭션 commit과는 연관없이 find()시 바로 영속화와 Select쿼리를 동시에 날리는것인가요?그리고 하나 더, JPA를 떠나서 스프링에서 데이터 처리를 하는 경우 readOnly=true 옵션인 SELECT에는 트랜잭션을 걸지 않아도 상관이 없는것 인지도 궁금합니다.보통은 전체단위로 트랜잭션을 readonly default로 걸어주고삽입 혹은 삭제 등의 갱신에서 추가적으로 readOnly=false옵션을 걸어주는방식으로 개발을 진행해왔습니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
방대한 유저의 데이터들이 유입되었을 경우
수업을 듣다가 혼자서 만드는 것이라도 프로그램을 설계할 때 방대한 유저들의 데이터가 유입되었을 경우를 생각해보면서 설계하는 것이 좋을 것 같다는 생각이 들었습니다. 만약에 실제 프로그램이라면 여러 클래스 혹은 데이터베이스를 건드는 코드가 방대하게 있을텐데, 어떤 부분 혹은 코드가 성능을 저하시키고 어떤 코드가 잘 짜진 곳이라고 현업에서 어떻게 판단하시는지 너무 궁금합니다. ㅎㅎ 항상 강의 너무 유익하고 감사하게 듣고 있습니다. ^^