묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
QueryDSL에서 In 연산자를 사용해 복수개의 컬럼과 비교할때 서브쿼리 없이 쿼리를 생성하는 방법이 있나요?
안녕하세요.QueryDSL에서 in 연산자를 사용해서 쿼리를 작성하려합니다.문제 요약의도 : QueryDSL에서 In연산자를 사용해 비교하는 쿼리 작성하려함. 비교대상 컬럼은 복수개 (in 연산자 좌항) (동적으로 생성한) 리터럴 2차원 배열 (서브쿼리가 아님)문제 : 자꾸 첫째 항목에서 괄호가 사라짐...의문 : queryDSL방법을 잘못 쓴 것인지? 혹은 실제 QueryDSL이나 JPA의 오류인지 알고싶음. 상세 내용작성하려는 쿼리는 입력된 복수개의 은행사와 계좌번호 쌍을 기준으로 계좌(BankAccount)엔티티의 정보를 검색하는 것입니다. 테이블에 "은행사,계좌번호" 쌍 중에 원하는 조합만 검색하는 게 목적입니다. 실제 데이터베이스에서 실행되길 의도한 쿼리select ba.* from bank_account ba where (ba.bank_name, ba.account_num ) in ( /* 입력된 리스트에 따라 가변적으로 변하는 부분 */ /* 아래 조합에만 일치하는 것만 검색 */ ( '하나', '3333-444-555'), ( '국민', '4455-1111-44') /* 조합계속 ... */ ) 따라서 아래와 같이 Expressions.list() 메소드로 IN절의 좌항을 완성하고 in의 파라미터로 서브쿼리 (서브쿼리가 들어가면 잘 동작함) 대신 리터럴 값을 넣어 생성했습니다.QueryDSL에서 쿼리 생성 예시(민감정보 바꾸고 간소화함)fun getBankAccountList( ) jpaQueryFactory.selectFrom(bankAccount) .where( Expressions.list( bankAccount.bank, //은행사 bankAccount.accountNum, // 계좌번호 ).`in`( /* 사용자로부터 입력받은 은행사,계좌번호 쌍들 */ Expressions.list( Expressions.constant(BankName.HANA.value), Expressions.constant("1234-56-789"), ), Expressions.list( Expressions.constant(BankName.HANA.value), Expressions.constant("2345-67-890"), ), Expressions.list( Expressions.constant(BankName.WOORI.value), Expressions.constant("3333-33-333"), ), ) // in() ) // where() .fetch() 실제로 생성된 쿼리를 보면 자꾸 2차원 배열의 첫째 항의 괄호가 사라집니다.생성된 쿼리 예시SELECT /* 컬럼 파트 */ FROM BANK_ACCOUNT B0_ WHERE ( B0_.BANK_NAME, B0_.ACCOUNT_NUM ) IN ( '하나', '1234-56-789', // 여기 첫째 항목의 괄호가 없어짐.. ( '하나', '1234-56-789'), ( '우리', '3333-33-333') )일단 다른 방법으로 기능 구현은 마친 상황입니다.in 절이 본질적으로 각 항목과 컬럼을 동등비교하는 조건이 or연산자 기준으로 반복되는 것을 알고 있기에, 해당 방법으로 기능 자체는 구현은 했습니다. (따라서 왜 괄호가 빠지는 것인지 자체에 대해 집중되었으면 하는 바람이 있습니다. ) 그래서 의문사항은 다음 두가지 입니다.이게 제대로된 queryDSL IN절 사용법이 아니라 그런 것일까요? 아니라면 옳은 방법은 뭘까요?그냥 queryDSL 혹은 JPA의 이슈일까요? 환경언어 : 코틀린(1.5.31)자바버전 : 11queryDSL : 5.0.0springBoot : 2.5.6
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
logging.level.hello.itemserivce.repository.mybatis=trace 로깅레벨적용
강의 후반에 logging level 을 trace로 하여 확인하는데 무슨 문제인지 확인이 되지 않네요.. debug까지만 먹히고 trace는 먹히지 않습니다.
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
test case 작성 후 test시 콘솔에 접근하여 실제 테이블을 확인하는 방법
인메모리 방식을 사용해 h2 db를 이용하는 방법을 알겠습니다. spring.datasource.url=jdbc:h2:tcp://localhost/~/testcase위와 같이 기존에는 tcp 방식으로 서버에 접근하여 h2 db 상태를 직접 확인가능하였는데요. 위의 코드를 생략하면 스프링 부트가 임베디드 데이터베이스에 대한 설정도 기본으로 제공하여 인메모리 방식인 임베디드 데이터베이스를 를 사용하는 것 까진 알겠습니다. 그런데 만약 기존 처럼 콘솔에 직접 진입하여 table의 데이터를 눈으로 확인하고 싶을땐 어떻게 해야할까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
Jar파일로 배포시 DB문제 도와주세요...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Mybatis 를 사용한 강의속 프로젝트를 만들어서 인텔리제이 에서 서버를 열면 모든게 정상적으로 잘 작동합니다 (DB연결도 잘됩니다)그런데 이 프로젝트를 bootjar로 jar파일 만들어서 같은 로컬컴퓨터에서 실행을 시키면 서버가 열리고 접속까지 잘 되는데 db연결이 필요한 부분만 들어가면 오류가 납니다 (로그에는 실행돼야할 mapper.xml을 찾을수없다고 나옵니다)-ERROR 16064 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): shop.mapper.LoginMapper.selectMember] with root cause위 코드처럼 오류가 나는데 그래서 jar파일내에 해당 mapper.xml과 해당 메서드가 연결된 인터페이스가 잘 들어있나 확인해도 잘 들어가있습니다. 뭐가 잘못된 걸까요?? 며칠째 너무 고통스럽네요..ㅠ
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
물리적인 트랜잭션을 처리하는 부분에 대해 헷갈리는 점이 있습니다.
안녕하세요.항상 강의잘 듣고있습니다!강의를 완강하고 복기하던 중에 궁금한 점이 있습니다. 강의에서는 커밋 또는 롤백을 하는 경우 트랜잭션 메니저로 요청을 보내 물리적인 부분을 처리한다 라고 학습했는데요, 가끔씩 강의를 듣다보면 트랜잭션 매니저 -> 트랜잭션 동기화 매니저 를 통해 물리적인 트랜잭션을 처리한다고 말씀하셔서 (스프링 트랜잭션 전파5 - 외부 롤백 6분 20초경)마지막 물리적으로 처리하는 부분이 트랜잭션 매니저단에서 끝나는지, 트랜잭션 매니저에서 트랜잭션 동기화 매니저를 통해 끝나는지 헷갈려서 질문남깁니다.! 감사합니다!!
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
신규 트랜잭션 질문이요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@Transactional도 REQUIRED 옵션이 디폴트 일텐데 왜 각각이 분리되어서 동작하는지 궁금해요REQUIRED 옵션이 기본 디폴트라고 말씀하셨는데 BasicTxTest는 트랜잭션 매니저를 주입받아서 트랜잭션을 사용하기 때문에 REQUIRED 옵션으로 인해 신규 트랜잭션을 getTransaction 하더라도 기존 트랜잭션이 존재하면 내부 트랜잭션으로 간주되는 것이고,MemberServiceTest는 @Transactional 어노테이션 덕분에 트랜잭션 AOP를 사용하여 각각 다른 AOP 객체가 생성되어서 물리 트랜잭션이 두개가 생기는 건가요?
-
미해결
saveAndFlush 저장후 QueryDsl 조회 문의
@Transactional public AccessTokenResponse signup(MemberRequest request) { Member member = request.toMember(passwordEncoder); MemberDetails memberDetails = memberRepository .findMemberDetailsByMemberId(memberRepository.saveAndFlush(member).getId()) .orElseThrow(RuntimeException::new);맨아래서, 2번째 줄에서 member의 정보를 DB에 저장합니다.: saveAndFlush 이용그리고 나서 QueryDSL로 작성된 findMemberDetailsByMemberId 으로 해당 멤버의 정보를 조회해 왔습니다.: 그러나, 해당 쿼리로는 조회된 값이 없어 null 이 반환되었습니다. 확인해보니, saveAndFlush를 통해 해당 멤버의 정보가 즉각 DB에 반영되지 않아서 QueryDSL 로된 쿼리로 해당 멤버의 정보가 조회되지 않은 것인데요. 제가 알기로 saveAndFlush를 이용하면 즉각 DB에 반영되는 것으로 알고있었는데... 아닌가요?이런 경우 어떤 방법으로 해결할 수 있을지 조언 주시면 감사하겠습니다!(member 정보 저장 후, querydsl로 조회해올 수 있는 방법)
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
JdbcTemplateItemRepository2 적용 후 로그
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]JdbcTemplateItemRepositoryV2 적용 후 아래 화면처럼 로그가 뜬다고 설명해주셨는데제 PC 에서 실행 후 로그는 아래 화면 처럼 뜹니다.이에 관해 몇가지 질문이 있습니다. 1.로그가 서로 다른 이유가 무엇인가요??본인 PC 로그 표시 레벨은 기본 레벨인 Info로 되어있었기 때문2.어떻게 하면 강의 화면 처럼 로그가 띄울 수 있나요??application.properties 파일에 logging.level.org.springframework.jdbc=DEBUG 속성 추가(스프링 버전은 강사님이 첨부해주신 프로젝트를 가지고 사용한것이라 강의에서 사용된 프로젝트의 스프링 버전과 동일할 것으로 생각됩니다.)두 가지 질문 답변 부탁드립니다.감사합니다. 강의를 보다보니 답을 찾았습니다..... 세션 앞부분 강의에서 방법을 적어주셨었네요....제가 앞부분 강의를 제대로 집중해서 듣지 못했나봅니다.....
-
해결됨실전! Querydsl
querydsl Projection 성능 문제
안녕하세요 Querydsl Projection 을 활용해 DTO에 담는경우 성능 관련 질문이 있습니다. Querydsl에서 Projections.constructor를 활용해서 query를 작성하는경우 fetchJoin이 되지 않더라구요.일대 다 관계에서 fetchJoin을 하지 않게되면 n+1 이슈가 발생할거 같은데Projections을 활용하는 환경에서 성능개선은 어떻게 해야할까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
JPAQueryFactory 스프링 빈으로 등록하고 사용 시 질문
[질문 내용]JPA와 SPRING DATA JPA 모두 동적 쿼리 작성에 문제에 어려움이 있었고 이를 위해 querydsl을 적용하는것이기에 무의식적으로 JpaItemRepositoryV2를 복사해서 동적 쿼리 작성하는 부분만 변경하려했습니다. 테스트는 잘통과합니다만 위와 같이 JPAQueryFactory를 빈으로 등록하고 사용하는 것이 맞는걸까요? 아직 빈 등록 및 의존관계 주입하는 게 익숙치 않아서 스스로 확신이 안듭니다. 위 코드에서 빈으로 등록하고 주입되는 과정은 나름 알고있으나 좀 더 구조적?으로 개선될 방향이 있는지 궁금합니다.(문법적으론 문제가 없으나 이렇게 하면 더 좋다) 감사합니다
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
테스트 recoverException_fail메서드 UnexpectedRollbackException
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요.테스트케이스 recoverException_fail 를 실행했을때 테스트가 실패하여 질문 남깁니다. 해당 테스트 케이스를 실행하면 실패 로그가 나오고java.lang.Exception: exception just for purpose of providing stack trace at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.markRollbackOnly(JdbcResourceLocalTransactionCoordinatorImpl.java:310) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] java.lang.AssertionError: Expecting actual throwable to be an instance of: org.springframework.transaction.UnexpectedRollbackExceptionbut was: java.lang.RuntimeException at hello.springtx.propagation.LogRepository.save(LogRepository.java:26) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ...(108 remaining lines not displayed - this can be changed with Assertions.setMaxStackTraceElementsDisplayed) at hello.springtx.propagation.MemberServiceTest.recoverException_fail(MemberServiceTest.java:135) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) UnexpectedRollbackException 을 기대하지만 RuntimeException가 나온다고 메세지가 나오는데 설명 해주신 대로면 UnexpectedRollbackException 예외가 나오는게 맞는거 아닌가요..?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
@Transactional는 프록시 객체를 스프링 빈으로 등록까지 해주나요?
질문 있습니다.강의 자료를 보면 "@Transactional 애노테이션이 특정 클래스나 메서드에 하나라도 있으면 트랜잭션 AOP는 프록시를 만들어서 스프링 컨테이너에 등록한다" 라고 되어 있습니다. (11페이지 마지막줄) 그런데 서포터님의 답변 중 강의 자료와 조금 다르게 해석되는 말씀이 있어 질문 드립니다. 저는 @Transactiona이 있으면 생성과 스프링 빈 등록까지 해주는 것으로 이해했는데, 그게 아니라 프록시 객체 생성까지만 하고, 스프링 빈 등록은 따로 해줘야 하는 건가요??
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
InternalCallV1Test에서 evternal 메서드에도 트랜잭션 애노테이션을 붙이면
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. external() 메서드에 @Transactional 이 적용되어 있지 않고 external() 에서 @Transactional 이 적용되어 있는 internal() 메서드를 호출하면 내부 호출이 일어나게 되어 트랜잭션이 활성화 되지 않은 상태가 되는데 만약 external() 메서드에도 @Transactional 을 적용시켜주면 internal() 에 적용되어 있는 트랜잭션도 external() 에 적용되어있는 트랜잭션과 같은 레벨에 있는건가요..?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
트랜잭션 전파 2관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]MemberService에는 @Transcational를 한 상태이고 MemberRepository, LogRepository 에는 @Transactional 을 정의하지 않은 상태에서 joinV2 method 를 사용하고 log에서 예외를 발생하는 상황이 궁금해서 실행해 봤습니다.LogRepository 의 예외를 Service에서 잡았기 때문에 전체적으로는 commit 하는 상황을 예상하기는 했는데 LogRepository의 save에서 예외가 발생하기 때문에 Log find 테스트에서 isEmpty를 예상했는데 로그를 찍어보니 로그예외_outerTxOff_success row가 log table 에 insert가 되어있네요.logRepository에서는 runtime exception을 반환하는데 어떻게 log table에 로그예외... username이 insert되는 거죠?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
@Bean 등록을 @SpringBootApplication 내부에서 해도 괜찮나요?
@Bean 등록은 일반적으로 @Configuration 애노테이션이 있는 설정 클래스 내부에서 이뤄지는 걸로 이해하고 있습니다.하지만 ItemServiceApplication 클래스를 보면 @Configuration이 아닌데도 TestDataInit가 @Bean으로 등록되고 있습니다.@Import(MemoryConfig.class) @SpringBootApplication(scanBasePackages = "hello.itemservice.web") public class ItemServiceApplication { public static void main(String[] args) { SpringApplication.run(ItemServiceApplication.class, args); } @Bean @Profile("local") public TestDataInit testDataInit(ItemRepository itemRepository) { return new TestDataInit(itemRepository); } } 찾아보니, @SpringBootApplication 애노테이션이 이미 암시적으로 @Configuration 애노테이션을 포함하고 있기 때문에 가능하다고 봤습니다.실제 @SpringBootApplication이 @Comfiguration을 포함하고 있어서 위 코드가 가능한 게 맞나요?그렇다고 해도 이미 @Configuration이 붙은 MemoryConfig가 이미 있는데, 왜 굳이 @SpringBootApplication 에서 빈으로 등록하려는 건가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
[공유]Invalid value type for attribute 'factoryBeanObjectType': java.lang.String
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링 부트 버전 3.2.0 사용 하시는분들 mybatis 의존성 추가하실때 이렇게 추가하시면 돼요..!
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
JpaRepositoryV2 도입 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]제가 이해한 내용을 설명하고, 이해가지 않은 내용을 질문하려 합니다. Spring Data JPA 기술을 이용하여 SpringDataJpaItemRepository를 구성했고, 해당 interface를 바로 ItemServiceV1에서 의존관계 주입하여 사용하고 싶다.하지만, 이미 ItemServiceV1은 ItemRepository interface를 주입받아 사용하고 있기 때문에 SpringDataJpaItemRepository interface를 사용하려면 ItemServiceV1에서 코드레벨에서의 수정이 필연적으로 일어나게 된다.(문제점 1)또한, SpringDataJpaItemRepository는 ItemRepository를 extends한 것이 아닌 JpaRepository를 extends한 것임.(문제점 2)따라서 이런 문제점들 때문에 JpaItemRepostioryV2 class를 도입하여 ItemRepository와 SpringDataJpaItemRepository 사이를 맞추려 한다. 위 내용처럼 서술했을 때 올바르게 서술한 것인지 궁금하고,2가지 이해가지 않는 부분에 대해서 질문하고 싶습니다.첫번째: 문제점2가 왜 문제인건지 잘 모르겠습니다.두번째: “ItemRepository와 SpringDataJpaItemRepository 사이를 맞추려 한다”에서 맞춘다가 정확히 어떤 것을 맞추는 것이라고 해야 표현 상 올바른 것인지 잘 모르겠습니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
JpaRepository - 기본적인 CRUD 기능
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]-> 강의 pdf 캡처본입니다. 해당 캡처본에서 JpaRepository를 인터페이스 상속받으면 기본적인 CRUD 기능을 사용할 수 있다고 하는데, '기본적인 CRUD 기능'이 의미하는 것이 'CrudRepository가 가지고 있는 CRUD 메서드'(save, delete 등등)를 의미하는 것인가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
mapper.xml 에서 dtd 를 못찾습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]mapper.xml 제일 윗줄인 DOCTYPE 부분 제일 뒤쪽 dtd 주소에 빨간줄이 그어지면서 cannot find dtd file 또는 해당 dtd 파일을 받는중에 오류가 났다고 나오는데요, 덕분에 <mapper>, <select>등 전부 빨간줄이 그어집니다 ㅠ 모든 dtd 파일을 못가져오나 싶었는데, mybatis-context.xml의 config dtd는 또 잘 가져오구요... 어떤것 때문에 mapper dtd를 못가져오는건지 모르겠습니다
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
controller의 dto를 repository에서 사용할 수 없는 이유
보통 흐름이 controller -> service -> repository 로 흐르기 때문에 service에서 repository를 의존하는 것은 상관이 없지만 반대로 repository에서 service를 의존하는 것은 문제가 됩니다.(예를들면 service단의 dto를 참조한다던지 등)이렇게 순환 관계가 생길때의 문제가 무엇일까요?