묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! Querydsl
Querydsl 취약점 관련 질문입니다.
안녕하세요. 최근 querydsl 공부를 시작하려고 정보를 찾던 중 querydsl에 대한 SQL Injection 에 관한 내용을 보고 김영한님의 생각이 궁금합니다!그리고 querydsl 지원중단 얘기를 보기도 해서 이런 취약점이 나올 때마다 빠른 대응이 되는지 역시 궁금합니다!! https://www.csirt.sk/querydsl-java-library-vulnerability-permits-sql-hql-injection.html
-
미해결Practical Testing: 실용적인 테스트 가이드
@Builder 관련 문의
생성자를 private로 하고 그 위에 빌더패턴을 사용하는데,이러면은 결국에 모든 곳에서 생성자에 접근 가능하다는 얘기인데 private를 쓰고 builder를 하시는 이유가 있나요 ?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
N:1 관계에서 delete 질문있습니다.
@Entity @Builder @NoArgsConstructor @AllArgsConstructor @Getter @Setter public class Member { @Id @GeneratedValue private Long id; @Column private String username; @ManyToOne @JoinColumn(name = "team_id") private Team team; } @Entity @Builder @NoArgsConstructor @AllArgsConstructor @Getter @Setter public class Team { @Id @GeneratedValue private Long id; private String name; } try { tx.begin(); Team team = new Team().builder() .name("teamA") .build(); em.persist(team); Member member = new Member().builder() .username("member1") .team(team) .build(); em.persist(member); em.flush(); em.clear(); Member findMember = em.find(Member.class, member.getId()); Team findTeam = findMember.getTeam(); em.remove(findTeam); tx.commit(); } catch (Exception e) { tx.rollback(); } finally { em.close(); }findTeam을 remove하기 전에 findMember.setTeam(null) 이런 식으로 팀과의 연관 관계를 null로 만들고 삭제하지 않았는데 에러가 발생하지 않고, 데이터베이스에서 member 정보와 team 정보 모두 삭제됩니다. CASCADE 설정이 되어 있는 건 아닌데 왜 이렇게 동작하는 걸까요??
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
프로젝트 생성시 dependencies에 spring web starter 안뜸
dependencies에 spring web strater 검색해도 안뜨는데 어떡해야하나요??
-
해결됨Spring Boot를 활용하여 채팅 플랫폼 만들어보기
안녕하세요 연관관계에 대해 질문이 있습니다.
안녕하세요 지식공유자님.User 클래스의 credentials 필드에 lazy loading 관련하여 설명을 해주셨는데요, 제가 알기로는 mappedBy 가 있는 쪽에서는 LAZY 로딩이 동작하지 않는 것으로 알고 있습니다. 즉, 연관관계의 주인인 UserCredentails 쪽에만 적용하는 것이 맞다고 생각이 드는데 제 생각이 맞을까요?
-
해결됨Spring Boot를 활용하여 채팅 플랫폼 만들어보기
안녕하세요 MySqlConfig 설정에 대해 질문이 있습니다.
안녕하세요 지식 공유자님.MySqlConfig 클래스에 대해 질문이 있습니다. yml 에 이미 mysql 정보들을 설정했는데 MySqlConfig 클래스에서도 @Value 를 통해 설정정보를 또 작성하는 것은 무엇을 위함인것일까요?제가 알기로는 Spring Boot의 자동 설정이 application.yml의 설정들을 자동으로 읽어와서 DataSource bean으로 구성하는 것으로 알고있는데 다시 작성하는 이유가 궁금합니다. 감사합니다.
-
미해결실전! 스프링 데이터 JPA
똑같이 코딩했는데 널익셉션이 떴는지 모르겠습니다
실전! 스프링데이터 jpa에서8강을 듣고있는데 memberRepository 파일도 영상과 똑같이 코딩했는데 왜 안되는지 모르겠습니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
detach시 쿼리 삭제
안녕하세요엔티티를 준영속 상태로 만들면 1차 캐시에서 제거되고, 관련 SQL도 제거된다고 하셨는데 실제로 돌려보니까 insert 쿼리가 나가더라고요 실제 db에는 저장 되진 않았습니다. insert 쿼리가 나가는 이유가 무엇 때문일까요??
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
HashMap에서 stream과 filter를 거처 List가 될 때 정렬순서
강의 4:33 의 코드입니다. @Test void findItems() { //given Item item1 = new Item("itemA-1", 10000, 10); Item item2 = new Item("itemA-2", 20000, 20); Item item3 = new Item("itemB-1", 30000, 30); log.info("repository={}", itemRepository.getClass()); itemRepository.save(item1); itemRepository.save(item2); itemRepository.save(item3); //둘 다 없음 검증 test(null, null, item1, item2, item3); test("", null, item1, item2, item3); //itemName 검증 test("itemA", null, item1, item2); test("temA", null, item1, item2); test("itemB", null, item3); //maxPrice 검증 test(null, 10000, item1); //둘 다 있음 검증 test("itemA", 10000, item1); } void test(String itemName, Integer maxPrice, Item... items) { List<Item> result = itemRepository.findAll(new ItemSearchCond(itemName, maxPrice)); assertThat(result).containsExactly(items); } MemoryRepository의 HashMap은 순서를 보장하지 않는데, 강의에서 실습을 할 때는itemRepository.save(itemOO) 순으로 넣은대로 List로 변환되는것 같습니다. test(null, null, item1, item2, item3);이 테스트는 매번 일관되게 나와야하는데 항상 item1, item2, item3 순으로 잘 통과되는 이유가 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
김영환님 책에는 기본키 두개일떄에 관한내용이
내용이있는것같은데 인강에는 없나요?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
9장 API서버에서 사용자 정보 추출하기 호출 오류 문의
카카오로 access토큰 받아오고 나서api서버에서 kakao로 사용자 정보 호출 시 오류가 나네요..어떤 부분을 수정해야 할지 잘 감이 안오네요. Not injecting HSTS header since it did not match request to [Is Secure]--아래 로그1-28T17:15:42.369+09:00 TRACE 26452 --- [apiserver] [nio-8080-exec-2] o.s.security.web.FilterChainProxy : Invoking ExceptionTranslationFilter (13/13)2024-11-28T17:15:42.369+09:00 DEBUG 26452 --- [apiserver] [nio-8080-exec-2] o.s.security.web.FilterChainProxy : Secured GET /api/member/kakao?accessToken=s0KvFDK1upVad8mdV-4lSc8WG_NwqUV7AAAAAQoqJVAAAAGTcdcZj6ew61y3DOUZ2024-11-28T17:15:42.370+09:00 INFO 26452 --- [apiserver] [nio-8080-exec-2] o.z.a.controller.SocialController : accessToken : s0KvFDK1upVad8mdV-4lSc8WG_NwqUV7AAAAAQoqJVAAAAGTcdcZj6ew61y3DOUZ2024-11-28T17:15:42.372+09:00 INFO 26452 --- [apiserver] [nio-8080-exec-2] o.z.apiserver.service.MemberServiceImpl : response 1------------------------------2024-11-28T17:15:42.405+09:00 TRACE 26452 --- [apiserver] [nio-8080-exec-2] o.s.s.w.header.writers.HstsHeaderWriter : Not injecting HSTS header since it did not match request to [Is Secure]2024-11-28T17:15:42.405+09:00 ERROR 26452 --- [apiserver] [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.web.client.ResourceAccessException: I/O error on GET request for "https://kapi.kakao.com/v2/user/me": PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target] with root causesun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetat java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:148) ~[na:na]at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:129) ~[na:na]at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297) ~[na:na] -- 소스코드private void getEmailFromAccessToken(String accessToken) { String kakaoGetUserURL = "https://kapi.kakao.com/v2/user/me"; if(accessToken == null){ throw new RuntimeException("Access Token is null"); } RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.add("Authorization", "Bearer " + accessToken); headers.add("Content-Type","application/x-www-form-urlencoded"); HttpEntity<String> entity = new HttpEntity<>(headers); UriComponents uriBuilder = UriComponentsBuilder.fromHttpUrl(kakaoGetUserURL).build(); log.info("uriBuilder " + uriBuilder); log.info("response 1------------------------------"); ResponseEntity<LinkedHashMap> response = restTemplate.exchange( uriBuilder.toString(), HttpMethod.GET, entity, LinkedHashMap.class); log.info("response 2------------------------------"); log.info(response);
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
mysql 연결 관련 에러 질문있습니다
안녕하세요 선생님. 실습 과정중 mysql과 연결이 잘 안 되는 것 같아 질문드립니다 처음에 있었던 에러였는데요 화면 접속 자체는 잘 되는데 이름과 나이를 저장하면 2024-11-28 16:57:49.886 ERROR 13764 --- [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.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.group.libraryapp.dto.user.request.UserCreateRequest]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.group.libraryapp.dto.user.request.UserCreateRequest (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 2]] with root cause com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.group.libraryapp.dto.user.request.UserCreateRequest (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 2]이런 오류가 떴습니다. 검색해보니 UserCreateRequest에 기본 생성자를 만들라고 해서 만든 후 실행하니 이 오류는 안뜨긴합니다. 인자 있는 생성자가 있었는데 왜 기본 생성자를 만들어야하는건가요? 지금 제 코드가 꼬여서 그런걸까요?또한 에러 해결 방법으로 애노테이션 누락: Jackson 라이브러리에서 객체를 직렬화/역직렬화할 때 필요한 애노테이션이 누락되었을 수 있습니다. 예를 들어, 생성자에 @JsonCreator와 각 필드에 @JsonProperty를 추가해 보세요.이런 방법을 추천하는데 이건 무엇인가요?? 위 에러 고친 이후에는 SQL 문법 오류가 발생하는데요 선생님과 똑같이 문법을 사용했는데 왜 오류가 생기는지 모르겠습니다.. sql에 테이블 자체는 잘 생성되어있는 상태입니다
-
미해결실전! 스프링 데이터 JPA
Projection 부분 듣고있는데 의문점
의문점이있습니다. public interface UsernameOnly { String getUsername(); }이런식으로 사용자 이름만 가져올수있게 하는건 알겠는데 그냥 레파지토리에 @Query("select m.userName from Member m ")그냥 이런식으로 하면되는거아닌가요?굳이 projection안쓰고?햇갈립니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
쿼리를 데이터베이스에 전송
플러시를 하면 쿼리를 db에 전송하는데 단순히 전송하는것만으로는 db에 반영이 안되나요?커밋을 한 후에 반영이 되는건가요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
일대 다 중간테이블
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요! 혹시 다대다의 경우는 중간테이블을 두어 푸는 것이 실무에서 필수적이라 했는데, 일대 다의 경우에도 비즈니스 로직 분리:중간 테이블을 통해 비즈니스 로직(보상 분배, 순위 계산 등)을 별도로 관리함으로써, 엔티티 간의 복잡성을 줄입니다.데이터의 독립적 관리:과거 랭킹 기록, 보상 내역 등 변경하지 않아야 할 데이터를 독립적으로 저장하고 관리할 수 있습니다. 이런 이유로 중간테이블을 두기도 하나요? 예를 들어 사용자와 랭크 관계가 일대 다인 상황에서(사용자는 한 랭크만 참가 가능) 과거 정보들을 저장하기 위해 중간테이블을 두고 거기에 전적 같은 정보를 저장하고자 하는데 이런 경우 일대 다임에도 중간테이블을 놔두어 관리해도 되나요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
Entity의 id
Entity들의 id를 따로 Column으로 name을 지정해주지 않아도 괜찮나요??연관관계 매핑할 때 예를 들어 MEMBER랑 TEAM을 매핑하면 MEMBER의 FK 이름은 TEAM_ID인데 TEAM의 PK는 ID라서 TEAM의 ID를 TEAM_ID로 바꾸지 않아도 괜찮은건가요??
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
왜 이번 강의는 https://start.spring.io/ 이곳에서 설치 하지 않았는지 궁금합니다!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]이전에 들었던 실전! JPA1편에서는 https://start.spring.io/ 이곳에서 다운로드 하고 설치했는데 이번 강의에선 왜 따로 소스코드를 주시고 시작했는지 궁금합니다! 단순하게 springBoot를 사용하지 않아서인가요? 아니면 초기 설정이 힘들어서인가요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
ENUM데이터 변경관련 질문
package hellojpa; public enum RoleType { USER , ADMIN, GUEST , CEO==추가한 데이터(테이블 생성 후) } /////// try { Member member1 = new Member(); member1.setId(5L); member1.setUsername("하하"); member1.setRoleType(RoleType.CEO); //////////// <property name="hibernate.hbm2ddl.auto" value="update" /> 이러한설정의 상태입니다 영한님도 auto가 update로 되어있는것 같은데 저는 ENUM의 컬럼을 추가하고 적용해서 DB를 생성하려하면 오류가발생합니다
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
memberForm 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 저는 memberForm을 생성해서 뷰로 전송 -> 뷰에서 memberForm을 setter로 채움 -> 채운 memberForm을 post요청에 함께 전송으로 이해했습니다. 근데 create에서 받은 memberForm하고 createForm에서 받은 memberForm하고 다른 객체로 나옵니다.어디 부분이 잘못됐는지 알고싶습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
스프링 Pageable관련
@GetMapping("/members") public Page<MemberNameOnlyView> findAll(Pageable pageable) { Page<MemberNameOnlyView> allNameOnlyView = memberRepository.findAllNameOnlyView(pageable); return allNameOnlyView; }여기서 파라미터로 Pageable받아서 페이징처리해주는거 관려해서 공부하고싶은데 어디 강의에서나오나요?JPQ로 페이징처리말구요