묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 편의 메서드
안녕하세요, 영한님 강의에선 위처럼 하셨는데 궁금한게 생겨 질문드립니다. 1. 위 대신에 아래처럼 Member 엔티티에 연관관계 메서드를 해도 되나요? public void addOrders(Order order){ this.orders.add(order); order.setMember(this);} 2. 연관관계의 주인에 편의 메서드를 하는게 좋은건가요? 3. 둘다 작성하면 안되나요? 감사합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
대규모의 레코드가 저장된 테이블 컬럼 추가시에는 어떤 방법을 쓰나요?
강의 내용과는 관계가 없는 질문이지만...스키마 자동생성 옵션 사용시 운영에서는 create, create-drop, update 사용하지 않는것이 좋다는 말씀을 듣고 갑자기 궁금해졌습니다 create, create-drop 같은 경우는 테이블 drop 시켰다가 재생성 하는거라 레코드가 싹 다 날아가니 당연히 하면 안되는건 알겠는데 update같은 경우는 기능 적용하려면 어떻게든 컬럼 추가가 필수인데 외부에서 직접 ALTER TABLE 실행하더라도 똑같이 테이블 lock이 걸리지 않을까 생각합니다 저희 회사같은 경우는 레코드가 많아봤자 몇만건이라 길어봐야 몇초 내로 끝나기에 배포시간에 맞춰 ALTER TABLE 직접 실행하곤 합니다 (애초에 SPRING, JPA 사용도 안하는곳이라 이렇게 할 수 밖에 없지만...) 대기업의 경우 레코드가 엄청 많이 들어가있을거 같은데 이런 경우 테이블에 컬럼 추가가 필요하다면 어떻게 처리하시는지 궁금합니다
-
미해결실전! Querydsl
QDSL로 복잡한 쿼리를 어느정도 커버 가능한가요?
안녕하세요~ 좋은 강의 감사합니다. SPRING DATA JPA 강좌 부터 듣고 있는데 JPA의 장점은 명확하게 알 것 같습니다. 간단하거나 조회조건이 단순할 경우에는 보다 쉽고 강력하게 느껴지는데요. 쿼리가 복잡할 경우 QDSL을 적극 권유 하시는데 QDSL이 커버 가능한 범위가 어디까지일까요? 일단 말로만 접했을 경우에는 기존에 정의한 ENTITY 클래스로 무언가 프로그래밍 방식으로 처리 한다고 생각했는데 별도의 컴파일 과정이 중간에 들어가는것 같습니다. 그리고 그 컴파일후 결과가 앞에 Q라는 접두어가 붙는데 약간의 혼란스러움이 느껴지네요. 그래서 그런지 실제 통계 또는 여러 테이블을 조인 하거나 조건처리가 많은 동적 쿼리같은 경우에는 오히려 MYBATIS처럼 네이티브쿼리 사용하는것이 결과에 대한 확인과 빠른 대응이 이루어 질 것 같은데요. 그부분에 대해서는 어떠한 생각인지 의견을 듣고 싶습니다. 개인적으로는 JAVA와 QUERY는 성격이 다르기 때문에 분리해야 한다는 생각이 강한 개발자인데요. 그래도 JPA의 장점을 알기에 학습을 하고 있는데 학습 하면 할수록 무언가를 결정하기가 어렵네요 ㅎㅎ. 현재 MYBATIS냐 JPA냐 결정해야 하는 상황이라서 질문드려 보았습니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
v3 질문드립니다.
안녕하세요~~ 제가 이해를 잘 못하고 있는 것 같아서 질문드립니다. 이번 강의에서 정리를 하면서, 엔티티 조회와 DTO 직접 조회로 크게 분류하셨는데, 저는 v3를 DTO List를 Return 하니깐 DTO 직접 조회에 속하는데 이 녀석은 batch_fetch_size 의 도움 또한 받는데, 그렇다면 둘 중 어느 곳에 속하는지 아리송 했는데 PDF정리하신 것을 보니 엔티티 쪽이라고 하셨습니다. 1. 여기서 말하는 DTO 직접 조회란, 엔티티의 다른 필요없는 컬럼을 보여주지 않기 위해서 OrderDto의 형태로 리턴해주는 것이 아니라, 따로 패키지를 만들정도의 DTO 를 칭하는 것인가요 ?? 정확한 구분이 어떤 기준으로 나뉘는지가 너무 헷갈립니다. 알 것 같으면서도 눈앞에서 놓치는 듯한 느낌이네요.. 2. 이번 최적화하는 과정에서의 코드에서 stream() 이용법 등 익숙치 않아서 이해하는데 어려움을 많이 느꼈던 것 같습니다. stream().map ~~ 은 괜찮았는데 리스트를 forEach(o-> ~~ 이런식으로 활용하는 부분이요. 혹시 이것과 관련되어서 어떤 키워드로 찾아서 공부를 해야하는지 알고 싶습니다. java8 stream 으로 공부하면 될까요 ? 이번 강의도 굉장히 도움이 많이되고 감사했습니다!!
-
미해결실전! Querydsl
@OneToMany 인 collection 멤버 필드까지 Projection 가능한지요?
QueryDsl 에서 Projection 기능이 깔끔하고 막강한데요. @OneToMany 인 collection 멤버를 가지고 있는 DTO 로 Projection 을 한번에 가능한지요? Team.members TeamDto.memberDtos Lazy 로 @OneToMany Join 시에.. querydsl 쿼리에서 바로 위와 같이 collection 멤버필드까지 한번에 Projection 이 가능한지요? 아니면 일단 entity 로 읽어서 map() 함수를 이용해서 매핑해 주어야 하는지 궁금합니다.
-
미해결스프링 시큐리티
동시 세션 제어 - 동일 브라우저에서 로그아웃이 정책 미적용
안녕하세요. 강좌를 유익하게 잘 보고 있습니다. 동시 세션 제어 부분에서 해당 Security 2.3.1 버전을 사용하고 있는데 "maxSessionsPreventsLogin(true)" 상태에서 아래와 같은 동작 시 "Maximum sessions of 1 for this principal exceeded" 오류 발생으로 제대로 동작을 하지 않고 있습니다. login --> logout --> 재 login 해당 이슈를 검색을 해보니 "https://stackoverflow.com/questions/41429778/spring-security-logout-and-maximum-sessions" 에서 해결점을 찾을 수 있었지만. securityRegistry 가 Bean으로 노출되지 않는 상태라서 그렇다는데.. 이부분이 이해가 가지 않아서요 버그 인지 실제 스프링 정책인 것인지 , 아니면 스프링에서 유도(?) 하는 코딩 방식이 있는 것인지 궁금합니다. 행복한 날 되세요
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트에 관해서 말씀해주셔서 질문 드립니다.
안녕하세요. 수업 잘 듣고 있습니다. 강의에서 테스트에 관해서 말씀해 주셔서 질문 하나 남깁니다. 번외에 질문이라... 답을 주실지 모르겠지만 실제 현업에서 개발중에 테스트의 Fixture 가 많아지면서 점점 관리에 어려움을 느끼고 있는데 혹여 이런 것에 관리는 어떻게 하면 좋을지 노하우가 있을까요...? 그리고 앞으로의 수업도 기대하고 있습니다. 제대로 익혀서 실무에 적용해 보는것을 목표로 하고 있습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
update에서 form태그 질문드립니다.
updateItemForm.html에서 form태그에 action 속성이 없는데 어케 포스트매핑으로 갈 수 있나요??? ㅠㅠ 초보라 죄송합니당
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 편의 메소드에 궁금한 것이 있어 질문드립니다.
안녕하세요. 우선 양질의 컨텐츠 항상 잘보고 있습니다. 우연히 수강한 jpa 토크온세미나를 시작으로 이렇게 프로젝트 강의까지 오게되었습니다. 많이 배웠습니다. 정말 감사합니다. 다른게 아니라 엔티티 클래스 구현까지 강의를 수강 도중 연관관계 편의 메소드에서 궁금한 것이 있어 글 남겼습니다. 1. 현재 member의 소속 여부에 대한 처리 이를 테면 "Order" 엔티티 클래스에서, member가 orders에 현재 속하고 있는지 확인하고 만약 그렇다면 해당 Orders에서 member를 제거 후 변경된 member를 추가해야하는 것은 아닌지. public void setMember(Member member){ /* if(this.member.getOrders() != null){ this.member.getOrders().remove(this); } */ this.member = member; member.getOrders().add(this); } 그렇지 않으면 특이사항 이겠지만, Order의 member를 변경할 때 member.orders에서 문제가 생기지 않은가 싶어서 주석 부분을 패스하신 이유가 궁금합니다. 더하여 만약 Order의 Member처럼 현업에서 이렇게 변경 소지가 없는 필드 변수를 final 처리하는지가 개인적으로 궁금합니다. 2. 편의 메소드 위치 두번째로 편의 메소드를 어떤 객체가 갖는 것이 옳은가에 대한 고민이 듭니다. 저는 외래키의 주인이 되는, 이를 테면 Member와 Order의 경우 Order에 위치하는 것으로 생각했는데, Order와 OrderItem의 경우 order를 외래키로 주인이 되는 OrderItem이 아닌 Order에서 orderItem.setOrder을 호출하니 어떤 쪽에서 set를 갖는 것이 옳은가 정하기가 어렵습니다. public void addOrderItem(OrderItem orderItem){ orderItems.add(orderItem); orderItem.setOrder(this); } 혹시 현업에서는 이와 같은 상황에서 어느쪽이 '주' 가 된다를 정하는 규칙, 또는 다른 팀원을 위해서 표시하는 방법이 있는지 궁금합니다. ps. 더 좋은 질문을 가져오도록 노력하겠습니다. 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
설계 순서가 궁금합니다.
이 강의에서는 로직을 먼저 짜고 웹 계층을 개발하면서 미리 짜두었던 로직들을 이용해서 금방 끝났습니다. 이렇게 하면 정말 편리할 것 같지만, 한편으로는 페이지가 완성되어 있지 않는 상태로 로직을 짜려니 굉장히 어려울 것 같다는 생갂 또한 듭니다. 매개변수를 어떤 것을 넘겨줘야할지도 혼란스러울 것 같구요. 모든 것을 다 설계한 다음에 로직부터 짜는 것이 보통 일반적인가요 ?
-
해결됨스프링 웹 MVC
add Configuration에서 Tomcat server
Tomcat Server가 없으면 어떻게 해야 할까요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
부모 자식관계에서 부모 삭제시 Set Null방법에 대해궁금합니다.
안녕하세요~ 부모테이블과 자식테이블간의 관계를 자식테이블에서 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 밖에 존재하지않아서 질문드립니다.
-
미해결실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌
cmd에서 사용자계정 생성하실때 오류뜨시는분들
오라클 12c로 넘어오면서 바꼈다네요 .. https://ngg3319.tistory.com/74 한시간삽질했습니ㅏ ㅋㅋㅋㅋ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderItem 과 Item의 관계
Order와 Member나 OrderItem이나 Order 는 다대1 관계인데, Member은 order의 list를 가지고 있고 order 또한 orderitems의 list를 가지고 있습니다. 그런데 item은 왜 orderitem의 list를 따로 @OneToMany를 안해주는지가 궁금합니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
fetch 조인, 엔티티 그래프 질문입니다.
안녕하세요. 강의를 들으며 조금 불분명한 부분이 있어서 질문 남깁니다. 가령 멤버들의 팀을 조회하는 쿼리를 작성한다면 우선 팀 전체를 조회하는 쿼리가 실행되고 각 팀이 자신들의 멤버를 조회하는 쿼리가 전체 팀의 수 만큼 발생될것 같습니다.(N+1문제) 이런 경우에는 오히려 즉시로딩을 사용하는게 맞아보이기에 fetch 조인 혹은 그래프 기능을 사용한다고 이해했습니다만 맞게 이해를 한것인지 잘 모르겠습니다. 조금만 더 설명해주시면 정말 감사하겠습니다. 좋은 하루 되세요.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
cascade에 대해 질문드립니다.
복습을 하던 중 궁금한게 생겼습니다! 고아객체는 OneToMany, OneToOne 에서만 가능하다고 하셨습니다. 이 부분은 고아객체라고 이름 붙여진 이유를 생각해보면 바로 이해가 갑니다. cascade는 어디에서만 가능하다라고 딱 정해져있다고 말씀하시지 않으셨습니다. parent가 child를 add 했을 때에 parent만 올려도 그 list안의 child 까지 다 영속성컨텍스트에 올가가게 된다고 하셨습니다. 그렇다면 OneToMany에서만 쓰이는 것이 아니라면, member(many)가 setTeam으로 team(one)을 정한 다음에 member를 올려도 team도 같이 올라가게되는 것이 맞나요 ? 그렇다면 각기 다른 member1,2 두 명이 같은 팀을 setTeam하였다고 가정할 때 cascade를 수행하게되면 우선적으로 수행한 member (many)로 인해 team(one)이 올라가게되고, 후자의 member가 올라갈 때에는 team은 이미 1차 캐쉬에 있으므로 건너뛰게 되는 것인가요 ?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA와 ORM관련 질문 드립니다 !
안녕하세요.. JPA를 배우면서 의문이 들어 질문 드립니다. JPA 그리고 ORM을 사용하는 이유가 쿼리문을 직접 짜지 않아도.. 혹은 몰라도 객체로서 접근하여 데이터를 가져오는 것이 가능하다는 것과 생산성에 있다는 말씀 하셨습니다. 하지만 제가 JPQL를 배우면서 느낀건 JPQL이지만 똑같이 쿼리를 짠다는 느낌이 들어서요... 그렇다면 특정 조건으로 데이터를 가져올 경우, JPA가 객체지향적으로 조금 조율된 쿼리문일뿐. 쿼리를 짜야 한다는 면에서는 Mybatis 와 똑같은 느낌이 아닐까... 라는 생각을 하게 되어서.. 만약 대형 프로젝트에서 복잡한 쿼리문이 대다수인 경우 차이점을 못느끼지 않을까 생각합니다. 해당 부분에 대해서 어떻게 생각하시는지 궁금합니다 ! 그렇다면 쿼리문을 모르고 순수 객체나 함수로서 데이터를 가져올수 있는 수준까지 지원이 안되는 것인지도 궁금합니다 !!
-
미해결스프링 프레임워크 핵심 기술
Validator 질문있습니다.
안녕하세요 Validator 수업을 듣다가 궁금한게 생겼습니다. EventValidator 클래스에 support 메소드는 언제 쓰이는건가요? 강의나 스프링 문서를 보면 Parameter로 들어오는 클래스를 검증할 수 있는지 확인하는 것이라고 되어있는데요. 막상 AppRunner 클래스에는 validate 메소드만 사용하는 것 같습니다. 혹시 이건 어떻게 사용된건지 알 수 있을까요?? 너무 쉬운 질문 드려서 죄송합니다ㅠ
-
미해결실전! Querydsl
Querydsl과 jpql을 선택하는 차이가 궁금합니다.
드디어 querydsl을 배우고있네요! 제가 이해하고 있기로는, jpa에서 단순히 PK값으로 find()만 하는것이 아니기 때문에 여러가지 조건으로 검색하는 쿼리를 위해 jpql이 존재하는 것이고, jpql로 해결하기 어려운 동적쿼리나 더욱 복잡한 쿼리를 해결하기 위해 querydsl이 필요하다고 이해하고 있습니다. 그런데 실무에서 개발을 할 때 스프링 data jpa가 제공하는 기능이외에 필요한 내용들은 모두 querydsl로 작성하면 되지않나요?? querydsl 이외에 jpql을 작성해야하는 경우가 존재하는 것인지 아니면 querydsl과 jpql의 차이를 더욱 이해하기 쉽게하기위해 두가지 상황을 모두 보여주는 것인데 제가 착가하는 것인지 궁금합니다. 01. 실무에서 querydsl과 jpql을 같이 사용하나요?? 02. jpql을 함께 사용 한다면, 같이 사용해야하는 이유는 무엇인가요?? (querydsl을 사용하면 jpql로 만들수 있는 모든 쿼리를 다 만들수 있지않나 생각됩니다.)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Member와 Item에 저장 할 때 다른 이유가 있나요?
Member 저장 ==========> public void save(Member member) { em.persist(member);} Item 저장 ==========> public void save(Item item) { if (item.getId() == null) { em.persist(item); } else { em.merge(item); }} 위와 같이 Member/Item 저장 방식이 다른 이유가 있나요? 답변 부탁드립니다.