묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@Embeddable 클라스는 보통 마스터 테이블로 쓰이는건가요?
지속적인 추적이,,필요하지 않을땐 @Embeddable 쓰인다고 하는데 테이블의 대부분 데이터는 고정이고 가끔 한두개의 칼럼만 변경될떄 @Embeddable 쓰나요?
-
미해결스프링 시큐리티
SecurityFilterChain 으로 하시는 분들께 제코드 공유해요!
혹시 더 나은 방식이 있다면 같이 공유해요!! 다들 화이팅하세요!@Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/").permitAll() .antMatchers( "/css/**", "/js/**", "/images/**", "/webjars/**", "/favicon.*", "/*/icon-*" ).permitAll() .antMatchers("/mypage").hasRole("USER") .antMatchers("/message").hasRole("MANAGER") .antMatchers("/config").hasRole("ADMIN") .anyRequest().authenticated(); http .formLogin(); return http.build(); }
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요.. 이때까지 강의 듣다 고민이 있어 질문드려봅니다..
안녕하세요, 지금까지 jpa 강의를 들으면서 api 개발 고급 파트에 오니 나중에 뒤에 가면 갈수록 직접 api를 만들어 봐야, 언제 이걸 쓰는지 직접 상황을 맞닥뜨려봐야 진짜 공부가 되고 체득이 될것 같이 느껴집니다.제가 정확히 잘 몰라서 그런데 api를 실무에서 사용하는것이 다른 프론트나 어플 또는 다른 프로젝트(같은 프로젝트 안에서라도) 끼리 api를 통해서 데이터를 주고 받는 용도로 사용되는 것으로 알고있습니다.그런데 개인적으로 학습하고 만들어 보는데 있어서, api를 적극 활용할 수 있는 프로젝트나 다른 방법이 어떤게 있을지 궁금합니다. 답변자님은 api 학습을 어떻게 하셨는지.. 어떤 방법이 효과적이였는지 궁금합니다.또한 api를 현재 내보내는 방식을 강의에서 다루고 있는데, 다른 외부 api를 가져와 사용하는 방법에 대해서는 어떻게 사용하며 어떤 것을 학습해야 하는지 궁금합니다.조금 과한 질문일수도 있으나, 다소 막막해서 여쭤봅니다..항상 감사합니다.
-
해결됨실전! Querydsl
DTO는 목적마다 여러개 생성해서 사용하는건가요?
안녕하세요! 강의 너무 잘 듣고있습니다.다름이 아니라, DTO관련해서 의문점이 하나 생겨서 문의드립니다.API Controller에서 요청 데이터를 받는 것도 DTO, 응답 데이터를 전달해주는 것도 DTO를 사용하라고 하셨는데, 데이터 조회에도 DTO를 사용하는 경우가 많다고 하셨습니다.그럼 DTO를 목적마다 다 생성해서 사용하는 것이 좋은 설계인건가요?? 아니면, 이용하는 필드가 같은 경우,~ 예를 들어 "DB조회에 이름, 나이 조회" & "요청 데이터에 이름, 나이 입력" 인경우 ~에는 DTO를 공용으로 사용하는걸까요? DTO를 언제, 어떻게 만들어서 사용해야 할지 잘 감이 안옵니다 ㅠㅠ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
main 패키지 클래스 내부에 run버튼이 생기지 않습니다
원래 메소드 옆에 run 버튼이 떠야 하는데 뜨지 않아서 오류가 생긴 것 같습니다. 구글링 후 add configuration - main 추가를 했지만 그래도 run 버튼이 생기지 않습니다.. 이것 때문에 자잘하게 오류가 뜨는데 어떻게 고칠 수 있을까요??(main 패키지 설정을 Mark Directory As -> Source Root 로도 해봤지만 아무 변화가 없었습니다)
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 설정 변경
pdf(43/64) 코드를 복붙하면 사진 처럼 빨간색 부분이 에러가 뜹니다 이부분은 제거 하면 되나요??
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
JPA 연관관계 질문입니다.
안녕하세요!강의는 다 들었는데 JPA 공부를 하다가 궁금한점이 있어서질문을 남겨봅니다.현재 User 와 UserLoanHistory 는 1:N 관계이고,User쪽에 cascade 옵션이 걸려 있는데요.그러면 User 가 삭제되면 UserLoanHistory 가 삭제될 때User 와 연관관계가 있는 히스토리의 개수만큼 delete 쿼리가 나갈거 같은데요. 뭔가 비효율적인거 같다는 생각이 들어서 찾아보니 1:N 에서 N 쪽에 @OnDelete(action = OnDeleteAction.CASCADE)옵션을 주어서 디비단에서 해결하는 방법이 있는거 같긴한데 이걸 쓰는게 맞을지 고민이 되서 질문드립니다.이 옵션은 왠지 위험해 보이는데... 그럼 cascade 옵션을 안쓰고 respository 에서 deleteAllInBatch 로 N 쪽을 지우고 1을 따로 지우는게 나을지...질문을 정리해보자면1:N 관계에서 1을 삭제시 delete 쿼리가 N개 만큼 나가서 비효율적일거 같음N쪽에 @OnDelete 옵션을 줘서 디비에 외래키 cascade delete 옵션을 주는게 나을지?수동으로 N쪽을 삭제하고 1 을 삭제하는게 나을지? 어떤쪽이 더 좋은 선택인지 고민인데 좋은 의견 주시면 감사하겠습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
spring 아예 처음인데 그냥 커리 쭉 따라가도 될까요?
스프링도 처음이고 자바도 잘 아는건 아닌데 일단 스프링 커리큘럼 1회독 하는것 도움될까요??어떤식으로 동영상을 봐야 효율적으로 공부할 수 있을지 궁금합니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
tomcat은 정확히 무슨 역할을 하는건가요?
web browser에서 localhost url을 넘겨줄때 항상 tomcat을 거쳐가는 것으로 그림이 그려져있는데, 정확히 tomcat이 어떤 것인지, 그리고 어떤 역할을 하는지 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
따라하다가 생긴 의문점인데요.
엔티티에 생성하는 비즈니스 로직서비스에 생성하는 로직리포지토리에 생성하는 로직에 대한 개념을 아직 잘 모르겠습니다.보면서 정리 해보고 있긴한데현재 이해한 방식은 이렇습니다.db에 직접 조회하는 로직, 가장 작은 단위의 로직은 repository에 생성서비스에선 여러가지 기능을 생성하는데기능 생성하면서 repository에 있는 기능만으로는 불가능하고 추가 로직이 필요할 때 엔티티에 기능을 생성하는건가요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA 연관관계
OneToMany 관계에서는 Many 가 연관관계의 주인이기 때문에 Many가 저장을 해야하는 것으로 이해했는데요. 실무에서는 One에 외래키가 있는 경우가 많아서ㅠ 이 경우에는 One, Many 각각의 repository에서 save 하는게 맞을까요? 아니면 One에서 Cascade를 사용해서 Many를 저장하는 방향도 괜찮을지 질문드립니다! 예로 one은 자동차 상태이고 many는 자동차 상태가 변경될 때마다 상태 이력을 저장하는 케이스입니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
defined in @EnableJpaRepositories 오류
안녕하세요 강사님!강사님의 스프링과 jpa 강의를 듣고 프로젝트를 만드는 중인 학생입니다. 다름이 아니라 따로 좋아요 기능을 추가해서 학습한 내용을 바탕으로 제작 중인데 Error creating bean with name 'likeApiController' defined in file [/Users/gimnayeon/Desktop/GreenProject/GrinGreen/out/production/classes/com/grin/GrinGreen/api/LikeApiController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'likeService' defined in file [/Users/gimnayeon/Desktop/GreenProject/GrinGreen/out/production/classes/com/grin/GrinGreen/service/LikeService.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'likeRepository' defined in com.grin.GrinGreen.repository.LikeRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.Optional com.grin.GrinGreen.repository.LikeRepository.findBybusiness(com.grin.GrinGreen.domain.Member,com.grin.GrinGreen.domain.Business)! Reason: Failed to create query for method public abstract java.util.Optional com.grin.GrinGreen.repository.LikeRepository.findBybusiness(com.grin.GrinGreen.domain.Member,com.grin.GrinGreen.domain.Business)! At least 2 parameter(s) provided but only 1 parameter(s) present in query.; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.Optional com.grin.GrinGreen.repository.LikeRepository.findBybusiness(com.grin.GrinGreen.domain.Member,com.grin.GrinGreen.domain.Business)! At least 2 parameter(s) provided but only 1 parameter(s) present in query. 라는 오류가 뜹니다. LikeRepository@Transactional(readOnly = true) public interface LikeRepository extends JpaRepository<Like, Long> { Optional<Integer> countBybusiness(Business business); Optional<Like> findBybusiness(Member member, Business business); }business entity@ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "mail") private Member member; @OneToMany(mappedBy = "business", cascade = CascadeType.ALL) Set<Like> likes = new HashSet<>();member entity@OneToMany(mappedBy = "member", cascade = CascadeType.ALL) private List<Business> business = new ArrayList<>(); @OneToMany(mappedBy = "member", cascade = CascadeType.ALL) Set<Like> likes = new HashSet<>();like entity@Id @GeneratedValue @Column(name = "like_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) private Member member; @ManyToOne(fetch = FetchType.LAZY) private Business business; public Like(Business business, Member member) { this.business = business; this.member = member; } 처음에는 jparepository에서 findBy 이후 대문자를 쓴 게 문제였나 싶어 수정을 했지만 아니었고파라미터의 Id처럼 대문자로 쓰여진 게 문제인가 봤지만 해당 사항이 없었습니다..아무리 강의를 돌려봐도 감이 안 잡히는 데 어디 부분의 문제일까요?ㅠㅠ파라메터 값이 2개인데 1개만 받아졌다는 오류인 것도 같습니다....
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Error creating bean with name 'dataSourceScriptDatabaseInitializer' 에러
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Unsatisfied dependency expressed through method 'dataSourceScriptDatabaseInitializer' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.h2.Driver라는 에러가 나옵니다.어떻게 해결해야할까요??
-
미해결스프링 기반 REST API 개발
mvn package 시 다음과 같은 에러가 나시면
Unable to make protected native java.lang.Object java.lang.Object.clone() throws java.lang.CloneNotSupportedException accessible: module java.base does not "opens java.lang" to unnamed module다음과 같은 에러 나시면 plugin 에<groupId>org.asciidoctor</groupId> <artifactId>asciidoctor-maven-plugin</artifactId> <version>2.1.0</version>버전을 최신으로 업데이트 하심 해결됩니다.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO에 @Getter가 필요한 이유
OrderDto, OrderItemDto 같은 DTO에 @Getter 가 필요한 이유가 궁금합니다.또, 요청을 받는 DTO는 요청 받을 필드만 선언하면 되고, 응답용 DTO는 응답하고 싶은 필드만 정의 하여 생성자를 만들면 되는지 궁금합니다.
-
미해결실전! Querydsl
Querydsl4RepositorySupport에 @Repository와 @Autowired
안녕하세요. 강의 잘 보고 있습니다.궁금한 점이 있습니다.Querydsl4RepositorySupport는 abstract class인데 왜 @Repository를 붙이는건가요? 실체 구체화할 부모 클래스에 @Repository를 붙이면 되는것 아닌가요? Querydsl4RepositorySupport는 abstract class라 객체로 생성이 안되는데 빈으로 등록이 가능한가요?이어서 setEntityManager에 @Autowired를 붙임으로써 의존성을 주입하고 있습니다. 그때에 entityManager라는 빈을 등록해주겠죠. 그런데 setEntityManager는 언제, 누가 호출하게 되는건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
변수 바로 찾아가는 단축키
변수이름 클릭하시고 선언된 곳으로 바로 이동하시던데 단축키좀 알려주세욤
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
./h2.sh 실행이 안되네요
1:07분에서 하는 것처럼 똑같이 해서터미널로 들어가서 bin폴더까지 접근해서거기서 cat h2.sh를 하면 영상처럼 똑같이 나옵니다.그래서 다음 단계인 ./h2.sh를 했는데permission denied라는 문구가 출력됩니다.그래서 sudo ./h2.sh를 할 경우 sudo: ./h2.sh: command not found 라는 문구가 출력됩니다.h2-1.4.199.jar h2.bat h2.sh h2w.bat a@aui-iMac bin % cat h2.sh #!/bin/sh dir=$(dirname "$0") java -cp "$dir/h2-1.4.199.jar:$H2DRIVERS:$CLASSPATH" org.h2.tools.Console "$@" a@aui-iMac bin % ./h2.sh zsh: permission denied: ./h2.sh a@aui-iMac bin % sudo ./h2.sh Password: sudo: ./h2.sh: command not found혹시 이럴때는 어떻게 해결해야 되나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문에서 orderItem
주문하는 메서드에서 주문상품을 생성하는데 여러개의 상품을 주문할 때도 가능한 건가요?? 그럼 itemId가 여러 개 있어야 하는 건 아닌지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의 도중 말씀에 대한 간단한 질문
안녕하세요 강사님! 수업 너무 잘 듣고 있습니다. 다름이 아니라 설명하시는 도중18:20 가량 부터 잠깐 하시는 말씀에 대해 조금 이해가 덜 된 것 같아서 질문을 좀 드리고 싶어서 글을 남기게 되었습니다. 1. 설계하고 돌려서 테이블 생성된 것을 보고 원하는 대로 만들어졌는지 확인하는 것을 반복하라>> DB 테이블에 칼럼들 들어간 모습들과 내가 원하는대로 들어갔는지 확인하면서 해라! 라는 말씀으로 이해하면 되는 걸까요?2. 생성된 것을 그대로 쓰면 안된다(?)>> 제가 실무를 혼자서 진행해보고 DBA 분들과 얘기를 해본적이 없어서 이해가 잘 안됐을 수도 있는데, 혹시 이부분에서 말씀하시는 그대로 쓰면 안된다는게 어떤 부분인지 조금 더 말씀해주실 수 있을까요? Script 란 DB sql 들어가는 글들을 말씀하시는 것 같은데, 해당 SQL 을 따로 뽑아서 한번 쭉 본 후에 JPA DDL-AUTO 기능을 사용하지 말고 직접 DB workspace 같은 공간에 직접 import 를 해주는 방식으로 하라는 말씀이실까요?도움주셔서 감사합니다!