묻고 답해요
138만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
테스트 메서드 마다 Environment variables 설정이 불편...
강의시나리오 대로 진행하다보니 살짝 불편한 부분이 있어서..(어쩜 중간에 코멘트가 있었는데 놓친것일 수도..)서비스 설정 중 메일발송 설정 정보를 실행속성으로 구성하는데테스트도 동일하게 구성하다보니(test-application.properties )Intellij >Edit Configurations > JUnit 실행인스턴스 별 Environment variables 를 설정해줘야 실행이 되는듯 합니다. 테스트 메서드를 만들때마다 실행인스턴스를 설정해야하는게 불편해서 그냥 메일발송 설정을 test-application.properties 에 하드코딩하고 진행해봅니다.(혹시.. 다른 더 스마트한 방법이 있을까? Intellij ? spring?) [확인1]'테스트 추가하기: h2를 이용한 repository 테스트' 강의 1:16초를 보면 git에서 받은 application.properties 파일과 강의의 소스가 다른것 으로 보입니다. Environment variables 에서 설정한 속성이 없어서 해당 강의에서는 불편함 없이 진행된 것 으로 이해했습니다. [확인2] 그런데'토이 프로젝트 살펴보기' 강의 7:42 에 확인되는 설정정보는 git 소스와 동일하것으로 확인됩니다. 강의를 훑어볼때는 그냥 넘어갔는데, 따라하며 보니 눈에 밟히는게 좀 있네요. 제가 놓친부분이라면 양해 바라며, 시나리오 상 연결부분이 필요한 내용이면 코멘트 부탁드립니다. 저와 같이 길잃은 양들을 살펴주소서~[git 설정파일]
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티가 복잡할때, 테스트만을 위한 간단한 생성자를 만들어도 될까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]토이프로젝트 진행중 궁금한점이 생겼습니다.핵심 엔티티에 정적 팩토리 메서드로 생성방법을 만들었는데,여러가지 연관관계와 필드값들이 많이 포함되어 있습니다. 리포지토리를 테스트하려고 하니,엔티티 생성에 너무 많은 코드들이 사용되어서,테스트만을 위한 필수 필드값만 포함된 생성자나 메서드를만드는 것이 올바른 방법인지 궁금증이 생겼습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
운영서버에 index 설정하는 방법
섹션 4 : 실전 예제 1 - 요구사항 분석과 기본 매핑위 강의 19:30 부분에서실무에서는 @Table 에 index 를 모두 명시하는 것이 바람직하다고 말씀하셨는데,@Table 에 명시한 index 가 실제 DB 에 적용되려면, ddl-auto=update 이어야 하지 않나요?그런데, 운영 서버에는 ddl-auto=update 를 사용하지 말라고 하셨는데, 그렇다면 운영중인 서버에 index 를 넣을 때는 어떤 방법으로 하는지 궁금합니다.MySQL 클라이언트로 접속해서 직접 매뉴얼로 index 설정하는지요?만약 그럴 경우, Entity 클래스의 설정과 실제 DB 의 설정이 따로 놀게 되는데, 괜찮은 건지 궁금합니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA 엔티티에 @Builder 적용하는 방법 질문있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]이 코드에서 생성메서드를 @Builder 를 사용한 생성자로 교체하고 싶습니다. 유연한 생성을 통해 테스트 하기 편한 객체 생성을 위해서 더 좋다고 생각했기 때문입니다. 그런데 @Builder 생성자를 사용할때, 연관관계 편의 메서드를 어떻게 활용해야 할지 고민입니다. 다른 사람들의 코드를 보니, @Builder 생성자에서 @OneToMany 의 양방향 필드는 초기화 하지 않는 경우를 봤는데, 그러면 연관관계를 어떻게 설정하고, 또 왜 연관관계 편의 메서드를 초기화시에 사용하지 않는지 궁금합니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
테스트할 때 Auditing 없이 원하는 날짜를 설정할 수 잇을까요?
공부삼아서 과제 프로젝트에 테스트를 도입하다가 궁금한 게 잇어서 질문드립니다. 거래내역 조회를 구현할 때 2024-05-30 같은 거래가 발생할 날짜는 auditing, @CreatedAt 통해 저장된 createdAt에서 가져오도록 구현했습니다. (디자인과 달리, 최근 거래일수록 위로 오도록 변경되었습니다) 구현이 끝난 뒤, 테스트할 때 createAt을 임의로 변경하기 위해 BaseEntity의 private를 protected, 그리고 createdAt을 변경하는 메서드를 추가햇습니다. (이게 맞는 접근인지는 잘 모르겟네요... 할 때에도 이렇게 해도 되나? 라는 의문이 계속 들엇습니다...)@DisplayName("유저의 계좌 내역을 불러올 수 있다.") @Test void getUserStatements() { // given (6/5 18:00) LocalDateTime now = LocalDateTime.of(2024, 6, 5, 18, 0, 0); User u1 = User.of("test1", "id1", "pw"); User u2 = User.of("test2", "id2", "pw"); List<User> users = userRepository.saveAll(List.of(u1, u2)); User loginUser = users.get(0); User notLoginUser = users.get(1); Account a1 = Account.of("111-222-3333", 1000, loginUser); Account a2 = Account.of("111-222-3334", 2000, notLoginUser); List<Account> accounts = accountRepository.saveAll(List.of(a1, a2)); Account loginUserAccount = accounts.get(0); Account notLoginUserAccount = accounts.get(1); // 자신 계좌로 입금 (조회 대상), 6/5 발생 Statement s1 = createStatementForTest(loginUserAccount, loginUserAccount, 100, DEPOSIT); // 자신 계좌에서 출금 (조회 대상), 6/6 발생 Statement s2 = createStatementForTest(loginUserAccount, loginUserAccount, 200, WITHDRAW); // 자신 계좌에서 타 계좌로 이체 (조회 대상), 6/7 발생 Statement s3 = createStatementForTest(loginUserAccount, notLoginUserAccount, 300, TRANSFER); // 타 계좌에서 자신 계좌로 이체 (조회 대상), 6/8 발생 Statement s4 = createStatementForTest(notLoginUserAccount, loginUserAccount, 400, TRANSFER); // 타 계좌에서 타 계좌로 출금 (조회 대상 X), 6/9 발생 Statement s5 = createStatementForTest(notLoginUserAccount, notLoginUserAccount, 50000, WITHDRAW); statementRepository.saveAll(List.of(s1, s2, s3, s4, s5)); // when StatementResponse userStatement = statementService.getUserStatements(loginUser); // then assertThat(userStatement.getStatementInfos()).as("거래 이력을 조회할 수 있다.").hasSize(4) .extracting("amount", "type") .containsExactly( tuple(400, "이체"), tuple(-300, "이체"), tuple(-200, "출금"), tuple(100, "입금") ); assertThat(userStatement.getBalance()).as("계좌 잔액을 조회할 수 있다.").isEqualTo(1000); }(위 테스트 코드는 시간 설정 및 검증 코드를 제거한 테스트입니다.) 위 메서드와 plusDays() 통해 시간 설정 후, extracting에 "date" (createdAt에 yyyy-MM-dd를 적용시켜 String 형태로 저장) 를 추가해서 확인했을 때에는 의도한 대로 2024-06-08, 2024-06-07, 2024-06-06, 2024-06-05가 아닌, 전부 테스트를 실행한 시간으로(2024-06-05) 나오는 걸 확인했습니다. 일단은 date를 검증하는 로직을 빼고 테스트를 통과시켰고, postman에서 입금/출금/이체 등 실시 후 조회했을 때에도 의도한 대로 최근 거래가 위로 오도록, 날짜 형식도 의도한 대로 나온 것도 볼 수 있었습니다. 하지만 이 date를 postman이 아닌, auditing 없이 임의로 날짜를 설정한 후 테스트해 확인해보고 싶은데, 이 경우에는 어떻게 하면 될까요? auditing 잇는 상태로도 가능하다면 알려주시면 감사하겟습니다! 아래는 BaseEntity와 거래 내역을 저장하는 Statement Entity 코드입니다@Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public abstract class BaseEntity{ @CreatedDate private LocalDateTime createdDate; }import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import java.time.LocalDate; import java.time.LocalDateTime; import static jakarta.persistence.EnumType.*; @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Statement extends BaseEntity{ @Id @GeneratedValue(strategy= GenerationType.IDENTITY) private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name="from_account") private Account from; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name="to_account") private Account to; private int amount; @Enumerated(STRING) private TransactionType type; @Builder private Statement(Account from, Account to, int amount, transactionType type) { this.from = from; this.to = to; this.amount = amount; this.type = type; } public static Statement of(Account from, Account to, int amount, transactionType type){ return Statement.builder() .from(from) .to(to) .amount(amount) .type(type) .build(); } } 긴 글 읽어주셔서 감사합니다~
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
postgreSql 연결하여 JPA 를 통해 테이블 생성시 ZONE 테이블 생성에서 에러가 납니다
2024-06-05 08:17:10.986 WARN 86324 --- [ main] o.h.t.s.i.ExceptionHandlerLoggedImpl : GenerationTarget encountered exception accepting command : Error executing DDL " create table zone ( id int8 not null, city varchar(255) not null, local_name_of_city varchar(255) not null, province varchar(255), primary key (id) )" via JDBC Statementorg.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table zone ( id int8 not null, city varchar(255) not null, local_name_of_city varchar(255) not null, province varchar(255), primary key (id) )" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:458) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:442) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:325) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:169) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:138) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:124) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:168) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:85) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:335) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.23.jar:5.3.23] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.23.jar:5.3.23] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.23.jar:5.3.23] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.23.jar:5.3.23] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.23.jar:5.3.23] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[spring-context-5.3.23.jar:5.3.23] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) ~[spring-context-5.3.23.jar:5.3.23] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.23.jar:5.3.23] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.4.jar:2.7.4] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) ~[spring-boot-2.7.4.jar:2.7.4] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.4.jar:2.7.4] at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-2.7.4.jar:2.7.4] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.7.4.jar:2.7.4] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-2.7.4.jar:2.7.4] at com.studyolle.App.main(App.java:10) ~[main/:na]Caused by: org.postgresql.util.PSQLException: ERROR: permission denied for schema public Position: 19 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2675) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2365) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:355) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:490) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:408) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:329) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:315) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:291) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:286) ~[postgresql-42.3.7.jar:42.3.7] at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) ~[HikariCP-4.0.3.jar:na] at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[HikariCP-4.0.3.jar:na] at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] ... 34 common frames omittedHibernate:
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
다중 스키마 JPA 해결 방법
log 데이터베이스가 log_연_월로 매월 스키마를 자동 생성하여 로그를 기록 및 보관하고 있습니다. (ex) 2024.03월 >> log_2024_03(db) >> application_log(table), system_log(table), 등등... 2024.04월 >> log_2024_04(db) >> 테이블 구조는 동일 (새로운 연.월이 오면 자동으로 생성) ....위에 대한 데이터베이스 구조에서 3월과 4월의 system_log 내용을 조회하고 싶다면?(조회하고 싶은 날짜는 사용자의 조건에 따라 달라질 수 있음.)mybatis에서 mapper.xml 에 쿼리를 직접 작성하여 해결 가능하지만,jpa로는 위와 같은 문제를 어떤식으로 해결할 수 있는지 조언 부탁 드립니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
RouteLocator class not found 해결법
dependencies에서implementation 'org.springframework.cloud:spring-cloud-starter-gateway-mvc' 부분을 implementation 'org.springframework.cloud:spring-cloud-starter-gateway'으로 바꾸시면 해결됩니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
BlindingResult Validate 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]회원등록 강의 18분 쯤에서 강사님께서 설명 주시는사이트에서 입력칸에 공백 발생시return "members/createMemberForm";으로 다시 되돌려보내면서 오류화면으로 넘어가지 않으며 입력값은 그대로 유지 하되, 사용자에게"OO 입력은 필수 입니다."라고 글자가 나타나게끔 설계를 해주셨습니다.그런데 createMemberForm.html 파일을 보니그 "~은 필수입니다."하는 문장은 찾아보기가 어려워서어떤 코드에서 이 기능이 작동해서 "~은 필수입니다." 의 문장이 완성되고 출력이 되는지 궁금합니다.name값?을 줄 때 '이름'이라고 준 것 같은데 사이트에서는 어떻게 '회원 이름'이라고 출력이 되나요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
비대칭 암호화를 사용하는 이유
강의 내용에서는 통합된 키로 암호화와 복호화를 하고 있어, 사실상 대칭 키와 같은 방법이라고 느껴집니다. 강의 내용에서는 비대칭 암호화의 필요성을 못느끼는데 스프링 클라우드 컨피그서버에서 비대칭 암호화에 대한 필요성과 사용하는 이유는 무엇인가요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
REST API 방식 강좌
이 강좌말고 또 다루는 강좌있나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
영상 화면이랑 UI가 조금 다릅니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요영상에서 나오는 UI랑제 화면에서 띄운 UI랑 틀이 조금 달라보여서 질문 드립니다.문제 없는 건가요?왜 다르게 구현이 되었는지 이유가 있을까요?코드 문제 일까요?
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
CertificationService의 테스트에서 FakerMailSender를 이용하는 부분에서 질문이 있습니다.
해당 방식은 FakerMailSender에 결국 테스트 의존성이생기게 된다고 생각하는데요.현재 코드는 단순해서 개발자가 테스트 코드 수정시 확인할 부분이 없지만, 추후 객체의 구조가 변경되거나, 규칙이 추가 - 변경된다면 모든 테스트 코드의 요구사항에 맞도록 Faker객체의 구현 내용도 함께 변경되어야 할것같습니다. 하지만 항상 모든 테스트의 요구사항을 알기는 쉽지만은 않을것같은데요.이러한 불편함을 극복하기 위한 방법이 있을까요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
mappedBy 사용 필드를 List<T> 타입으로 저장하는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Team 객체 내에 있는 member 객체를 List<Member> 형태로 저장하는 이유가 무엇인가요?@OneToMany(mappedBy = "team") private List<Member> members = new ArrayList<>();역방향 객체에서 값을 세팅해줄 때team.getMembers().add(member); 형태로 세팅하는데 연관 관계의 주인이 하는 것처럼 객체를 세팅할 수는 없을까요?team.setMembers(member);
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
5강 중, 생성자 class 만들어 진행하면 parameter 인식이 안됩니다.
[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.] with root cause계속 위와 같은 에러가 떠서gpt랑 구글링을 하니까 생성자 클래스에 @ConstructorProperties({"number1", "number2"}) 어노테이션을 추가하라고 해서 추가했더니 값이 출력되는데 이 어노테이션을 작성하는게 맞나요?또 다른 글에는 java compiler를 수정하라고 하는데 맞는지 궁금합니다 !저는 sts4로 진행중입니다 !
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
수동 빈 등록과 자동 빈 등록 질문
[질문 내용] 강의에서는 이렇게 수동 빈 등록으로 서비스와 레포지토리를 등록했는데 이렇게 자동 빈 등록을 하면 위와 같이 수동 빈 등록했던 인터페이스들을 모두 그냥 @Component 처리 해버리면 굳이 config 클래스를 만들지 않고도 알아서 빈 등록 및 인터페이스와 구현체 연결이 되는게 맞나요? 맞다면 번거롭게 config클래스를 만들면서 수동 빈 등록을 하는 이유가 궁금해요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Assertions.assertEquals의 첫 칸 String 내용
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요.assertEquals 첫 칸에 들어가는 "" message 내용은 어디에 출력되는 메시지 내용 인가요?밑에 실행 결과창에서 Ctrl + F로 찾아봐도 안 나오는데 단순히 주석의 역할을 하는 메시지로 적는 것 인가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품주문() 테스트 내용 질문 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요.book.setPrice(10000) 에서 궁금증이 생겼는데요,int bookPrice = 10000; 처럼 변수를 만들어서book.setPrice(bookPrice)를 하면밑에 assertEquals에서expected 값에 10000 * orderCount가 아닌expected : bookPrice * orderCount로 할 수 있지 않나요?왜 Price값만 10000로 해서 직접 기입하는 방법을 사용하신건가요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
db에 HelloA member 저장 안되는 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 12:45 에 작성되어있는 코드 오류 발생합니다..WARN: HHH90000025: H2Dialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)INFO: HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) hibernate 문제인 것 같은데 어떻게 해결할 수 있을까요? 전체 에러 코드입니다.h2 db에 값이 저장도 안되고 옵션 값 true로 설정되어있는데 sql문도 표시가 안됩니다.<property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/>
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일대일 정리 하단의 일부 글자들이 가려져 있습니다.
동영상 18:22 위치일대일 정리 하단의 글자들이 가려져서 일부분 보이지 않습니다. 가려진 부분들을 확인할 수 있을까요?