inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

영속성 컨텍스트의 성능적 이점이 있나요 ?

미해결

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

1차 캐시, 쓰기지연, 더티체킹(스냅샷), 지연로딩 영속성 컨텍스트의 특징이 이정도인 거 같은데 더티체킹은 엔티티(객체)를 컬렉션에서 관리하듯이 도와줘서 수정측면에서 도움이 많이 되는 것 같긴 한데 1차캐시나 쓰기지연 로딩은 디비에 데이터 몇 번 덜 접근한다고 해서 큰 차이 없을 것 같은데 성능적인 측면에서 많이 도움 되나요? 실무를 해본 적이 없어서 제가 잘 모르는 것일까요 ?

  • java
  • jpa
댓글 1 좋아요 0 조회수 670

Maven을 많이 사용하나요 ?

미해결

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

DB 접근 2편이나 활용1편에서는 Gradle을 사용해서application.properties를 통해 h2를 설정하고 build.gradle을 통해서 라이브러리를 받아왔던 것 같은데 이번 강의에서는 xml파일들을 사용해서 상당히 어색한데요. 최근에 Gradle을 많이 사용한다면 xml로 설정하는 방법을 따로 공부할 필요는 없을까요?

  • java
  • jpa
댓글 1 좋아요 0 조회수 1074

expected 옵션이 없어서 질문드립니다.

미해결

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

