묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
itemservice-db 프로젝트
controller가 없는데 Front만으로도 controller처럼 처리를 할 수 있는건가요?아니면 이전에 memory에서 해서 모델에서 변환시켜줬어야 했는데, db를 이용하니까 model view controller가 다 필요없어진 건가요? items.html에서 이렇게 코드가 있는데th:onclick="|location.href='@{/items/add}'|" 이게 addForm.html로 가는 건가요?어디에서 변환이 되는건지 모르겠는데 관련 코드좀 찾아주실 수 있나요?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
DB강의 듣다 강이ppt의 외래키 부분을 보고 궁금증이 생겨 질문 남깁니다.
웹 개발을 할 때 DDL을 통해 생성되는 테이블들은 모두 서비스에서 사용되는 객체들을 보고 만드는것 같은데 (예를 들면 Member 클래스, Item클레스들을 생각했습니다)만약 어떤 회원 A가 아이템A를 등록하였으면 데이터 베이스의 회원과 아이템 사이에는 등록이라는 관계가 생성이 되고 회원 1명은 아이템을 여러개 등록이 가능하다면 Member 테이블의 PK를 Item 테이블의 FK로 등록되며 Item 테이블의 속성들은 (id, item_name, price, quantity, member_id)로 설정이 될것 같은데 이런 경우 Item 클레스의 멤버변수로Member member_id; 를 생성해주어야 할것 같은데 이런 외래키 값은 도메인을 설계할때 어떻게 처리해야 하나요?그리고 api로 통신할 때 클라이언트 에게 데이터를 넘겨줄 때 스프링 입문 강의에서 hello 객체자체를 return 하면 스프링의 잭슨라이브러리가 json포멧으로 변환해서 넘겨준다고 해주셨는데 여러개의 테이블이 조인된 결과를 json으로 반환 해주려면(예를 들어서 멤버 A가 등록한 아이템의 이름과 가격, 멤버의 이름을 요청한다면 반환되는 튜플이 item_name, price, member_name) 이것들은 하나의 객체가 아닌 Member클래스와 Item클래스의 일부 변수들을 사용한 새로운 값들인데 이럴때는 어떤 방법으로 return해주어야 하나요? 클라이언트측과 조율을 하여 검색되는 조건을 설정하여 조인검색의 제약을 설정하나요? 제약을 설정한다면 반환할 때 (item_name, price, member_name)이 3개의 속성들을 멤버변수로 사용하는 새로운 클래스를 생성하여 반환해 주어야 하나요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
EntityManager 주입 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]JpaConfig 안에 있는 EntityManager는 어떻게 주입이 되는 건가요? 제가 대략적으로 생각한 바는 ItemServiceApplication 이 @SpringBootApplication 어노테이션이 붙어있어서 스프링 부트로 작동하게 되고, @Import(JpaConfig.class) 애노테이션을 붙여줌으로써 스프링부트와 JpaConfig가 연동되게 되어서 스프링부트가 JpaConfig에서 쓰이는 EntityManager를 자동으로 주입해주는 것입니다. 제가 생각한 내용이 맞는지 궁금하고요 선생님들의 정확한 설명을 듣고 싶습니다. 감사합니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
SpringDataJpaConfig 파일 없이 실행 방법 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]SpringDataJpaConfig 파일 없이 @ComponentScan을 사용해서 프로그램을 실행 해보고 싶습니다. 그래서@SprinBootApplication(scanBasePackages="hello.itemservice") 로 스캔 범위 변경 @Import(SpringDataJpaConfig.class) 주석 처리 @Component이 붙은 파일은 자동 빈 등록이 된다고 알고 있습니다. 추가로 처리 해야 할 부분이 있을까요?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
ResultMap은 굳이 사용 안해도 되는것 아닌가요?
마이바티스 강의 섹션 초반에 application.properties에Mybatis.configuration.map-underscore-to-camel-case=true를 해주었기 때문에 컬럼명 변환을 위한 맵은 해주지 않아도 되는것 아닌가요?추가적인 질문으로 영한님 강의의 로드맵중에 jpa를 집중적으로 강의해주시는 로드맵이 있는데 해당 스프링 로드맵만 수강한 상태에서 개인 프로젝트를 진행할 때 jpa의 지식이 부족할 수 있으니(jpa는 내용이 방대하여 많은 공부가 필요하다고 하셔서) 마이 바티스로 프로젝트를 진행후 jpa로드맵 까지 수강 후 jpa로 프로젝트를 하는게 더 좋은가요?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
빈을 찾을수 없다는 오류가 뜨는데 둘러봐도 빈이 잘 등록된거 같은데 실행이 안됩니다.
이전 질문을 혼자 해결해보다 jdk를 다시 설치하고 적용하니 버전이 다르다는 오류는 해결이 되었는데 이제Description:Parameter 0 of constructor in hello.itemservice.config.MyBatisConfig required a bean of type 'hello.itemservice.repository.mybatis.ItemMapper' that could not be found.Action:Consider defining a bean of type 'hello.itemservice.repository.mybatis.ItemMapper' in your configuration.오류가 발생합니다 둘러보아도 빈 등록은 정상적인거 같은데 이유를 모르겠습니다. H2데이타베이스도 켜주었습니다.https://drive.google.com/file/d/1vIo1htfB2qY7yLUz-JfRT_LDdzO8bAeU/view?usp=drive_link질문글 파일의 드라이브 링크입니다.
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
컴퓨터 재시작 하니까 실행이 안됩니다..
https://drive.google.com/file/d/1BB9SitCiSG3ZyZ9G-U15W5IyIKKtjBeH/view?usp=drive_linkjava.lang.IllegalArgumentException: Unable to instantiate org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitializationDetector [org.mybatis.spring.boot.autoconfigure.MybatisDependsOnDatabaseInitializationDetector]Caused by: java.lang.UnsupportedClassVersionError: org/mybatis/spring/boot/autoconfigure/MybatisDependsOnDatabaseInitializationDetector has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 59.0버전을 변경한적이 없는데 버전 업그레이드 하라는거 같습니다. 어떻게 해야 하나요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
Mybatis forEach로 쓰는것과 Service에서 for문으로 Mapper 호출 중에 고민입니다
최근 회사에서 Mybatis로 개발중 고민이 생겨서 문의 드립니다. Mybatis로 forEach 사용하여 List를 Insert, Update 할때는에러나면 몇번째 index에서 에러 났는지 알수없음으로Service 단에서 List 길이 만큼 for문 돌려서 Mapper를 쓰잔 의견을 받았습니다Service 단에서 for문으로 돌리면 log도 찍을수 있고, 어떤 index에서 에러났는지도확인 할 수 있단 장점이 있다고 들었습니다Mybatis에서 forEach 쓰는것과, Service에서 for문 돌려서 Mapper 호출 계속 하는것중에 뭐가 맞는건지 알 수 있을까요? 주니어 개발자인데 회사에 Spring 사용하는 시니어 개발자분이 없어서 문의드립니다..
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
임베디드 데이타 베이스를 테스트가 아닌 운영코드에 사용이 가능한가요?
임베디드 모드는 h2데이타베이스만은 ㅣ기능인거 같은데 테스트코드가 아닌곳에서도 이용이 가능한가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
임베디드 모드 DB finditems test오류
섹션 3. 데이터 접근 기술-테스트 부분을 진행하던중 임베디드 모드 DB부터 finditems 부분에서 test fail이 발생합니다. transaction 문제 같은데 오류를 못찾겠네요. 참고로 이전 testcase의 h2데이터베이스도 모두 delete했습니다! 구글 드라이브에 압축파일 같이 첨부합니다.https://drive.google.com/file/d/1n7RxuytuS5MgEG8ctRhQrs9Hx_7r7XFq/view?usp=sharing
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
수동 빈 등록에서 기초적인 부분인것 같은데 질문 드립니다..
ItemServiceApplication에서 @Import를 통해서 config를 임포트 받는 이유가 무엇인가요? 로드맵 첫 강의인 스프링 입문에서는 @Import를 해주지 않았는데 본 강의에서는 적용되어있는 이유가 궁금합니다. 또 config 패키지로 구분되어있는 곳의 config 하나를 (메모리컨피그를 이용했습니다) itemservice패키지 바로 하위로 이동하여 주었고 Itemservice패키지 하위로 이동한뒤 ItemServiceApplication에서 @Import를 제거하니까 실행이 안되는데 그 이유가 있나요?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
update에서 new BeanPropertySqlParameterSource()사용시 문제
강의에서 update부분을 new BeanPropertySqlParameterSource()로 변경해서 사용해 보았는데 수정이 정상적을 이루어 졌습니다. I’d가 어떻게 자동으로 매핑이 되는건가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
여러방식의 데이터접근기술을 같이 사용하는 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]기본적으로 JPA 를 통해 DB 접근을 하지만 몇몇 쿼리들을 JdbcTemplate 를 활용해 DB접근을 한다고 가정한다면 일반적으로 어떤식으로 구조를 만들어내는지 궁금합니다. ItemRepository 인터페이스를 구현한 JpaTemplate 를 만들어 ItemRepository 를 주입받을 때 그 구현체로 JpaTemplate 가 주입되게 하되, JdbcTemplate 는 ItemRepository 구현체가 아닌 별도의 컴포넌트로 만들어 필요한 부분에서는 별도로 주입받아 사용하게 되는걸까요?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
Itemservice-db와 item service-db-start 두개다 존재하는데 어떤거 여나요?
두개의 폴더가 모두 존재하는데 start의 폴더를 이름변경하여 덮어쓰는것인지 아니면 이미 존재하는 itemservice-db를 오픈하면 되는것인지 혼란이 옵니다.두개의 폴더 모두 오픈해보았는데 db-start폴더는 item클래스가 영상과 같지만 generated폴더가 존재하지 않고 그냥 db 폴더는 item클래스가 영상과 다르지만 generated폴더가 존재합니다 어떤걸 이용하면 되나요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
스프링 DB2 테스트 - 데이터 롤백 오류
findItems()에서 "itemA", "itemB"가 남아있다는 오류가 발생합니다. jdbc:h2:tcp://localhost/~/testcase 로 접속해서 select 해 보면 데이타가 없는데, =jdbc:h2:tcp://localhost/~/test 로 접속해서 select하면 "itemA", "itemB" 가 남아있습니다.(삭제하고 다시 실행해도....). TestDataInit을 실행하는거 같네요??@Bean @Profile("local") public TestDataInit testDataInit(ItemRepository itemRepository) { return new TestDataInit(itemRepository); }링크 :: https://drive.google.com/file/d/1HD2gxtYhL8B5fZ3KazZ148-4x66PPCuo/view?usp=sharing
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
스프링DB 2 :: 테스트 - 데이터 베이스 연동 오류 (원하는 답변이 아닙니다)
Lombok의 @Data 가 @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode 를 만들어주는 애노테이션이라는 건 잘 압니다.제 질문은 왜 스프링DB 2 :: 테스트 - 데이터 베이스 연동 테스트의 save에서 오류가 발생 했었는데, @Getter, @Setter를 @Data 로 바꾼 행위만으로 오류가 발생하지 않게 된 이유를 알려달라는 겁니다. @Getter, @Setter 만 설정하는게 잘 못 된거라면 그 이유가 뭐냐는 걸 문의한겁니다. https://www.inflearn.com/questions/1258907/%EC%8A%A4%ED%94%84%EB%A7%81db-2-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%97%B0%EB%8F%99-%EC%98%A4%EB%A5%98
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
스프링DB 2 :: 테스트 - 데이터 베이스 연동 오류
추가 질문입니다. @Data 보다는 @Getter @Setter를 쓰는게 좋다고 하셔서@Getter @Setter를 쓰고 별도 생성자도 만들었는데.......@Getter @Setter를 @Data로 변경 햤을 때 오류가 발생하지 않는 이유를 알려주세요. https://www.inflearn.com/questions/1258907/%EC%8A%A4%ED%94%84%EB%A7%81db-2-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%97%B0%EB%8F%99-%EC%98%A4%EB%A5%98
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
스프링DB 2 :: 테스트 - 데이터 베이스 연동 오류
저는 데이터를 새로 생성해서 테스트를 했는데, save와 finditems 두 군데 모두 오류가 발생합니다. 링크 :: https://drive.google.com/file/d/1i7i95iRprKTD08l5TuPj1iCOAVPDvNTT/view?usp=sharing save 오류 :: org.opentest4j.AssertionFailedError: expected: hello.itemservicedb.domain.Item@a2df0d5 but was: hello.itemservicedb.domain.Item@26d028f7 finditems 오류 :: org.opentest4j.AssertionFailedError: Expecting actual: [hello.itemservicedb.domain.Item@4cc26df, hello.itemservicedb.domain.Item@7848321e, hello.itemservicedb.domain.Item@f4f843f, hello.itemservicedb.domain.Item@7b5833ee, hello.itemservicedb.domain.Item@1e471884, hello.itemservicedb.domain.Item@27261190, hello.itemservicedb.domain.Item@543b0737]to contain exactly (and in same order): [hello.itemservicedb.domain.Item@6e46891d, hello.itemservicedb.domain.Item@48632f69, hello.itemservicedb.domain.Item@5fde1d64]but some elements were not found: [hello.itemservicedb.domain.Item@6e46891d, hello.itemservicedb.domain.Item@48632f69, hello.itemservicedb.domain.Item@5fde1d64]and others were not expected: [hello.itemservicedb.domain.Item@4cc26df, hello.itemservicedb.domain.Item@7848321e, hello.itemservicedb.domain.Item@f4f843f, hello.itemservicedb.domain.Item@7b5833ee, hello.itemservicedb.domain.Item@1e471884, hello.itemservicedb.domain.Item@27261190, hello.itemservicedb.domain.Item@543b0737]
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
테스트에서 select 로그가 노출안되는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. 테스트 케이스 중 save() 테스트와 updateItem()테스트에서 itemRepository.findById를 호출하는 부분이 있습니다.itemRepository.findById(item.getId()).get();이 경우 select 쿼리가 나가는 걸로 알고 있는데 로그에는 노출되지 않습니다.1) save()2) updateItem()강사님 화면에도 노출되지 않던데 그 이유가 있을까요??
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
현재 스프링db2편 학습하는 중인데요
영상에선 itemservice-db파일 기존의 코드를 수정해서 사용하라고 하셔서 그렇게 했는데요거기에 깔려있는게 2.6.5입니다.id 'org.springframework.boot' version '2.6.5'근데 강의 자료에선 이제 3.0이상을 쓰라고 하셔서요이게 일단 거기 있는데로 2.65로 진행해도 되는건가요?아님 spring.io가서 3.0을 다시 깔아야하나요jpa까지 하다가 오류가 계속나서 처음부터 다시 시작하려고 하는데요일단 영상 그래도 2.6.5으로 진행하고 싶은데자료를 계속 보는데 전부 2.xx는 지원이 끊겨서 3.0으로 쓰라고 하셔서요진짜 2.xx다 빼고 3.0이상으로 전부 바꿔야 하나요?