묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티
비동기 질문
앞전영상에서는 MODE_INHERITABLETHREADLOCAL 로 시큐리티 컨텍스트 홀더의 전략을 바꾸지 않더라도 서로다른 스레드 내에서 시큐리티 컨텍스트가 공유되었습니다. 어떤 차이가 있는건가요?? 앞 영상에서도 메인 스레드와 메인스레드로부터 파생된 스레드인 것 같았는데..
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
메서드를 만들어서 사용할때는
Item쪽에서 change() 메서드를 만들어야하나요 ? 만약 만들게된다면 service에서는 파라미터값으로 Id값을 안넘겨주고 findeOne만 실행하게 되는데 Item class에서는 값을 셋팅할때 book에대한 Author는 수정을 어떻게하나요?? Item에 존재하는 필드로 넘겨받은 값들은 수정할 수 있는데 Book에 있는 Author는 수정을 못하는데 어떻게 하면 되나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
onetoone에서 lazy관련해서 질문드립니다~!
안녕하세요, 고퀄리티 강의 감사합니다 영한님. onetoone과 lazy에 관련해서 궁금한점이 있어 질문 남깁니다. ※ table구조 - member (1) - (1) phone (onetoone) - fk는 phone에 member_id로 존재하는 형태 - member에 phone_id소유 X 1. 위 테이블 구조일때 jpa입장에서 onetoone에서는 proxy객체를 생성할 수 없기때문에 lazy로 설정해도 쿼리가 나간다는 부분에대해 이해했습니다. 2. 그런데 모든 연관관계는 lazy로 설정해야된다고 말씀하셨는데 onetoone을 lazy로 설정해버리면 복수건을 find했을때 바로 N+1이 발생하는것 같습니다. onetoone일 경우 lazy로 어떻게 동작하게 할 수 있는지 궁금합니다~! 불가능하다면 이런 경우 어떻게 해결할 수 있는지도 말씀해주시면 감사하겠습니다~!
-
해결됨스프링 프레임워크 핵심 기술
ApplicationRunner 인터페이스 질문입니다!
"5부 빈의 스코프" 강의를 보던 중 ApplicationRunner 인터페이스에 관해서 질문이 있습니다. API를 찾아보면 ApplicationRunner는 반드시 실행시켜야 하는 빈을 등록하는 것이라고 이해를 했습니다. 근데 궁금한게 어차피 Demonspring51Application에서 run 메소드를 사용하는데, 굳이 클래스파일을 하나 더 만들어서 run 메소드를 사용하는 이유는 뭔가요?? 아래와 같이 무식하게 코드를 집어 넣으니 static 필드가 아니라서 사용할 수 없다는 에러 메세지는 발생합니다... 근데 이유를 잘 모르겠습니다ㅠㅠ @SpringBootApplication public class Demospring51Application { @Autowired Single single; @Autowired Proto proto; public static void main(String[] args) { SpringApplication.run(Demospring51Application.class, args); System.out.println(single.getProto()); System.out.println(proto); } }
-
미해결실전! 스프링 데이터 JPA
마지막 부분 질문드립니다.
안녕하세요 !! 마지막 부분 궁금한 점이 생겨서 질문드립니다. 벌크를 사용하면 db에 바로 때려버린다고 하셨는데, //given ~~~~~ 5개 //when int resultCount=memberRepository.bulkAgePlus(20); em.flush(); em.clear(); 이 상황에서 먼저 벌크연산을 통해 db 값을 수정을 하고, flush와 clear 연산을 하게되는데, 이 상황에서의 flush 연산의 동작이 궁금합니다. 책에 따르면, 변경 감지가 동작해서 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷과 비교해서 수정된 엔티티를 찾는다. 수정된 엔티티는 수정 쿼리를 만들어 쓰기 지연 SQL 저장소에 등록한다. 이 쿼리를 db에 전송한다. 라고 나와 있습니다. 먼저, save를 하는 과정에서 persist 한 member들 중 20이 넘는 것들은 member3 20member4 21member5 40 이 있습니다. persist 이후 bulk연산으로 db에 바로 값을 변경시키고, flush에 들어서게 되면 스냅샷 자체는 20,21,40 으로 되어있고 영속성컨텍스트에 따로 값을 변경하지 않았으니 수정된 엔티티를 찾지 못하고, 수정쿼리를 만들어서 지연 SQL 저장소에 등록하지도 않았을 것이고, 이곳에 등록된 것이 없으니 db에 전송하는 쿼리문도 없기 때문에 bulk 연산으로 수정된 값이 남게 되는 것인가요 ? 그렇다면 이 부분에서 flush는 스냅샷과의 비교를 했을 뿐 변경된 엔티티를 감지하지 못하였기 때문에 사실상 비교의 역할만 했다고 볼 수 있는건가요? 제가 이해한게 맞나 궁금합니다!! 긴 질문 읽어주셔서 감사합니다.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
안녕하세요 ModelMapper 질문이 있습니다.
현재 강의 수강하면서 개인적으로 프로젝트를 하나 만들어보면서 함께 적용도 해보면서 공부하고 있는데요. 웹이 아닌 API만 구현 중 입니다. 1. 제가 공부하기로는 API개발에서도 Entity를 리턴해주면 않되고 DTO로 만들어서 사용자에게 내보내줘야 한다고 알고 있는데 이때에도 ModelMapper와 같은 라이브러리를 이용해서 DTO to Entity와 Entity to DTO로 사용해야 하는건가요 ? 2. 모든 Response에서 DTO로 만들어서 리턴을 해주는지 궁금합니다. 모든 요청마다 DTO를 만들어서 리턴해주기에는 번거롭고 DTO가 많아질 것 같습니다.
-
미해결실전! 스프링 부트와 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를 안해주는지가 궁금합니다