Junit5로 테스트를 생성해서 그런지 Test애노테이션에 expected 라는 옵션이 없어서 @Test() public void 상품주문_재고수량초과() throws Exception { //given Member member = createMember(); Item book = createBook(10000, 10, "시골 JPA"); int orderCount = 11; //when Assertions.assertThatThrownBy(() ->orderService.order(member.getId(), book.getId(), orderCount)) .isInstanceOf(NotEnoughStockException.class); } 이렇게 만들어서 돌렸는데 테스트가 통과했다면 그냥 넘어가도 되는 것일까요? @Test() public void 상품주문_재고수량초과() throws Exception { //given Member member = createMember(); Item book = createBook(10000, 10, "시골 JPA"); int orderCount = 11; //when Assertions.assertThatThrownBy(() ->orderService.order(member.getId(), book.getId(), orderCount)) .isInstanceOf(NotEnoughStockException.class); fail("재고 수량 부족 예외가 발생해야 한다."); } 이렇게 돌리면 재고 수량 부족 예외가 발생해야 한다. java.lang.AssertionError: 재고 수량 부족 예외가 발생해야 한다. 라는 예외가 발생했습니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 1089

getTotalPrice에서 사용하는 필드? 질문입니다

미해결

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

public int getTotalPrice() { return orderPrice * count; } public int getTotalPrice() { return getOrderPrice() * getCount(); } 주문 아이템의 가격을 반환해야할 때 당연히 위처럼 코드를 작성해야겠다고 생각했는데, 강의를 보니 아래처럼 하시더라구요 결국 같은 값을 반환하는 것 같은데 어떤 차이가 있는지 알 수 있을까요 ?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 642

16:25초 부터의 설명이 이해가 가지 않습니다.

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. @Column에서 unique나 length제약조건을 거는것은 런타임에 영향을 주지 않는다 하시고 @Table에서 name을 사용해서 테이블 명을 바꾸는것은 런타임에 영향을 주신다고 하셧는데 둘의 차이를 이해하지 못하고 있습니다. @Table의 name을 변경하는것이 인서트 쿼리나 업데이트 쿼리에 영향을 준다고 하셧는데 이 말 자체를 이해하지 못하고 있는 것 같습니다..

  • java
  • jpa
J LEE 댓글 2 좋아요 2 조회수 782

@ConditionalOnMissingBean

해결됨

토비의 스프링 부트 - 이해와 원리

선생님 안녕하세요 좋은 강의 제작해주셔서 정말 감사합니다. @ConditionalOnMissingBean 관련 궁금한 사항이 있습니다. 수업에서는 아래처럼 ServletWebServerFactory 빈을 직접 만들었기에, @ConditionalOnMissingBean 주석 역시 직접 붙이셨습니다. @MyAutoConfiguration @ConditionalMyOnClass("org.apache.catalina.startup.Tomcat") public class TomcatWebServerConfig { @Bean("tomcatWebServerFactory") @ConditionalOnMissingBean public ServletWebServerFactory servletWebServerFactory() { return new TomcatServletWebServerFactory(); } } 그럼 위처럼 직접 생성한 auto config 파일이 아니라, 스프링부트 자체의 auto config 클래스에도 자체적으로 @ConditionalOnMissingBean 주석이 붙어있다고 생각하면 될까요? 가령 스프링부트 프로젝트에서 자체 Tomcat 컨테이너를 만들면, 기존 springboot-starter의 톰캣과 충돌이 일어날 거라 생각되는데, @ConditionalOnMissingBean 이 미리 starter하위에 설정돼 있어서 충돌을 회피할 수 있는 것인지 궁금합니다.!

  • spring
  • spring-boot
  • spring-jdbc
sunghoo.lim 댓글 1 좋아요 0 조회수 1388

gradlew build 오류

해결됨

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 윈도우 cmb창에서 명령 프롬프트에서 gradlew.bat 를 실행하려면 gradlew 하고 엔터를 치면 됩니다. --> 여기까지는 실행이 됬으나 gradlew build에서 BUILD FAILED 됩니다... 도저히 모르겠습니다.

  • java
  • spring
  • mvc
  • spring-boot
댓글 2 좋아요 0 조회수 1339

@TestPropertySource 사용에 대해서 궁금하게 있습니다.

해결됨

토비의 스프링 부트 - 이해와 원리

강사님께서 application.properties는 스프링 프레임워크의 기본 동작 방식이 아니다 스프링 부트 초기화 과정에서 추가 해주는 거라고 말씀해주셨는습니다. @ContextConfiguration는 통합 테스트를 위해서 ApplicationContext를 로드하고, 구성요소 클래스를 넘겨주면 빈을 등록해주는거 같더라구요 SpringApplication.run을 할경우에는 Environment 구현체는 ApplicationServletEnvironment가 빈으로 등록이 되고, @ContextConfiguration로 테스트를 할경우에는 Environment 구현체는 StandardEnvironment 구현체가 빈으로 등록되는걸 확인했습니다. 그래서 Enviroment 구현체가 등록이 되면 application.properties를 가져올수있지 않나? 라는 생각에 해당 구현체를 찾아보니 StandardEnvironment 는 propertySource를 받지 않는걸 확인했습니다. 제가 궁금한건 1.같은 구성 정보 클래스를 넘겨주고 빈으로 등록을 했는데 구현체가 달라지는지 궁금합니다. 2.스프링부트에서 테스트를 하는데 @TestPropertySource를 따로 명시적으로 메타어노테이션으로 선언해서 사용하는 이유가 궁금합니다.

  • spring
  • spring-boot
  • spring-jdbc
cjh 댓글 1 좋아요 0 조회수 834

@MyAutoConfiguration 에서 궁금한게 있습니다.

해결됨

토비의 스프링 부트 - 이해와 원리

강사님께서 JdbcTemplate 과 JdbcTransactionManager는 따로 클래스를 만들고 적용하는 순서를 지정해야하는게 스프링 부트에는 있다고 하셨고 정석은 각각 다른 클래스로 만들고 적용하는 순서를 지정하는게 필요하다 이렇게 말씀해주셨는데 1.정석 방법을 찾아보고싶은데 어떻게 검색을 해야할까요? 그리고 편의 상 하나의 구성 정보에 넣으셨는데 2.하나의 구성정보하는게 더 간편한데 스프링은 정석인 방법 클래스를 나누어서 순서를 정해놓은 이유가 궁금합니다.

  • spring
  • spring-boot
  • spring-jdbc
cjh 댓글 1 좋아요 0 조회수 569

메타어노테이션을 파악하는 주체가 디스패처 서블릿 -> 에 대한 질문이 있습니다!

해결됨

토비의 스프링 부트 - 이해와 원리

안녕하세요 토비님!! @Component 스캔 강의 마지막 즈음에 1. @RestController는 내부에 @ResponseBody를 메타어노테이션으로 가지고 있기에 디스패처 서블릿 이 컨트롤러에 @ResponseBody가 붙어있는 것으로 인지할 수 있고 2. 더 나아가 @RestController와 @Controller가 클래스 레벨에 붙게 되면 @RequestMapping을 삭제할 수 있기 때문에 디스패처 서블릿 이 내부적으로 매핑 정보가 있음을 인식한다고 말씀하셨습니다!! 이전에 자바 웹 프로그래밍 Next Step 책으로 공부를 했을때 디스패처 서블릿 은 내부적으로 핸들러에 대한 매핑 을 가지고 있고 핸들러 매핑 구현체는 ApplicationContext 를 통해 @Controller 어노테이션이 붙어있는 클래스를 요청하여 받아와 사용하기 편리한 형태의 오브젝트로 만들어 보관하는것으로 알고 있습니다! 만약 책에서 공부했던 내용과 실제 Spring MVC 구조가 동일하다면, 위와 같은 상황 때문에 디스패처 서블릿이 내부적으로 매핑 정보가 있음을 인식한다고 말씀하신것인지 확인차 질문드립니다!! 그리고 1번의 경우를 실제 코드레벨로 보고 싶어서 찾아보고 있는데 어떤 코드를 봐야할지 모르겠습니다.. 혹시 약간의 힌트를 주실 수 있을까요?

  • spring
  • spring-boot
  • spring-jdbc
이호석 댓글 1 좋아요 1 조회수 736

강사님 테스트 코드에 사용하신 클래스들은 어디서 알게되신건가요..?

해결됨

토비의 스프링 부트 - 이해와 원리

스프링 부트 공부하다가 왜 이렇게 되는지 찾아봐도 제대로 설명해주는 곳이 없어서 아쉬웟는데 강의를 들으면서 정말 만족하면서 듣고 있습니다. 테스트 코드에 사용하는 클래스나, 매서드들은 배우는 입장에서는 강사님께서 알고계신 정보를 주입해주는 방법말고는 스프링 지식이 부족해서 알기가 어렵더라구요 강사님이 강의 진행을 하시면서 사용하시는 테스트 코드나 매서드들의 정보는 스프링 doc나 어디를 가야 공식문서처럼 볼수있는 곳이 있을까요? 스스로 필요한 테스트 클래스나 매서드들 찾아서 공부해보고 싶어서 문의를 남겨봅니다,

  • spring
  • spring-boot
  • spring-jdbc
cjh 댓글 1 좋아요 1 조회수 662

join과 join fetch 의 차이 ..

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

OrderQueryRepository 에 findAllByDto_flat 보면 다 join 으로 되어있는데 join과 join fetch (페치 조인)의 차이점은 뭔가요 ..? join도 lazy 로 되어있는거 한번에 끌고오는 건 비슷한 거 같은데 .. ㅜ

  • java
  • spring
  • spring-boot
  • jpa
김김 댓글 1 좋아요 0 조회수 657

강의 초반에 나오는 코드에서 에러가 납니다.

미해결

토비의 스프링 부트 - 이해와 원리

0:05초 부분에서 applicationContext를 익명클래스가 아닌 람다 표현식으로 바뀌어져있는데, 이 부분을 그대로 따라 쳤는데, 에러가 납니다. public static void main(String[] args) { AnnotationConfigWebApplicationContext applicationContext = onRefresh() -> { super.onRefresh(); ServletWebServerFactory serverFactory = this.getBean(ServletWebServerFactory.class); DispatcherServlet dispatcherServlet = this.getBean(DispatcherServlet.class); WebServer webServer = serverFactory.getWebServer(servletContext -> { servletContext.addServlet("dispatcherServlet", dispatcherServlet) .addMapping("/*"); }); webServer.start(); }; applicationContext.register(HellobootApplication.class); // 구성정보가 있는 클래스 등록 applicationContext.refresh(); } } onRefresh() -> { ... } 이 부분이 이해가 잘 되지 않는데, 어느 부분이 잘못된 건가요? AnnotationConfigWebApplicationContext applicationContext = onRefresh() -> { super.onRefresh();

  • spring
  • spring-boot
  • spring-jdbc
댓글 1 좋아요 1 조회수 560

9분 05초 author이랑 isbn

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

author이랑 isbn이 null로 나와있는데 싱글테이블에서 Album이랑 Movie에 관련된 컬럼은 안나오고 딱 Book이랑만 관련된 author이랑 isbn 만 null로 표시됐는데 이건 JPA가 Book인 걸 알아서 그것만 표시해주는건가요 ?? 어떻게 author이랑 isbn만 표시해주게 되는건지 궁금합니다 ..

  • java
  • spring
  • spring-boot
  • jpa
김김 댓글 2 좋아요 0 조회수 531

수강 범위에 대한 질문입니다 ㅠㅠㅠ

미해결

나도코딩의 자바 기본편 - 풀코스 (20시간)

안녕하세요 나도코딩님 오늘도 열심히 공부중인 학생입니다 ㅠㅠㅠ 복수전공 과목 중 자바로 배우는 자료구조를 수강중인데 사전에 자바 공부도 없이 듣는 수업이라 도통 무슨 소린지 이해가 가질 않네요.. 그래서 현재 고급편 결제하고 섹션9 추상클래스 까지 들은 상태인데 뒤로 갈수록 내용이 어려워져서 복습한다고 속도가 너무 늦어지는 상태에요.. 자료구조 내용을 이해하려면 일단 어떤 파트를 필수적으로 빨리 들어야 하고 어떤 파트는 빼도 되는지 알려주실 수 있을까요??ㅜ 답변 주시는데 도움이 될 지 모르겠지만 교재 한 챕터에 {자바 데이터 타입(기본타입, 참조타입), 제어문(조건문,반복문), 메소드(호출문,메인), try문} 이렇게만 존재하긴 하는데 중간중간 책에는 없는 추상클래스, 입력문 같은 파트도 보여서 감이 안잡히네요..

  • java
  • 객체지향
댓글 1 좋아요 1 조회수 411

인터페이스 변수

미해결

나도코딩의 자바 기본편 - 풀코스 (20시간)

안녕하세요~ 강사님, 인터페이스(후반전) 강의를 듣고 있는데, 왜 인터페이스 변수를 만드는지 이해가 가지 않습니다. 수업 내용에서 FactoryCam이 인터페이스 Detectable과 Reportable을 구현하여 인터페이스에 있는 메소드를 FacstoryCam에서 구현해야한다는 것은 이해했습니다. 그리고 다른 클래스의 detect 메소드와 report 메소드를 호출하는것이라서 public void detect(){detecter.detect();} 이고, detecter은 객체이잖아요. 여기서 막힙니다. 이 객체랑 인터페이스 변수랑 무슨 상관인지? FactoryCam 의 인터페이스 변수를 생성해서 변수에 값 저장하는 걸로 하면 되지 않는지? 왜 인터페이스 변수를 선언해서 거기다가 값을 저장하는지, 잘 이해가 안 됩니다.... ㅠㅠ 그리고 추가로, 인터페이스로 다중 상속이 가능하다고 하셨는데, 수업 내용 중 어떤 것이 다중 상속이 되고 있는지 파악하기가 어렵습니다. 혹시, 다른 클래스의 메소드를 호출할 수 있는 부분때문에 다중 상속이 가능한 것인가요? 후반부로 갈수록 어렵네요 ㅠㅠ

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

스프링 입문에 대하여 질문드립니다

해결됨

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하십니까, 자주하는 질문 에서 학습방법을 봤는데 코드를 쭉 따라하는식 방법이 적혀있었는데, 이렇게 따라만 해도 공부가 되는게 맞을까 혹시나 하는 마음에 따로 질문을 올리게 되었습니다. 따로 국비학원 수료 없이 학교 졸업하자마자 취업했는데 백엔드 스프링을 사용한다해서 선생님 강의 커리큘럼을 따라갈려고합니다. 스프링을 배우는데 자바 기본 지식이 필요하다해서 자바의 정석 유튜브를 먼저 보고, 부족하지만 최대한 자바 기본 문법개념 같은걸 숙지한 상태에서 선생님 영상 시청하고있습니다. 선생님의 이론수업이 정말로 재밌고 스프링 입문하는데 좋은걸 알겠는데 이론설명뒤에 선생님이 치시는 코드가 무엇을 의미 해석이 안되고, 코드형식(?) 코드 구조 (문법?) 이게 정말 와닿지 않는 상태이다보니 ,영상을 보고 타이핑하니깐 공부 하는 느낌이 안들어서 걱정이 됩니다. 프로그래밍 능력, 자바기초실력이 부족해서 이런 느낌을 받는 거 같은데 회사 실무에 도움이 될까 걱정이 됩니다.처음 취직한 회사라서 최대한 적응하고 회사에 도움이 되는 개발자가 되어보고싶은데 어떠한 방식으로 공부를 해야할 지 조언이 가능할까요? (혹시 책이나 강의같은걸 추천해주시면 감사하겠습니다.)

  • java
  • spring
  • mvc
  • spring-boot
신입코딩 댓글 1 좋아요 2 조회수 1259

@Service 싱글톤

해결됨

토비의 스프링 부트 - 이해와 원리

안녕하세요. 좋은 강의를 듣다가 궁금한게 있어서 질문을 올립니다. @Configuration + @Bean을 사용하면 싱글톤 보장이 되고 @Component + @Bean을 사용하면 new XX 같이 동작을 하여 싱글톤 보장이 안되는걸로 아는데 @Service는 @Component 밖에 없는데 어떻게 싱글톤이 보장이 되나요? 물론 @Configuration도 @Component가 있는데 프록시 생성이 되면서 싱글톤 보장된다는 강의 내용을 잘봤습니다. 그것과 똑같이 @Service도 추가로 동작하는게 있을까요?

  • spring
  • spring-boot
  • spring-jdbc
redPanda 댓글 1 좋아요 0 조회수 1137

4-F 시간복잡도 O(2^26) 이면 풀려야 하는 것 아닌가요? ㅠㅠ

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

자바가 느려서인지, 아니면 제가 첨부터 접근을 잘못한건지 모르겠습니다. ㅠㅠ package lecture4; import java.util.*; public class Prob1062 { static List<Set<Character>> sets = new ArrayList<>(); public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); if(k<5){ System.out.println(0); return; }else if (k==26){ System.out.println(n); return; } List<String> list = new ArrayList<>(); for (int i = 0; i < n; i++) { // 문자열 입력 받기 String str = sc.next(); list.add(str); Set<Character> set = new HashSet<>(); // 각 문자열의 문자들을 Set에 저장. for (char c : str.toCharArray()) { set.add(c); } sets.add(set); } List<Set<Character>> filtered = new ArrayList<>(); for (int i = 0; i < n; i++) { // K 보다 많은 알파벳으로 이루어진 경우 제외 if(sets.get(i).size()<=k){ filtered.add(sets.get(i)); } } List<Integer> masks = new ArrayList<>(); for (Set<Character> set : filtered) { // Set의 각 알파벳을 대응되는 비트마스크로 표현 masks.add(setToMask(set)); } int mask = 1; int max = 0; while (mask < (1<<26)-1){ // 모든 경우의 수 탐색 if(Integer.bitCount(mask)>k){ // 비트마스크의 1 개수가 k 보다 크면 다음 경우로 넘어가기 mask++; continue; } int count = 0; for (Integer m : masks) { // 문자열을 비트마스크로 표현한 것을 비교해서 읽을 수 있는건지 개수 샘 if((mask & m) == m){ count++; } } max = Math.max(max,count); // 최대값 저장 mask++; } System.out.println(max); } private static int setToMask(Set<Character> set){ int[] num = new int[26]; for (Character character : set) { num[25 - (character-'a')] = 1; } StringBuffer sb = new StringBuffer(); for (int i : num) { sb.append(i); } return Integer.parseInt(sb.toString(),2); } }

  • c++
  • 코딩-테스트
  • java
댓글 1 좋아요 0 조회수 3090

인기 태그

인프런 TOP Writers

주간 인기글