inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

로또문제 맞나요?

미해결

김영한의 실전 자바 - 중급 1편

이렇게 풀었는데요 if부분이 저도 잘모르겠는데 작동은 하긴합니다..근데 일단 영한님처럼 두개로 나눠쓴다(꼭 나눌필요는없다하셨지만..)같은 차근차근 생각이 전혀 안납니다..ㅠㅠ 어떻게저떻게 머리 굴려서 해보긴했는데 뭔가 이상한 부분은 없는지 봐주셨으면 좋겠습니다. 그리고 이런..어떻게 코드를 작성해야할지 생각이 안나는 것은 어떻게 해결을 할 수 있을까요..? package lang.Math.test; import java.util.Arrays; import java.util.Random; public class Lotto { public static void main(String[] args) { Random random = new Random(); int[] arrays = new int[6]; for(int count = 0; count < 6; count++){ int num = random.nextInt(45) + 1; if(num!=arrays[count]){ arrays[count] = num; } } System.out.println("arrays = " + Arrays.toString(arrays)); }

  • java
  • 객체지향
duswjdhh 댓글 1 좋아요 0 조회수 170

질문있습니다

미해결

비전공자를 위한 Spring MVC 뽀개기 기초

선생님안녕하세요 질문있습니다 dispatcherServlet 만들기하고난뒤 web.xml파일이 자동으로 생성된다고 하셨는데 web.xml파일이 아무런 변화도 없는데 이경우 어떻게 해야하나요? 강의하신데로 빠짐없이 하나하나 등록하고 입력했는데 web.xml파일이 자동으로 생성이 안됩니다. 답변부탁드립니다 감사합니다!

  • spring
  • mvc
  • spring-boot
  • spring-mvc
전용근 댓글 3 좋아요 0 조회수 203

notify()가 blcoked로 깨우는 이유??

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] notify()로 깨울 때 자바가 waitting을 runnable로 안 깨우고 blocked로 깨우는 이유가 궁금합니다. 또 blocked로 깨운 뒤에 어떻게 되는지도 궁금합니다.

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
김철준 댓글 1 좋아요 1 조회수 140

커넥션을 사용한다는 개념

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

안녕하세요. 강의 자료중에, " MemberRepository는 JPA를 통해 회원을 저장하는데, 이때 JPA는 트랜잭션이 시작된 con1을 사용해서 회원을 저장한다 " 라고 되어있는데요. 이 부분에 대해 영한님께서 "em.persist()를 호출할때 내부적으로 JPA는 트랜잭션이 시작된 con1을 사용한다" 고 하셨는데, em.persist()를 호출할때, 실제 데이터베이스에 커밋은 아직 하지 않지만 con1을 사용해서 회원을 데이터베이스에 저장하는것인가요? "LogRepository도 트랜잭션C와 관련된 con2를 사용한다" 라고 강의자료에 나와있는 부분도, 위 내용과 동일한걸까요? con1과, con2를 사용한다는 개념이 어떤것을 의미하는지 궁금해서 질문드립니다. 감사합니다.

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
오리쉐리 댓글 1 좋아요 0 조회수 102

프론트단 질문 검증 오류뜰시 태그를 추가하는데 alert창을 띄우는 방식으로 한다면 어떻게 달라지는지?

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 프론트단 질문 검증 오류뜰시 태그를 추가하는데 alert창을 띄우는 방식으로 한다면 어떻게 달라지는지? 예를들면 검증해서 문제가 있으면 bindingresult에 담고 템플릿에 넘겨주는데 지금방식은 문제가 잇으면 input태그밑에 오류를 표시해주는데 alert창으로 표시를 하고 싶다면 프론트에서 코드가 어떻게 달라지는지 알고싶네요. 자바스크립트코드에 오류가 있을시에 alert창에 ${에러문구} 이런식으로 넣어주면 되는건가요?

  • spring
  • mvc
캐내기 댓글 1 좋아요 0 조회수 113

