@Entity public class Team { @Id @GeneratedValue @Column(name = "TEAM_ID") private Long id; private String name; @OneToMany(mappedBy = "team") private List<Member> members = new ArrayList<>(); // 아래는 getter, setter } @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Team getTeam() { return team; } public void setTeam(Team team) { this.team = team; } public void changeTeam(Team team){ this.team = team; //연관관계 편의 메소드 team.getMembers().add(this); } } public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { //저장 Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member(); member.setUsername("member1"); //member.setTeam(team); //owner에 넣어야 DB 반영됨 member.changeTeam(team); //연관관계 편의 메소드 em.persist(member); Member member1 = new Member(); member1.setUsername("member2"); member1.changeTeam(team); em.persist(member1); em.flush(); em.clear(); Team findTeam = em.find(Team.class, team.getId()); List<Member> members = findTeam.getMembers(); System.out.println("====================="); for (Member m : members) { System.out.println("m = " + m.getUsername()); } System.out.println("====================="); tx.commit(); } catch (Exception e){ tx.rollback(); } finally { em.clear(); } emf.close(); } Team, Member가 양방향 연관관계를 맺고 있는 상태에서 우선 Team을 조회하고 Team의 members를 사용하는 시점에 Member를 조회하는 예시입니다. 처음에는 select m.team_id, m.member_id, m.username from member as m where member.team_id = 1; 이런 형태로 select 쿼리가 발생할 것으로 예상했습니다. 하지만 실제 hibernate로 발생한 쿼리를 확인하니 아래와 같은 쿼리가 발생했습니다. Hibernate: select members0_.TEAM_ID as team_id3_0_0_, members0_.MEMBER_ID as member_i1_0_0_, members0_.MEMBER_ID as member_i1_0_1_, members0_.TEAM_ID as team_id3_0_1_, members0_.USERNAME as username2_0_1_ from Member members0_ where members0_.TEAM_ID=? hibernate가 생성한 select쿼리에서 team_id, member_id 컬럼이 두번 나오는 이유가 무엇인가요?
OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release. 아래의 오류는 어떻게 해결해야 하는지 잘 모르겠습니다...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 계속 이렇게 뜨는데 런타임때 오류는 딱히 발생하지 않습니다 런타임 이후 런타임을 중지 할때 이런 오류가 계속뜨는데 이유를 모르겠습니다.
안녕하세요! 강의 잘 듣구있습니다 혹시 timestamp를 제거하는 이유가 어떤것인지 자세히 알 수 있을까요? 상품추천 데이터에서 날짜가 변수로 필요한 경우는 없나요?? 또 예를들어 5년치의 고객 구매 데이터를 학습한다고 할때 연도별로 고객 나이가 달라지는데 이때 유니크값을 고객+나이로 해서 해야할지 궁금합니다ㅠㅠ
수업 내용의 프린트 구문은 void swap(int* u, int* v) { printf("%p %p\n", u, v); int temp = *u; *u = *v; *v = temp; } 이런식으로 되어있는데 u와 v에 &기호를 붙혀주면 a, b 와 주소가 다르게 나오는데 어떤 주소인지 잘 모르겠습니다..
이런식으로 한글이 깨지는데, 처음엔 @Getter나 jackson라이브러리나 slf4j가 깨지는 줄 알았는데 게터 세터 직접 구현하고 브라우저에서 찍고, ide상에서 System.out.println으로 찍어도 깨지네요 ㅠㅠ.. 검색해서 나온 이런것 다 해보았습니다. vmoption 파일도 수정했습니다. 실행 옵션에 따라 동적으로 서비스 명 다르게 해서 배포하고 싶었는데, 잘 안되네요 ㅠㅠ.. 강의를 따라했을 때 국제화 message는 안깨졌었는데 이상하네요..
안녕하세요. 수업 중 궁금한 사항이 있습니다. diabetes_data[zero_features] = diabetes_data[zero_features].replace(0, diabetes_data[zero_features].mean()) 이렇게 구현하면 0이 평균에 포함되어서 평균값이 왜곡되지 않는지요? diabetes_data[zero_features].mean() 아래와 같은 식으로 0제외한 값으로 대체 되어야하는것 아닐지요? diabetes_data[diabetes_data[feature] != 0][feature].mean() 특정한목은 43%나 0값이 있는데, 0을 포함한 평균값이면 평균값이 매우 낮아질것 같아서요. 감사합니다.
안녕하세요 :) 최소 주문 금액이 도달하지 않아서, 이탈을 많이 했을것이라고 생각하고, 이를 데이터로 검증하려고 한다. -> 최소 주문 금액 미충족 카트 화면을 보고 주문을 하지 않고 이탈한 유저의 비율 확인 위와 같은 흐름으로 생각하는 것이 더 가설과 맞지 않나 생각이 드는데, 혹시 제가 파악하지 못한 흐름이 있을까요??
자바 기본을 공부할 때 이해가 안되어도 그냥 지나가고 모르는 부분을 다시 공부하는게 나을까요 아님 이해할때까지 게속 공부를 하는게 나을까요? 스프링까지 공부하다가 다시 자바 기본을 공부하고 있는데 자바 기본만 계속 돌고 있는 기분이라서요 기본을 다 끝내고 자바 문제들을 풀고 스프링으로 넘어가는게 나을까요? 답변 부탁드립니다. 감사합니다.