묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
데이터 베이스 쿼리 실행 시점 관련 문의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이전에 데이터베이스에 반영되는 실행 시점은em.flush()트랜잭션 커밋JPQL 쿼리 실행으로 알고 있습니다. 그런데 11:45초 쯤부터 em.persist(team) 을 실행할때 id 값을 갖고 오기위해 new Member 이전에 insert문이 실행된다면 위의 경우가 아닌 것으로 판단되는데 em.persist 호출해도 쓰기 지연 SQL에 쌓이는 것이 아닌 바로 쿼리를 실행하게 되는 건가요?
-
미해결실전! Querydsl
페치조인 관련해서 질문있습
@Test public void fetchJoinNo() throws Exception{ em.flush(); em.clear(); /*Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1")) .fetchOne();*/ Tuple tuple= queryFactory .select(member,team) .from(member) .where(member.username.eq("member1")) .fetchOne(); String qlString= "select m,m.team from Member m where m.username=:username"; Tuple tuple1 = (Tuple) em.createQuery(qlString, Tuple.class).setParameter("username","member1") .getResultList(); boolean loaded = emf.getPersistenceUnitUtil().isLoaded(tuple.get(team)); assertThat(loaded).as("페치 조인 적용").isTrue(); } 위 코드는 위 코드에서 tuple 을 이용해서 ,member 와 team 을 함꼐 조회해 보았을 때 team 이 영속화 되는지 실험한 것입니다. 아래 코드입니다. queryFactory .select(member,team) .from(member) .where(member.username.eq("member1")) .fetchOne(); 원래 fetchJoin() 을 안붙여서 안될 것이라고 생각했습니다만 의외로 되가지고 뭐지 ? 했습니다. 원래 되는 것인가요?? 그러면 원래 이게 의미하는 JPQL 인 select member1, team from Member member1 where member1.username = ?1 를 직접 작성하면 @Query("select m, m.team from Member m wherer m.username=:username)뭐 이런식으로 해도 fetch join 이 된다는 얘기 아닌가요?
-
미해결실전! Querydsl
count 쿼리의 성능 관련 질문
페이징 부분에서 참고 부분에서 실무에서 페이징 쿼리를 작성시 데이터를 조회하는 쿼리는 여러 테이블을 조인해야 하지만 count 쿼리는 조인이 필요없는 경우도 있다 . 에 대한 구체적인 실무, 혹은 실제 예를 알고싶습니다,
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Connection is broken 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.h2 데이터베이스를 설정하고 MemberRepositoryTest를 하는 과정에서 오류가 납니다...2024-05-01T23:17:23.454+09:00 ERROR 24972 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken: "java.net.ConnectException: Connection refused: no further information: localhost" [90067-224]spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show_sql: true format_sql: true logging: level: org.hibernate.SQL: debug현재 application.yml 설정이고 h2 버전은com.h2database:h2:2.2.224이고 다운로드도 같은 버전으로 받았습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
jar build 동작 확인을 위한 Window cmd 이용 중 Build failed with an exception 오류
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]H2 database Ctrl C 후gradlew clean build 실행 시 아래와 같이 화면이 나타납니다.이전에 시행했을땐 이런 오류가 떴습니다.(base) C:\study\jpashop\jpashop>gradlew clean buildWelcome to Gradle 8.7!Here are the highlights of this release:Compiling and testing with Java 22Cacheable Groovy script compilationNew methods in lazy collection propertiesFor more details see https://docs.gradle.org/8.7/release-notes.htmlStarting a Gradle Daemon (subsequent builds will be faster)Task :compileJava FAILEDFAILURE: Build failed with an exception.What went wrong: Execution failed for task ':compileJava'.error: invalid source release: 21Try:Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. Get more help at https://help.gradle.org.BUILD FAILED in 8s 2 actionable tasks: 2 executedGradle 8.7같은 경우 Java 22와 호환이 되어있는것 같은데 Java21로 설정하고 프로젝트를 진행 했을 때 어떻게 처리해야하는지 궁금합니다.
-
미해결실전! 스프링 데이터 JPA
Spring Data JPA에서 update 하는 방법
검색해보니 Spring Data JPA는 순수 JPA와 다르게 save() 조차 하지 않아도 자동으로 변경감지가 일어난다고하는데, 제가 작성한 코드를 바탕으로 테스트해보니 save()를 하지 않으면 업데이트가 되지 않았습니다. 조금 더 디테일한 설명을 해주실 수 있을까요? save()는 @PostMapping의 postRepository.save(findPost); 부분을 지칭하는 것입니다. @Controller @RequestMapping("/post") @RequiredArgsConstructor @Slf4j public class PostController { private final BoardService boardService; private final BoardRepository boardRepository; private final PostService postService; private final PostRepository postRepository; /** * 게시물 수정 */ @GetMapping("/edit/{id}") public String showEdit(@PathVariable Long id, @SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember, Model model) { Post findPost = boardRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("No Post Found."));// findPost 게시물 보여주기 model.addAttribute("findPost", findPost); return "editPost"; } @PostMapping("/edit/{id}") public String editPost(@PathVariable Long id, Post editPost) { Post findPost = boardRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("No Post Found.")); findPost.setTitle(editPost.getTitle()); findPost.setContent(editPost.getContent()); findPost.setCategory(editPost.getCategory()); findPost.setLastModifiedTime(LocalDateTime.now()); postRepository.save(findPost); return "redirect:/board/post/" + id; } } public interface PostRepository extends JpaRepository<Post, Long> { /** * 게시물 저장 */ Post save(Post post); }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
1:n 양방향, n:1 양방향의 차이에 대해서,,
제 머릿속에는? ㅠ 1:n 이든 N:1이든. 양방향이 된 순간 서로의 필드에 참조가능한 필드가 생기기 때문에 결국에는 같은걸 말하는것 같은데많은 블로그 글에서는 1:N은 양방향은 jpa 스펙에 없다. 라고하는 글들이 많아서.. 헷갈립니다..
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
저장되는 메모리 위치
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]임베디드 타입을 만들 때 자바 클래스로 만들고, @Embeddable 애노테이션을 붙여서 DB 테이블의 값 타입으로 매핑하는데 그럼 여타 값 타입과 마찬가지로 스택 영역에 저장되는지, 아니면 클래스로 구현되어 힙 영역에 저장되는지 궁금합니다.그리고 임베디드 타입 자체를 클래스가 아닌 구조체나 열거형으로 만들 수 없는지도 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
중복회원예외 테스트 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.중복 회원예외 테스트 오류입니다 복사 붙여넣기 해봐도 오류가 나옵니다
-
해결됨김영한의 실전 자바 - 중급 1편
11분 12초 강의자료 오타 찾았습니다
11분 12초에Car 클래스는 엔진에 필요한 메서들을 제공해야 한다.메서 -> 메서드 로 수정해야 할 꺼같습니다! pdf 파일은 7.중첩 클래스, 내부 클래스1.pdf파일이며19/21 페이지입니다 !
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문 도메인 개발-주문 기능 테스트(OrderServiceTest) 오류 문의!!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]<문의사항>3가지 테스트코드부분 모두 어떻게 고치면 좋을지 문의드려요!<상황설명>다음 사진 3장은 OrderServiceTest.java 전체 코드입니다.이 테스트를 Run하면 3 failed, 0 passed가 나옵니다.(1)상품주문_재고수량초과(2)상품주문(3)주문취소에서 에러가 나는데요.에러 메시지가 짧은 (2), (3) 먼저 에러가 어떻게 나는지 첨부합니다.(2) 상품주문-에러메시지(3) 주문취소-에러메시지(1) 상품주문_재고수량초과-에러메시지<전체 에러 메시지>https://drive.google.com/file/d/1KO2cRf7BYzk3khbQRF7pw7Bw1Gz1X8hv/view?usp=sharing
-
미해결자바 코딩테스트 - it 대기업 유제
최대 길이 연속수열 질문
정답의 경우 아래와 같이 되어있습니다.public int solution(int[] nums){ int answer = 0; HashSet<Integer> set = new HashSet<>(); for(int x : nums) set.add(x); for(int x : set){ if(set.contains(x - 1)) continue; int cnt = 0; while(set.contains(x)){ cnt++; x++; } answer = Math.max(answer, cnt); } return answer; }제가 푼 방식 : set으로 중복되지 않은수만 우선순위 큐(pQ)에 넣어 계산.물론 풀이에서의 코드가 간결하고 사용하는 자료형도 적으니 좋은 코드같습니다만은 이렇게 풀었을때 시간 복잡도 면에서도 많이 불리한지 피드백 부탁드립니다. public int solution(int[] nums){ int answer = 1 , cnt=1; PriorityQueue<Integer> pQ= new PriorityQueue<>(); HashSet<Integer> set = new HashSet<>(); for(int i : nums){ if(!set.contains(i)) pQ.offer(i);// set.add(i); } int N = pQ.poll(); while ( !pQ.isEmpty() ){ int nextN = pQ.poll(); if( N+1 == nextN ){ cnt++; N = nextN; } else if( N+1 != nextN ) { cnt = 1; N = nextN; } answer=Math.max(answer,cnt); } return answer; }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문취소시 재고 늘어나야함 오류현상
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]https://drive.google.com/file/d/1pI1pZ0tfY6RpJTQPUSY5V6boziC41aAC/view안녕하세요!주문취소시 주문한 수량만큼 재고가 다시 늘어나야한다 부분에서 에러가 계속 생겨서 어디서 코드가 잘못된건지 확인부탁드립니다 ㅜ!! 계속 시도해도 실제값이 2로 나와서요 !
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문취소시 재고 늘어남 오류현상
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]https://drive.google.com/file/d/1pI1pZ0tfY6RpJTQPUSY5V6boziC41aAC/view?usp=sharing안녕하세요! 주문기능 테스트에서 "주문취소"부분에서 에러가 두번째주문취소시 재고가 주문한 수만큼 다시 늘어나야함에서 생깁니다. 어디서 코드가 잘못된건지 확인부탁드립니다ㅜㅜ!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
memberForm 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 컨트롤러에서 html으로 보내줄 때 memberForm 객체도 같이 넘어가게 되는데, 여기서 memberForm이 dto 개념과 같다고 봐도 될까요?
-
미해결김영한의 실전 자바 - 기본편
자바 메모리 구조 강의를 들으면서 질문 있습니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요! 제가 알고 있는게 정확한지 알고 싶어서 질문 드립니다! 힙 영역에는 new 키워드를 통해 동적으로 생성된 인스턴스가 존재하는 지역이라고 설명해주셨는데클래스 로더에 의해 바이트 코드를 통해 메서드 영역에 생성자, 메서드 등 정보가 저장되고, 힙 영역에 클래스 타입의 인스턴스도 생성되지 않나요??
-
미해결실전! 스프링 데이터 JPA
LazyInitializationException에 대해 질문드립니다!
배운것을 바탕으로 개인적으로 게시판을 만들어보는 중입니다. 게시물을 추가할 때 다음과 같은 에러가 발생해서 몇시간째 애를 먹고있는 중입니다.org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.myproject.jpaboard.domain.Member.posts: could not initialize proxy - no Session아무래도 Post(게시물) 엔티티의 연관관계 편의 메서드에서 문제가 발생하는 것 같습니다. 서비스 계층에 @Transactional도 붙여줬음에도 계속해서 문제가 발생해서 질문 남깁니다. 유일한 해결책은 Member의 posts에 EAGER을 붙이는 방법이었습니다. 하지만 이는 적절치 않아보입니다. 어떻게 해야 해결할 수 있을까요.핵심이 되는 코드들을 아래에 추가했습니다. package com.myproject.jpaboard.web.controller; import com.myproject.jpaboard.domain.Member; import com.myproject.jpaboard.domain.Post; import com.myproject.jpaboard.web.SessionConst; import com.myproject.jpaboard.web.form.PostForm; import com.myproject.jpaboard.web.repository.BoardRepository; import com.myproject.jpaboard.web.service.BoardService; import com.myproject.jpaboard.web.service.PostService; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @Controller @RequestMapping("/post") @RequiredArgsConstructor @Slf4j public class PostController { private final BoardService boardService; private final BoardRepository boardRepository; private final PostService postService; /** * 게시물 추가 */ @PostMapping("/new") public String addPost(@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember, @Validated PostForm postForm, BindingResult bindingResult) { log.info("postForm={}", postForm); if (bindingResult.hasErrors()) { log.info("errors={}", bindingResult); return "newPost"; } postService.addPost(postForm, loginMember); return "redirect:/board/list"; } } // Post.java @Entity @Getter @Setter public class Post { @Id @GeneratedValue @Column(name = "post_id") private Long id; private String title; private String writer; @Lob @Column(columnDefinition="LONGTEXT") private String content; @Column(updatable = false) private LocalDateTime createdTime; private LocalDateTime lastModifiedTime; private Long viewCount; @ManyToOne(fetch = FetchType.LAZY) // 다쪽이 연관관계의 주인 @JoinColumn(name = "member_id") private Member member; @Enumerated(EnumType.STRING) private CategoryType category; @OneToMany(mappedBy = "post", cascade = CascadeType.ALL, orphanRemoval = true) private List<Comment> comments = new ArrayList<>(); public Post() {} // 연관관계 편의 메서드 public void setMember(Member member) { this.member = member; member.getPosts().add(this); } @Override public String toString() { return "Post{" + "id=" + id + ", title='" + title + '\'' + ", writer='" + writer + '\'' + ", content='" + content + '\'' + ", createdTime=" + createdTime + ", lastModifiedTime=" + lastModifiedTime + ", viewCount=" + viewCount + ", category=" + category + '}'; } } // Member.java @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String email; private String password; private String name; @Embedded private Address address; @OneToMany(mappedBy = "member", cascade = CascadeType.ALL) private List<Post> posts = new ArrayList<>(); /** * POST 추가 로직 (도메인 모델 패턴) */ // public void addPost(Post post) { // // // } @Override public String toString() { return "Member{" + "address=" + address + ", name='" + name + '\'' + ", password='" + password + '\'' + ", email='" + email + '\'' + ", id=" + id + '}'; } } // PostService.java @Service @RequiredArgsConstructor @Transactional(readOnly = true) public class PostService { private final BoardRepository boardRepository; private final PostRepository postRepository; /** * 게시물 추가 */ @Transactional public void addPost(PostForm postForm, Member loginMember) { Post post = new Post(); postForm.setCreatedTime(LocalDateTime.now()); // setter로 세팅 post.setTitle(postForm.getTitle()); post.setWriter(postForm.getWriter()); post.setContent(postForm.getContent()); post.setCreatedTime(postForm.getCreatedTime()); post.setCategory(postForm.getCategory()); post.setViewCount(0L); post.setWriter(loginMember.getName()); post.setMember(loginMember); postRepository.save(post); } }
-
미해결스프링 시큐리티 OAuth2
ID_TOKEN 은 많은 사이들들에서 지원을 안한다고 보면될까요?
ID_TOKEN 은 많은 사이트들에서 지원을 안한다고 보면될까요?대부분의 사이트들은 Authorization Code Grant Type 방식만 지원하는 것 같습니다.
-
미해결실전! Querydsl
QueryDsl 세팅 관련 질문입니다
clean delete file 이 찾아보니 clean task 실행시 QClass 삭제라고 나와있는데 스프링 부트 3.0 에서는 build->generated->source...annotationProcessor->... 에 QClass 가 생성되는데 왜 스프링 부트 3.0에서 위 clean 부분의 디렉토리가 필요한지 궁금합니다. 또한
-
미해결김영한의 실전 자바 - 기본편
static메서드와 인스턴스메서드
질문1.시점1에서 staticMethod()가 "메서드영역->static영역"에 이미 할당되어있는상태가 맞을까요? 질문2.시점1에서는 instanceMethod()가 할당되지 않았고시점2에서는 new Test()를 통해서 인스턴스를 생성했을 때 "메서드 영역-> 클래스정보" 에 instanceMethod()가 할당되는게 맞을까요? 질문3.메모리 할당위치가 아래와 같이 할당되는게 맞을까요? staticMethod(): "메서드 영역 -> static영역"instanceMethod(): "메서드 영역 -> 클래스정보 영역" 질문3.test1의 주소값이 x01,test2의 주소값이 x02 라고 가정하면test1, test2의 instanceMethod()는 동일한 클래스영역에 주소를 가리키고 있나요?? 질문4.test1, test2의 각 멤버변수를 instanceMethod()를 통해서 호출한다고 가정하면 test1.instanceMethod()test2.instanceMethod() 위와 같이 코드를 작성할텐데 이때 instanceMethod() 호출하는 과정을 살펴보면(1) test1.instanceMethod(), test2.instanceMethod()가 같은 주소의 "메서드 영역 -> 클래스 정보"에 있는 instanceMethod()로 찾아간다 (2)heap영역에 test1의 멤버변수, test2의 멤버변수의 값을 가지고 온다 질문4의 의도는 "같은 메서드 영역에 있는 instanceMethod()를 찾아가지만 각 인스턴스의 멤버변수는 heap영역에서 가지고 오느냐" 이것을 물어보려고 한 것입니다. 복습할겸 다시 보고 있는데 갑자기 혼란스러워서 질문하게 되었습니다. 질문이 많지만 답변부탁드려요!