@Transactional이고, Rollback 설정을 변경하지 않았음에도 Insert문이 실행되는 이유

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 다름이 아니라 테스트 코드를 작성하여 결과를 확인하고 있었는데 교수님의 설명과 달리 Insert문이 계속해서 출력되고 있는 것이 의문이라 여쭤봅니다. 저는 rollback을 false로 하거나 em.flush를 따로 호출해주지 않았음에도 Insert문이 출력되는 이유가 궁금합니다. 참고로 저는 H2가 아니라 mysql 로컬 디비를 연결하여 개발 중인데 이 것이 사유가 되는걸까요? spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/testdb username: root password: /// jpa: hibernate: ddl-auto: update properties: hibernate: dialect: org.hibernate.dialect.MySQL8Dialect format_sql: true logging: level: org.hibernate.SQL: DEBUG org.hibernate.type.descriptor.sql.BasicBinder: TRACE package jpabook.jpashop.service; import jpabook.jpashop.domain.Member; import jpabook.jpashop.repository.MemberRepository; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import static org.junit.Assert.*; @RunWith(SpringRunner.class) @SpringBootTest @Transactional public class MemberServiceTest { //테스트니까 이런식으로 해도 됨. @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test public void 회원가입() throws Exception { //~~걸 실행하면 ~~한 결과가 나와야 함, 검증해라 (given when then) //given Member member = new Member(); member.setName("kim"); //when Long savedId = memberService.join(member); //then assertEquals(member, memberRepository.findOne(savedId)); } @Test(expected = IllegalStateException.class) public void 중복_회원_예외() throws Exception { //given Member member1 = new Member(); member1.setName("kim1"); Member member2 = new Member(); member2.setName("kim1"); //when memberService.join(member1); memberService.join(member2); // try{ // memberService.join(member2); //예외가 발생 // }catch (IllegalStateException e){ // return; // } //then fail("예외가 발생하야 한다"); } }

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
sky980221 댓글 2 좋아요 0 조회수 434

후위식 연산(postfix) 컴파일 에러

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

향상된 switch문 (arrow) -> 사용했는데 컴파일 에러 나는데 자바 버전 문제 때문인건가요? 컴파일에러 /judger/run/1d73365da4a4439f86329fcf18ad31c5/Main.java:24: error: : expected case '+' -> stack.push(lt+rt); ^

  • java
  • 코딩-테스트
honlucete 댓글 1 좋아요 0 조회수 80

벌크 연산과 em.clear 관련

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요? 아래 코드에서 em.clear() 를 호출하거나 호출하지 않거나 모두 SQL 로그가 나옵니다 . SQL 로그가 나온다는 것은 DB에 갔다올 것 같은 생각이 드는데요, 그렇지만 em.clear()를 호출하지 않는 경우에는 age 가 0으로 출력되고, em.clear()를 호출하는 경우 20으로 출력됩니다. SQL Queury가 로그에 찍히더라도 영속성 컨텍스트에서 값을 조회하는 경우가 있는걸까요? int resultCount = em.createQuery("update Member m set m.age = 20") .executeUpdate(); System.out.println("resultCount = " + resultCount); em.clear(); Member mm = em.createQuery("select m from Member m where m.name = :name", MemberJ.class) .setParameter("name", "회원1") .getSingleResult(); SQL 로그가 두 경우 모두 찍힘 Hibernate: /* select m from Member m where m.name = :name */ select m1_0.id, m1_0.age, m1_0.name, m1_0.TEAM_ID from MEMBER m1_0 where m1_0.name=?

  • java
  • jpa
mikaaaaa 댓글 2 좋아요 0 조회수 134

th:fied 가 바인딩 실패시 값을 넣어주는것을 아는데 타임리프말고 다른 템플릿은 어떻게 오류값을 넣는건지?

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] th:fied 가 바인딩 실패시 값을 넣어주는것을 아는데 타임리프말고 다른 템플릿은 어떻게 오류값을 넣는건지? new FieldError("item", "itemName", item.getItemName(),....) 위에 3번째 파라미터가 들어가는거같은데 템플릿에서 3번째 파라미터를 어떻게 꺼내는건지 알고싶네요.

  • spring
  • mvc
