묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의를 보고 연관관계 매핑을 하는데 모르겠습니다...
무신사와 비슷하게 만들고 있는데하나의 옷은 여러개의 카테고리를 가질 수 있잖아요Ex) [상품] 버버리코트 - [카테고리]상의, 코트, 겨울 등등..그런데 하나의 카테고리 또한 여러개의 상품에 등록되는 거 같아요Ex) [상품]아디다스 저지, 빨간색니트, 반팔티 - [카테고리]상의 이래서 N-M으로 연관관계 매핑이 되는 줄 알고 중간테이블로 둬서1:N , N:1로 만들었습니다.그런데 아이템을 넣고 확인해보니 중간테이블과 카테고리의 아이디가 동일하게 올라갈 수 밖에 없는 로직으로 구성되어 있습니다. 왜냐하면 옷 하나를 등록할 때 보통 많은 카테고리를 넣기 때문입니다.Item item = ItemRegisterDto.Request.toItemEntity(itemRegisterDto, findMember); itemRepository.save(item); Set<String> categoryNames = itemRegisterDto.getCategoryNames(); for (String categoryName : categoryNames) { Category category = ItemRegisterDto.Request.toCategoryEntity(categoryName); category.addItemCategories(item, category); categoryRepository.save(category); }public void addItemCategories(Item item, Category category) { this.itemCategories = new ArrayList<>(); this.itemCategories.add(ItemCategory.builder() .category(category) .item(item) .build()); }중간테이블과 카테고리의 아이디가 동일하게 올라가므로굳이 중간테이블을 쓰지 않고 옷과 카테고리를 1:N 양방향 매핑으로 연관관계를 만들면 될 거 같다고 생각했습니다.만약, 옷과 카테고리를 1:N 양방향 매핑이 맞다면 하나의 옷은 여러개의 카테고리를 가질 수 있고 하나의 카테고리 또한 여러개의 옷을 가질 수 있는데 다대다관계가 아닌 이유도 궁금합니다.마지막으로 어떻게 생각해야 연관관계 매핑에 있어서 잘 지을 수 있을까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
수업과는 조금 다른 실무 id취향 질문이 있습니다!
안녕하세요, 테이블 생성중에 id관련된 내용을 보다가 궁금한게 생겨 질문 남깁니다! 개발자에 따라서 유한한 bigint로 이루어진 고유 id를 극혐하고 이론상 거의 무한한 uuid를 사용해야한다 주장하시는 분들이 꽤나 많던데, 태현님께서는 어떻게 생각하시나요? 저는 개인적으로 실무에서도 uuid대신 bigint로 이루어진 id를 사용중에 있고, 유저에게 노출이 필요한 유저 고유번호만 내부에서 사용하는 id값 이외에 uuid칼럼을 따로 만들어서 관리하거든요 🤔🤔만약에 uuid를 사용한다면 조회의 성능이랑.. auto_increment를 사용할 수 없으니 매 번 insert문마다 서비스로직에서 uuid를 만들어서 넘겨야 하는것에 대해서도 그래야만 하는지 좀 의문이 있기도 하구요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JPA, DB 연동 관련 오류 질문
안녕하세요 영한님 JPA 활용1 강의의 JPA와 DB 설정, 동작확인 파트를 실습하다가 오류가 생겨 질문남겨요3시간 동안 검색해도 해결하지 못했어요.. MemberRepository 테스트 시 아래와 같은 오류가 발생해 해결하고자 합니다. 아마 application.yml 쪽 문제 같은데 강의와 똑같이 따라했는데도 불구하고 오류가 발생하네요..H2는 확실히 켜고 테스트 시도했습니다. 아래는 강의를 보며 따라한 프로젝트입니다.https://drive.google.com/file/d/1BvWBkoHE0fjdIFABmGeiOMDLuG-pKdwP/view?usp=sharing
-
미해결Practical Testing: 실용적인 테스트 가이드
readOnly = true 시 jpa 동작관련
readOnly = true시에는 jpa 에서는 단순 cud 는 동작하지만,변경감지는 안된다는 말씀이신가요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
gradle 관리 방법에대한 의견이 궁금해 문의남깁니다!
안녕하세요!코프링 대신에 자프링부터 들렀습니다 ㅎㅎ 기존에 maven만 사용해봐서 신규 플젝도 maven으로 생성했는데.. gradle을 이참에 배워보려고 합니다!! gradle이 groovy랑 kotlin 2가지 언어로 나뉜 것 같은데 영상에서 그루비를 선택하신 이유가 있을까요?혹시 기존 프로젝트도 그루비를 사용하시는거라면 이유가 궁금합니다! 많은 부분을 사용하는건 아니더라도 추후 코프링을 사용한다면 그레이들또한 코틀린으로 관리하는게 더 편하지 않을까 싶어서요!
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
@Autowired를 할 때 이 두 가지 방식의 차이
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]@Autowired PlatformTransactionManager transactionManager; TransactionStatus status;이 코드와@Autowired PlatformTransactionManager transactionManager; @Autowired TransactionStatus status;이 코드는 다르게 동작하나요? 제가 실수로 두 번째 코드로 썼다가 오류가 났었는데 첫 번째 코드로 하니 정상 동작이 되었습니다.+)아 잠시 헷갈렸습니다..
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
섹션 3 부트 프로젝트 생성 및 확인 / 엔티티 클래스 만들기 강의가 재생되지 않습니다.
섹션 3 부트 프로젝트 생성 및 확인 / 엔티티 클래스 만들기 강의가 재생되지 않습니다.크롬으로 보던 중 무한로딩이 떠서 시크릿모드 및 다른 브라우저로 시도해봤지만 여전히 재생되지 않습니다.다른 영상은 잘 재생되는데, 섹션 3 부트 프로젝트 생성 및 확인 / 엔티티 클래스 만들기 강의만 재생되지 않네요. 확인 한 번 부탁드립니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
h2데이터베이스에 변경사항이 반영이 안됩니다.
쿼리문이 다음과 같이 날라가는데도 h2데이터 베이스에 변경사항이 반영되지 않습니다 ㅠㅠ 어떤 문제가 있는 걸까요
-
미해결Practical Testing: 실용적인 테스트 가이드
자바 익셉션 종류도 외우시나요??
안녕하세요.강의를 수강하다가 문득 의문이 들었는데, 테스트 코드를 작성하실때 어떤 exception을 던질지도 다 알고 계신것 같더라구요! 예를들어, 아메리카노를 0개 주문할때는 IllegalArgumentException을 던진다거나요.... 혹시 이런 익셉션의 종류들도 전부 시간을 들여 외워야 할까요??? 아니면 자연스레 체득되길 기다릴까요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
h2 데이터 베이스 버전 오류
지금 현재 2가지 문제가 있는데 해결할 수있을까요?해결방법을 알고 싶습니다 ㅠㅠ
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
트레이드오프시 DI, OCP를 지킨다는말
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]JPA 사용시 중간계층으로 JpaItemRepositovy 를 거쳐서 SpringDataJpaItem의 인터페이스를 구현함으로써 구조가 복잡해지기때문에 중간단계인 JpaItemRepositovy 없이 직접 SpringDataJpaItem를 주입해줌으로써 좀더 간단한 구조가 된다고설명해주셨는데, 단점으로는 DI 와 OCP를 지키지 못한다라고 하셨는데 아래 스크린샷처럼 수업을 듣다가 헷갈려서 찾아봤습니다. DI 와 DIP의 차이를 알아보고 SOLID원칙을 지킨다라는건 DI를 어긴다보단 DIP를 어긴다가 맞는거 같아 이부분에 대한 설명을 DIP를 DI로 추상적으로 설명했다고 이해해야할까요? 정확히는 DIP를 지키기위해 DI를 넣는건데 SpringDataJpaItem를 주입한다고할때 솔직히 이것도 DI로 넣는것도 같고 DIP도 인터페이스(추상화)에 의존하기때문에 지킨거고 오히려 OCP만 어기는 구조가 아닌가해서요 정리하자면DI를 어긴다는말보단 DIP를 어긴다 라고해야되는게 맞는지해당 코드 트레이드오프 설명시 DIP는 지키되 OCP를 지키지 못하는게 아닌지
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
findByItemNameLikeAndPriceLessThanEqual 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]스프링 데이터 JPA 적용1 강의에서findByItemNameLikeAndPriceLessThanEqual 라는 쿼리메서드는'select i from Item where i.price<= ?' 라는 JPQL이 실행된다 라고했는데 'select i from Item i where i.itemName like :itemName and i.price <= :price'가 맞는거 아닌가해서요LikeAnd가 붙었는데 기존과 동일하다고 설명되어있길래 질문드려요
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
ItemMapper.xml 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]ItemMapper.xml에 <insert> 코드가 강사님 코드하고 한 자도 안 틀리고 똑같은데 테스트에서 sql syntax 에러가 나서 강사님 코드를 붙여넣었는데 테스트가 정상으로 작동했습니다. 이상해서 코드를 한 줄씩 Ctrl + C, V 해가면서 테스트가 제대로 작동하는지 확인했는데 그래도 계속 syntax 에러가 났습니다. 코드 전체를 복사하고 붙였더니 테스트가 정상 작동했구요. 이런 경우가 가끔식 있는지 이건 어떤 경우인지 궁금해서 질문 남깁니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
BeanPropertyRowMapper 관련해서 질문 있습니다.
안녕하세요. 모든 필드가 final인 클래스에 BeanPropertyRowMapper는 사용 못하는건가요?? 빈 생성자는 생성하지 못해서 각 필드의 기본값으로 초기화 해주는 생성자를 만들었는데모든 필드가 final이라서 값이 변경이 되지 않아서 그런지 기본값으로 나오더라고요 코드는 아래와 같이 작성했습니다 그냥 RowMapper를 직접 만들어서 사용하는게 최선일까요??
-
미해결Practical Testing: 실용적인 테스트 가이드
stock을 entity로 분류 하는 이유
안녕하세요 선생님!초심자인 저에게 코드가 어렵지만 그림 그려 가면서이해 하고 있습니다.내용을 이해 하던 중 도메인에 궁금한게 생겼습니다.선생님께서는 stock을 따로 entity로 분류 하셨습니다.그런데 저는 "상품에 재고가 있어도 되지 않나?"라는 생각이 들었는데따로 stock을 분류 하신 이유가 궁금합니다.product에 수량을 추가 한다면수량이 필요 없는 필드도 수량 필드를 가지게 되는데데이터가 많을 경우 db에 부담이 되기 때문 일까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
데이터베이스연동문제
해당 오류들이 나오면서 h2베이스에 연동이 되지 않습니다 ㅠㅠ 해결하는 방법이 있을까요?2024-11-01T15:11:48.474+09:00 ERROR 84212 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: Property 'jpabook.jpshop.domain.Delivery.status' is annotated '@Enumerated' but its type 'jpabook.jpshop.domain.DeliveryStatus' is not an enum2024-11-01T15:11:48.475+09:00 WARN 84212 --- [ restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Property 'jpabook.jpshop.domain.Delivery.status' is annotated '@Enumerated' but its type 'jpabook.jpshop.domain.DeliveryStatus' is not an enum2024-11-01T15:11:48.480+09:00 INFO 84212 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...2024-11-01T15:11:48.495+09:00 INFO 84212 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.2024-11-01T15:11:48.506+09:00 INFO 84212 --- [ restartedMain] o.apache.catalina.core.StandardService : Stopping service [Tomcat]2024-11-01T15:11:48.548+09:00 INFO 84212 --- [ restartedMain] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.2024-11-01T15:11:48.627+09:00 ERROR 84212 --- [ restartedMain] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Property 'jpabook.jpshop.domain.Delivery.status' is annotated '@Enumerated' but its type 'jpabook.jpshop.domain.DeliveryStatus' is not an enum at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1775) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1173) ~[spring-context-6.1.1.jar:6.1.1] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:936) ~[spring-context-6.1.1.jar:6.1.1] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) ~[spring-context-6.1.1.jar:6.1.1] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1342) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1331) ~[spring-boot-3.2.0.jar:3.2.0] at jpabook.jpshop.JpashopApplication.main(JpashopApplication.java:10) ~[main/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.2.0.jar:3.2.0]Caused by: org.hibernate.AnnotationException: Property 'jpabook.jpshop.domain.Delivery.status' is annotated '@Enumerated' but its type 'jpabook.jpshop.domain.DeliveryStatus' is not an enum at org.hibernate.boot.model.internal.BasicValueBinder.prepareBasicAttribute(BasicValueBinder.java:805) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.BasicValueBinder.setType(BasicValueBinder.java:374) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.makePropertyAndValue(PropertyBinder.java:261) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.makePropertyValueAndBind(PropertyBinder.java:297) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.createBasicBinder(PropertyBinder.java:1169) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.bindBasic(PropertyBinder.java:1071) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.bindProperty(PropertyBinder.java:890) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.buildProperty(PropertyBinder.java:788) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.processElementAnnotations(PropertyBinder.java:709) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.EntityBinder.processIdPropertiesIfNotAlready(EntityBinder.java:977) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.EntityBinder.handleIdentifier(EntityBinder.java:305) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.EntityBinder.bindEntityClass(EntityBinder.java:231) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.AnnotationBinder.bindClass(AnnotationBinder.java:422) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:255) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:278) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:321) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1432) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1503) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:376) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1822) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1771) ~[spring-beans-6.1.1.jar:6.1.1] ... 19 common frames omittedDisconnected from the target VM, address: '127.0.0.1:55744', transport: 'socket'Process finished with exit code 0
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
index.html
안녕하세요? 강의 잘 보고 있습니다.html 코드가 없어 커뮤니티에 와보니 없는게 맞는거군요.강사님과 같은 화면을 만드려면 직접 html 태그 넣어서 만듦강사님이 보내주는 코드를 넣음두가지 방법인거죠?
-
미해결Practical Testing: 실용적인 테스트 가이드
private 메서드를 public으로 바꾸면 어떤가요?
안녕하세요, 우빈님 강의 정말 잘 듣고 있습니다! 한가지 의문점이 드는 것은 private 메서드는 테스트를 하지 않고 그냐 유지하되, 필요 시에 따로 클래스를 분리하여 객체를 만드신다고 했는데요, 그냥 간편히 private 메서드를 public 메서드로 변환해서 내부 호출하는 방법은 별로 고려되지 않은 것 같은데 따로 이유가 있을까요? 혹시 createNextProductNumber()가 ProductService 클래스의 성격과는 맞지 않아서 분리하는 경우인지, createNextProductNumber()가 결국 다른 곳에서 사용 될 수 있이므로 별도의 파일로 관리하는지 궁금합니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
jpa에서 DAO나 Entity중에 뭘 사용해야하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]DAO나 DTO, VO, Entity등이 다 다른데 jpa에서는 어떤걸 사용하나요?아니면 모두 사용하는건가요? 그중에서도 사용하지 않는게 있을까요?
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
unique 작성법
@Table 애노테이션을 써서 unique 를 설정하셨는데,@Column(unique = true) 로 설정하는 방법을 사용하지 않으신 이유가 있나요??