캐내기 댓글 1 좋아요 0 조회수 144

UTF-8 문자열을 char 타입으로 변경하는것에 대해서 궁금합니다.

미해결

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

public static void main(String[] args) throws IOException { String writeString = "가나다ABC"; System.out.println("writeString = " + writeString); // 파일에 쓰기 var fw = new FileWriter(FILE_NAME, StandardCharsets.UTF_8); fw.write(writeString); fw.close(); // 파일에서 읽기 var content = new StringBuilder(); var fr = new FileReader(FILE_NAME); int ch; while ((ch = fr.read()) != -1) { char ch1 = (char) ch; System.out.println("ch1 = " + ch1); content.append(ch1); } fr.close(); System.out.println("readString = " + content); } 질문1) 예제의 코드에서 char ch1 = (char) ch; 로 캐스팅하는부분이 궁금해요 인코딩이 UTF-8 이니 최대 3바이트까지 쓸 수 있는데 이것을 2바이트만쓰는 char 로 캐스팅할 수 있는 이유는 무엇인가요? 가~다 는 자바의 기본인코딩타입인 UTF-16 에서 2바이트로 표현할 수 있기 때문일까요? fr.read() 는 2바이트로 표현해야하는것이 아니라면 해당문자열까지 읽고, 반환하는것으로보이는데 맞는걸까요? 확인해보니 이모지같은경우에는 UTF-16 에서는 두 바이트로 표현이힘들어서 깨지는것을 확인했습니다! 질문2) 위의 가정이 맞다면 Reader, Writer 은 항상 JVM이 관리하는 UTF-16 으로 읽는과정이 있으니 byte 단위로 읽는 Stream 보다 성능적으로 느릴 것 같은데 맞을까요?

  • java
  • 네트워크
  • 객체지향
이석준 댓글 1 좋아요 0 조회수 132

클래스 접근제어자

미해결

김영한의 실전 자바 - 중급 1편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 앞서 기본편 강의에서 JAVA의 클래스 접근제어자는 public,default만 사용하다고 배웠는데, 정적 중첩 클래스에는 예외적으로 private 사용이 가능한건가요? Oracle docs를 찾아봤는데 해당 내용이 안보여서 질문드립니다.

  • java
  • 객체지향
hxhxhx 댓글 2 좋아요 0 조회수 152

SqlConnection관련 질문

미해결

ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0

SqlConnection이 deprecated 되었다고 뜨는데 이 부분은 상관없나요? 아니면 제가 잘못...선택을 한건지...ㅠqlConnection이 deprecated 되었다고 뜨는데 이 부분은 상관없나요? 이후 강의를 들으면서 따라가는데 차질이 생기는지 궁금합니다.

  • C#
  • mvc
  • rest-api
  • 아키텍처
  • mssql
  • ef-core
  • asp.net-core
qkrwluds7998 댓글 2 좋아요 0 조회수 147

New ImmutableAddress부분의 질문입니다

미해결

김영한의 실전 자바 - 중급 1편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. MemberB.setAddress(New ImmutableAddress("부산")); 이부분이 ImmutableAddress address2 = New ImmutableAddress("부산"); memberB.setAddress(address2); 이코드와 같은 건가요?

  • java
  • 객체지향
Choi 댓글 1 좋아요 0 조회수 130

예외 처리 강의 내용 관련 질문

해결됨

기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM

안녕하세요 선생님 섹션 11의 예외 처리 강의 중 [두 가지 예외 종류] 파트를 공부하다가 궁금증이 생겨서 질문드립니다. Checked Exception과 Unchecked Exception을 Exception 클래스의 파생이냐, 혹은 RuntimeException의 파생이냐에 따라 분류하는 것으로 설명해주신 것으로 이해했는데요. 그런데 1.4v 교안 기준으로 305페이지에(강의 기준으로 2분 32초) Unchecked exception 열에서 사례를 들어주신 SQLException, IOException, ClassNotFoundExcpetion은 jdk를 확인해보니 Exception의 파생이었습니다. (ReflectiveOperationException은 Exception 클래스의 파생입니다.) jdk 코드를 기준으로 보면 SQLException, IOException, ClassNotFoundExcpetion은 Checked Exception에 해당하는 것으로 보이는데, 선생님께서 해주신 설명과 다른 부분이 있어서 혼동이 오는데 어떤게 맞는건지요? 그리고 강의 내용을 바탕으로 좀 더 공부를 해보니 제가 이해한 바는 아래와 같습니다. 혹시 잘못 이해한 부분이이 있을까요? 1. Checked, Unchecked Exception 모두 예외 발생은 Runtime에서 이루어진다. 2. 파일 I/O, DB 접근은 실행 환경에서 자주 발생할 수 있는 문제이기 때문에, 개발자가 이를 예상하고 처리하도록 컴파일 시점에서 컴파일러에 의해 예외처리가 강제된다. -> SQLException, IOException 예외가 Checked Exception인 이유 감사합니다.

  • java
  • 객체지향
  • jvm
  • data-structure
널개짱 댓글 1 좋아요 0 조회수 168

스케줄링에 대한 질문입니다.

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 프로세스 스케줄링과 스레드 스케줄링의 차이에 대해 궁금합니다. 두가지는 동일한 개념인가요? 1개의 CPU 코어는 한번에 하나의 스레드만 실행할 수 있나요?

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
jjin 댓글 2 좋아요 0 조회수 138

[JVM이 문자열 상수를 관리하는 구조] 관련 질문드립니다.

해결됨

기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM

안녕하세요 선생님~ [JVM이 문자열 상수를 관리하는 구조] 강의를 듣던 중에 이해가 잘 안되는 부분이 있어서 질문드립니다. 제가 기존에 알고 있던 내용과 더불어 강의를 통해 이해한 바로는 1. "런타임 상수 풀"은 문자열 리터럴 객체가 아닌 문자열 리터럴의 심볼릭 참조를 저장하는 곳, 즉 실제 객체는 저장되지 않음 - 물론 여러 다른 심볼릭 참조 또한 저장됨 2. String s1 = "Hello"처럼 리터럴로 선언된 String instance는 Heap 메모리 영역의 "문자열 상수 풀"에 저장 3. String s3 = new String("Hello")는 객체로, Heap 메모리 영역이면서 문자열 상수 풀이 "아닌" 영역에 저장. 즉, 문자열 상수 풀에 독립적 4. 따라서 문자열 상수 선언(String s1 = "Hello") 또는 intern() 메서드 호출할 경우에만 문자열 상수 풀에 문자열 저장이 발생 위의 이해를 전제로 질문은 아래와 같습니다. [12분 22초]쯤 선생님께서 문자열 상수 풀에서 문자열을 조회할 때, 먼저 Runtime Constant Pool 내에 문자열 리터럴을 조회하고, 있으면 바로 반환한다고 하셨는데요. 1. 런타임 상수 풀에서만 리터럴을 조회하고 끝나는 절차가 맞는지요? 혹은 "런타임 상수 풀"에 저장된 문자열 리터럴의 심볼릭 참조를 타고 "문자열 상수 풀"의 문자 리터럴 객체를 탐색하는 것까지가 맞는 처리 과정인지요? -> 저는 후자가 맞다고 생각하고 있습니다. 2. intern() 호출 시, 런타임 상수 풀 내의 "찾고자 하는 문자열 리터럴의 심볼릭 참조"가 존재하지 않는다면, JVM이 문자열 객체를 생성하여 Heap의 문자열 상수 풀에 저장하나요? 혹은 Heap 영역이지만 문자열 상수 풀이 아닌 영역에 저장되나요? -> 저는 intern() 호출로 생성된 객체는 항상 문자열 상수 풀에 저장되는 걸로 알고 있습니다. 3. 그리고 2번 질문과 연관된 질문인데, 수업자료의 예제에서 public class Main { public static void main(String[] args) { String s1 = "Hello"; String s2 = "Hello"; System.out.println(s1 == s2); String s3 = new String("World"); String s4 = s3.intern(); System.out.println(s3 == s4); System.out.println("World" == s3); // 1번 System.out.println("World" == s4); // 2번 } } 18분 51초 쯤 선생님께서 말씀하시기를 s3.intern()으로 인해 "World" 리터럴이 Runtime constant pool에 생긴다고 하셨는데, Runtime constant Pool은 오직 심볼릭 참조만 가지고 있는거 아닌가요? Runtime constant pool는 클래스 로드 시 정적으로 생성된 심볼릭 참조를 관리할 뿐이고, 동적으로 업데이트 되는건 아니지 않나요? 따라서 s3.intern()으로 인해 "World" 리터럴은 Runtime Constant Pool이 아니라 Heap 영역의 문자열 상수 풀에 들어가야하는 것이 아닌지요? 마지막으로, [System.out.println("World" == s3); // 1번] 여기서 false가 나온 이유는 new로 동적 할당된 "World"은 문자열 상수 풀이 아닌 Heap 영역에 저장되기 때문에 s3 참조자는 문자열 상수 풀이 아닌 그 외 Heap 영역의 String instance를 바라보고 있고, s4 참조자는 intern() 함수로 인한 호출로 문자열 상수 풀에 생긴 객체이기 때문에 false가 나온게 아닌지요? 제가 잘못 알고 있는 상태에서 잘못된 질문을 길게 한건가 싶어서 죄송스럽네요. 늘 좋은 강의 감사합니다!

  • java
  • 객체지향
  • jvm
  • data-structure
널개짱 댓글 1 좋아요 4 조회수 319

@Repository를 통해 프록시가 생성되려면

해결됨

스프링 DB 2편 - 데이터 접근 활용 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] "@Repository가 붙은 클래스는 예외 변환 AOP의 적용 대상이 된다."는 내용에 대해 더 궁금한 점이 있습니다. 테스트 코드의 @Transactional를 주석 처리하고, @Import로 설정도 수정해서, JPA 대신 MyBatis나 JdbcTemplate을 적용해 봐도 log.info("repository = {}", itemRepository.getClass()); 테스트의 이 코드를 실행하면 itemRepository가 프록시로 생성된다는 것을 확인할 수 있었습니다. JPA가 아니라 해도 @Repository가 적용되면 프록시 객체로 생성되는 것 같습니다. 그런데 이전 스프링 핵심 원리 기본 편 강의에서 사용했던 core 프로젝트에서도 한번 테스트해 봤는데 //@Component @Repository public class MemoryMemberRepository implements MemberRepository { . . . } class OrderServiceImplTest { @Test void createOrder() { MemoryMemberRepository memberRepository = new MemoryMemberRepository(); System.out.println(memberRepository.getClass()); . . . } } 이 테스트를 실행해 보면 memoryMemberRepository는 @Repository가 적용되어 있음에도 불구하고 프록시 객체로 생성되지 않는 것 같습니다. 이 이유가 무엇인가요? @Repository를 통해 프록시 객체를 만드는 기능은 JPA 라이브러리가 있어야(JPA를 사용하지 않고 MyBatis를 사용하더라도) 적용되는 건가요? +) 그런데 스프링 DB 1편 강의에서 사용한 프로젝트에서도 테스트해 봤는데, 여기선 JPA 라이브러리를 받지 않았는데도 @Repository를 통해 프록시 객체가 생성되는 것 같습니다. 물론 @Transactional도 주석 처리했습니다. @Slf4j @Repository public class MemberRepositoryV5 implements MemberRepository { private final JdbcTemplate template; . . . } @Test void AopCheck() { log.info("memberService class = {}", memberService.getClass()); log.info("memberRepository class = {}", memberRepository.getClass()); Assertions.assertThat(AopUtils.isAopProxy(memberService)).isTrue(); Assertions.assertThat(AopUtils.isAopProxy(memberRepository)).isFalse(); } @Transactional을 주석 처리했으므로 memberService는 프록시 객체가 아니고, @Repository가 적용된 memberRepository는 CGLIB 관련 내용이 출력됩니다. @Repository를 통해 프록시 객체가 생성되려면 어떤 조건이 필요한지 궁금합니다.

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
11 1 댓글 2 좋아요 0 조회수 185

boot에서 빈값이 들어왔을때 Integer와 int로 받을때 질문 그리고 주로 뭘 사용하는지

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 만약에 쿼리파라미터로 price="" //빈값 price=" " //한칸띈 빈값 이렇게 들어오고 Integer로 받으면 그냥 null이 들어가나요? int는 그냥 0이 들어가는건가요? 테스트 해보니 그런거 같아서요. 이유가 뭔가요? 자동으로 컨버터가 되는건가요? 만약에 쿼리파라미터로 price를 넣지 않으면 그냥 자동으로 null이 들어가는건가요? 그리고 숫자가 들어올때 Integer나 int 중에 주로 현업에서는 무엇으로 받는게 좋나요? 뭔가 이런 사소한게 선택장애가 있어서

  • spring
  • mvc
캐내기 댓글 1 좋아요 0 조회수 118

Member와 Locker 테이블에 질문이 있습니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 영상을 4분대까지 본 후 혼자 테스트를 해보고 있던 중 질문이 있습니다. Member 클래스에서 JoinColumn을 통해 name을 LOCKER_ID로 설정해주셨는데 이 LOCKER_ID는 어떤 것을 의미하나요? Locker 테이블의 id값이 그럼 @Column(name = "LOCKER_ID") 이렇게 되어있어야 하는 것 이라고 이해를 하고있습니다. 두 번째 질문으로 Member 클래스에서 JoinColumn을 지우고 Locker 테이블에서도 따로 @Column(name ="LOCKER_ID")를 설정해주지 않고 JpaMain 클래스에서 Locker locker = new Locker(); locker.setName("lockerA"); em.persist(locker); Member member = new Member(); member.setUsername("member1"); member.setLocker(locker); em.persist(member); Team team = new Team(); team.setName("teamA"); team.getMembers().add(member); em.persist(team); tx.commit(); 이렇게 실행을 해보았는데 어째서 Member 테이블에 LOCKER_ID 라는 이름으로 컬럼이 생기고 값이 들어가는지 궁금합니다. -> Member 클래스에서 locker변수에 @JoinColumn도 해주지 않았습니다. Member, Locker 클래스는 이렇습니다 ! @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; @OneToOne private Locker locker; public Locker getLocker() { return locker; } public void setLocker(Locker locker) { this.locker = locker; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Team getTeam() { return team; } public void setTeam(Team team) { this.team = team; team.getMembers().add(this); } } @Entity public class Locker { @Id @GeneratedValue private Long id; private String name; @OneToOne(mappedBy = "locker") private Member member; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 잘못 이해한 것이 있으면 설명 부탁드리겠습니다 ㅎㅎ

  • java
  • jpa
이동준 댓글 1 좋아요 0 조회수 159

실행이 안돼요 ㅠㅠ

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

최신버전으로 다운 받았는데도 실행이 안돼서 강의를 진행할 수 없습니다. ㅠㅠ 어떻게 해야하나요. 자세히좀 알려주세요

  • java
  • spring
  • mvc
  • spring-boot
강세준 댓글 2 좋아요 0 조회수 346

인기 태그

인프런 TOP Writers

주간 인기글