inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

dialect 질문 있습니다.

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 우선 개발 버전은 JDK 17입니다. 강의에서 강사님이 h2를 이용하며 OracleDialect로 변경 후 정상적으로 동작이 되었는데 현재 저의 셋팅에서는 정상적으로 작동이 되지 않더라구요 H2 홈페이지를 검색 해본결과 Mode를 Oracle을 추가하면된다고 나와있었고 MODE를 Oracle로 변경하여도 오류가 발생하였습니다.. 오류내용은 https://www.inflearn.com/questions/1171985/dialect-%EC%84%A4%EC%A0%95-%EC%98%A4%EB%A5%98-%EC%A7%88%EB%AC%B8%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4 이분과 같습니다.. David님이 달아주신 답변에는 ojdbc를 의존성 추가를 하는것으로 되어있는데 시도해보았지만 해결되지 않았습니다.. 물론 이게 강의에 중점은 아니지만 스스로 해결해보려 해도 답이 안나와서 질문드립니다... 다른 추가적인 설정이 필요한걸까요??ㅜㅜ Exception in thread "main" jakarta.persistence.PersistenceException: [PersistenceUnit: hello] Unable to build Hibernate SessionFactory at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1591) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1512) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:55) at jakarta.persistence.Persistence.createEntityManagerFactory(Persistence.java:80) at jakarta.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) at jpql.JpaMain.main(JpaMain.java:14) Caused by: org.hibernate.MappingException: Could not instantiate id generator [entity-name=jpql.Product] at org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory.createIdentifierGenerator(StandardIdentifierGeneratorFactory.java:230) at org.hibernate.id.factory.internal.IdentifierGeneratorUtil.createLegacyIdentifierGenerator(IdentifierGeneratorUtil.java:127) at org.hibernate.mapping.SimpleValue.createGenerator(SimpleValue.java:415) at org.hibernate.internal.SessionFactoryImpl.lambda$createGenerators$1(SessionFactoryImpl.java:457) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1779) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) at org.hibernate.internal.SessionFactoryImpl.createGenerators(SessionFactoryImpl.java:456) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:271) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:450) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1507) ... 4 more Caused by: org.hibernate.HibernateException: Could not fetch the SequenceInformation from the database at org.hibernate.engine.jdbc.env.internal.ExtractedDatabaseMetaDataImpl.sequenceInformationList(ExtractedDatabaseMetaDataImpl.java:307) at org.hibernate.engine.jdbc.env.internal.ExtractedDatabaseMetaDataImpl.getSequenceInformationList(ExtractedDatabaseMetaDataImpl.java:151) at org.hibernate.id.enhanced.SequenceStyleGenerator.getSequenceIncrementValue(SequenceStyleGenerator.java:581) at org.hibernate.id.enhanced.SequenceStyleGenerator.adjustIncrementSize(SequenceStyleGenerator.java:259) at org.hibernate.id.enhanced.SequenceStyleGenerator.configure(SequenceStyleGenerator.java:207) at org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory.createIdentifierGenerator(StandardIdentifierGeneratorFactory.java:224) ... 20 more Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ALL_SEQUENCES" not found; SQL statement: select * from all_sequences [42102-224] at org.h2.message.DbException.getJdbcSQLException(DbException.java:514) at org.h2.message.DbException.getJdbcSQLException(DbException.java:489) at org.h2.message.DbException.get(DbException.java:223) at org.h2.message.DbException.get(DbException.java:199) at org.h2.command.Parser.getTableOrViewNotFoundDbException(Parser.java:8064) at org.h2.command.Parser.getTableOrViewNotFoundDbException(Parser.java:8035) at org.h2.command.Parser.readTableOrView(Parser.java:8024) at org.h2.command.Parser.readTablePrimary(Parser.java:1788) at org.h2.command.Parser.readTableReference(Parser.java:2268) at org.h2.command.Parser.parseSelectFromPart(Parser.java:2718) at org.h2.command.Parser.parseSelect(Parser.java:2824) at org.h2.command.Parser.parseQueryPrimary(Parser.java:2708) at org.h2.command.Parser.parseQueryTerm(Parser.java:2564) at org.h2.command.Parser.parseQueryExpressionBody(Parser.java:2543) at org.h2.command.Parser.parseQueryExpressionBodyAndEndOfQuery(Parser.java:2536) at org.h2.command.Parser.parseQueryExpression(Parser.java:2529) at org.h2.command.Parser.parseQuery(Parser.java:2498) at org.h2.command.Parser.parsePrepared(Parser.java:627) at org.h2.command.Parser.parse(Parser.java:592) at org.h2.command.Parser.parse(Parser.java:564) at org.h2.command.Parser.prepareCommand(Parser.java:483) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:639) at org.h2.server.TcpServerThread.process(TcpServerThread.java:289) at org.h2.server.TcpServerThread.run(TcpServerThread.java:191) at java.base/java.lang.Thread.run(Thread.java:833) at org.h2.message.DbException.getJdbcSQLException(DbException.java:514) at org.h2.engine.SessionRemote.readException(SessionRemote.java:650) at org.h2.engine.SessionRemote.done(SessionRemote.java:619) at org.h2.command.CommandRemote.prepare(CommandRemote.java:78) at org.h2.command.CommandRemote.<init>(CommandRemote.java:50) at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:487) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1166) at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:93) at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:316) at org.hibernate.tool.schema.extract.spi.ExtractionContext.getQueryResults(ExtractionContext.java:43) at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorLegacyImpl.extractMetadata(SequenceInformationExtractorLegacyImpl.java:39) at org.hibernate.engine.jdbc.env.internal.ExtractedDatabaseMetaDataImpl.sequenceInformationList(ExtractedDatabaseMetaDataImpl.java:291) ... 25 more

  • java
  • jpa
gogo 댓글 2 좋아요 0 조회수 473

NodeJS 의 single thread 와 event loop 에 대해 자세하게 알아 봤는데 제가 이해한 것이 맞는지 확인하고 싶어서 질문드렸어요!

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

동작하는 원리와 각 키워드의 역할에 대해 제가 알고 있는 점을 정리해 봤습니다. 어디가 틀리고 맞는지 확인하기 어려워서 질문드렸습니다! 원리 모든 task는 Call Stack(Execution Context Stack) 에 쌓인다. main thread는 Call Stack에 있는 작업을 순차적으로 진행한다. 그런데 오래 걸리는 요청이 들어오면 main thread가 blocking 된다. 그래서 nonblocking 이 되도록 event loop 와 background, event queue, micro task queue 등 막히는 작업을 해결 해줄 공간이 존재한다. 사용자가 요청을 보내면 오래 걸리든 아니든 우선은 Call Stack 에 쌓이게 된다. main thread 가 요청을 하나씩 해결 하는데 오래 걸리는 task를 해결할때 blocking 되지 않도록 CPU의 가용 가능한 main thread 이외의 다른 Thread(background)에 Task를 던진다. 그 후 다음 동작을 진행한다. main thread 와 background 는 동시에 task 를 동작하기에 nodejs 는 그 자체로 single thread 는 아니다. 사용자의 요청과 응답을 하는 task를 실행하는 thread가 1개라는 의미이다. 이 background thread에서 작업이 완료된 task는 event queue와 micro task queue 에 순차적으로 들어가게 된다. promise, nextTick 등 우선순위가 높은 작업들은 micro task queue에 쌓인다. Event Loop는 Call Stack에 모든 요청이 실행 완료되면 micro task queue, event queue에 있는 작업을 순서대로 Call Stack에 하나씩 담는다. micro task queue 에 task 가 있으면 event queue 보다 우선순위가 높아서 먼저 Call Stack 으로 이동한다. event loop는 non-blocking을 위해서 task를 background에 던지고 반환되면 event queue, micro task queue에 던지고, call stack을 observing 하다가 비어 있게되면 task를 순서대로 하나씩 넣는다. main thread는 call stack에 있는 task를 실행한다. 역할 main thread는 call stack에 있는 task를 실행한다. (얘는 이것만 하는 놈이다.) background는 event loop에서 오래 걸리는 작업을 던짐 당한 곳이고 작업이 완료되면 event loop 에게 알리는 작업을 한다. 여기서 Stack과 Queue는 모두 작업이 저장되는 공간인 메모리이다.(call stack, event queue, microtask queue) 이 메모리의 작업을 수행하고 던지고 받고 등의 작업을 하는 thread는 main thread와 background 이다. background 는 CPU 에서 가용 가능한 모든 thread 를 말하고 1개일 필요는 없다.

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
jyy0223 댓글 1 좋아요 0 조회수 383

followers and followees 프로퍼티 생성하기 질문

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

안녕하세요 코드 팩토리님! 너무 기본적은 질문이 많아 죄송합니다. 혹시나... 제가 이해를 못하고 있는건지 모르겠는데... 여기에서 followers, followees 의 property 정의가 주석에 바뀌지 않았는지 여쭤 봅니다. followers 가 나를 follow 하는 사람이 아닌지요?

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
정윤근 댓글 1 좋아요 1 조회수 325

keymap 설정에 관하여 질문 있습니다.

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

[질문 내용] intellij key map에서 Windows나 Eclipse등 설정하는거에서 무엇으로 설정하는게 나을까요? 제 os는 윈도우입니다

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

문제와 플이2 코드에서..

해결됨

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 9. 메소드, 문제와 풀이2 코드에서 저는 if문으로 풀었지만, 강사님께서는 switch문으로 푸셨더라구요. 궁금한점은 switch문에 case4: 부분은 왜, return이 들어가나요? break나 continue는 안되는 이유는 알겠지만, return은.. 반환값도 없는데... 잘 모르겠습니다.

  • java
  • 객체지향
David Ha 댓글 1 좋아요 0 조회수 245

이미지 s3 업로드 관련 질문드립니다!

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

안녕하세요 코팩님! 다름이 아니라 현재 제가 프로젝트에서 presigned url 방식으로 프론트단에서 이미지를 s3로 업로드하고 람다가 트리거 돼서 이미지 리사이징을 해주고 있습니다. 현재 업로드 방식은 s3 잉여 데이터들이 쌓이는게 걱정돼서 매번 s3로 바로 올려놓는게 아닌 최종 업로드 버튼시에 모든 이미지가 한번에 업로드 되는 구조입니다. 그런데 용량이 좀 큰 이미지는 람다 리사이징이 좀 걸려서 딜레이 때문에 프론트단에서 로딩을 걸어놓긴 하는데 사용자 경험이 좋지 못합니다. 그리고 게시물 작성 중 임시저장 기능을 새롭게 추가하려고 하니깐 이미지 처리를 어떻게 가져가야하나 싶더라고요. 혹시 강의에 나오는 temp 폴더에서 post 폴더로 옮겨가는 로직을 이용해서 s3에 적용을 한다면 좋을까요? 아님 더 좋은 해결방안이 있을까요? 그리고 리사이징 부분이 람다로 작동되다 보니 사용자가 게시물을 업로드 하지도 않고 계속 이미지를 수정하는 상황이 발생하면 람다 비용 문제도 고민되기도 합니다... 고민이 많다보니 횡설수설 질문드렸는데 현업에서는 기획에 따라 다르겠지만 이런 상황에선 어떻게 하는지가 좀 궁금합니다! 항상 감사드립니다.

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
호프런 댓글 1 좋아요 0 조회수 307

kafka를 왜 사용하는지가 잘 이해가 안가서 질문 남깁니다!

해결됨

실습으로 배우는 선착순 이벤트 시스템

안녕하세요! 강의 잘 듣고 있습니다. 감사합니다. https://www.inflearn.com/course/lecture?courseSlug=%EC%84%A0%EC%B0%A9%EC%88%9C-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%8B%A4%EC%8A%B5&unitId=156125&category=questionDetail&tab=community&q=1029856 해당 질문과 답변을 보고 추가 질문 드리려고 합니다. 제가 kafka나 redis, 분산서버 등에 대해 이해도가 낮은 점 양해 부탁드립니다! 1. Kafka 미사용시 주문생성/회원가입요청의 타임아웃 및 10분뒤 실행에 대한 해결책으로 Kafka 를 선택한 이유는 배압조절(back pressure) 때문입니다. 이렇게 말씀을 해주셨는데요, 답변에서 말씀하신 예시에서 처럼 10000개 요청이 있고, 카프카를 사용한다면, 요청 100개가 쌓일때마다 db에 insert를 하고, 다시 요청 100개가 쌓일때까지 기다렸다가 insert 하기를 반복한다는 것으로 이해하면 될까요? 2. 그게 맞다면, 강의에서 구현한 apply 메서드에서 100개의 요청이 왔는지 확인하지 않고, kafka를 사용해서 다른곳에 전달하여 처리하는 이유는 무엇인가요? 예시로 apply 메서드 안에서 redis의 incr 값을 체크하면 요청이 몇개가 쌓였는지 알 수 있을테고, 데이터를 임시저장하다가 100개마다 처리할 수 있을거란 생각이 들었습니다. kafka로 다른 모듈로 전달하는 것과의 차이점이 무엇인가 궁금합니다. 3. 실제로 consumer에서 100개의 작업이 완료되었는지는 일반적으로 어떻게 확인하는 걸까요? db에 저장하기 전에 100개의 데이터는 어디에 임시저장을 하나요?

  • java
  • docker
  • spring-boot
  • kafka
  • redis
dunow 댓글 1 좋아요 1 조회수 1748

swagger 실행 오류

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

swagger 실행시 No operations defined in spec! 라는 오류가 발생하는데 왜그럴가요?

  • javascript
  • node.js
  • docker
  • rest-api
  • nestjs
edu 댓글 1 좋아요 0 조회수 433

post에서 타입

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

authorId의 타입은 number인데, 포스트맨에서 return받는 newPost의 id의값은 스트링으로 들어오는 이유는 궁금합니다.

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
이진호 댓글 1 좋아요 0 조회수 298

Entity 설계 시 고민되는 부분 문의드립니다.(@Setter, @Builder 미사용 시 테스트 등)

해결됨

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

토이프로젝트나 회사에서 엔티티 설계 하면서 고민되는 부분이 있어서 문의드립니다. 엔티티에 @Setter 나 @Setter 가 포함된 @Data 애노테이션을 추가하지 않는 것이 좋다고 강의에서 들어서 설계 시 해당 부분을 제외하고 있습니다. @Entity @Getter @SuperBuilder @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "book") public class Book extends BaseDateEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "book_id", updatable = false) private Long id; @Column(name = "title", length = 200, nullable = false) private String title; @Column(name = "author") private String author; @Column(name = "price") private int price; @Column(name = "publisher") private String publisher; @Column(name = "publish_at") private LocalDate publishAt; @Column(name = "isbn", nullable = false) private String isbn; @Column(name = "sort", nullable = false) private String sort; @Column(name = "image", columnDefinition = "TEXT") private String image; @Column(name = "link", columnDefinition = "TEXT") private String link; } @Builder는 엔티티 클래스에 붙이고 있는데, 이렇게 되면 사실 점층적 생성자가 있는것과 다를바 없이 객체를 생성할 수 있기 때문에 좋은 방법이 아닌거 같아 문의드립니다. 실무에서는 보통 어떤 식으로 사용하시는지 궁금하여 문의드립니다. 별도의 of, create 메서드를 static으로 만들어서 생성하기도 하는데요. 이렇게 되면 테스트 코드 작업 시 @BeforeEach로 초기 데이터를 추가하기 쉽지 않더라고요. 어느정도 수준으로 실무에서 사용하는 것이 적절할지 궁금합니다. public static Reservation create(String userName, String phoneNumber, Performance performance, PerformanceSeat performanceSeat) { return Reservation.builder() .userName(userName) .phoneNumber(phoneNumber) .title(performance.getTitle()) .round(performance.getRound()) .amount(performance.getPrice()) .status(ReservationStatus.APPLY) .performance(performance) .performanceSeat(performanceSeat) .build(); } [문의 내용 정리] Q1) JPA Entity 클래스에 @Builder 애노테이션을 추가하는 것은 좋지 않은 방식일까요? 그렇다면 어떻게 사용하는것이 적절할까요? Q2) @Builder 패턴, 기본 생성자, setter 제외한 경우 테스트 코드에서 @BeforeEach로 초기 데이터를 추가 시 어떻게 하는 것이 좋을까요?

  • java
  • jpa
wony 댓글 1 좋아요 3 조회수 956

강의 질문입니다.

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

안녕하세요. typeOrm 에 관한 질문입니다. 댓글과 포스트에 관한 ManyToOne의 관계에서 commentRepository에 save할때 포스트와 연결하고 싶을때 포스트 모델 객체를 넣어도 되고 post : {id:postid} 값만 넣어줘도 되는지 궁금합니다. comment post 요청 작성시 author은 모델로 save 하고 post는 id로 save 해서 궁금해서 여쭤 봅니다. 미리 감사합니다

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
정윤근 댓글 2 좋아요 0 조회수 283

다형성 재정의에 질문이 있습니다.

해결됨

김영한의 실전 자바 - 기본편

[질문 내용] Dog dog = new Dog(); 위의 코드는 Dog 내부에 extends로 Animal이 있기에 Dog 클래스는 Animal 이라는 부모가 있는걸 알 수 있습니다. 하지만 Animal dog = new Dog(); Animal 타입으로 Dog를 생성하면 힙메모리에는 Dog와 Animal이 하나의 영역에 생기지만 Animal 타입으로 선언하였기 때문에 힙메모리에서 Animal 부분을 먼저 바라볼 것으로 생각하는데 어떻게 Animal에서 자식 요소가 있는걸 알고 오버라이딩된 메서드가 우선적으로 처리되는건지 궁금합니다. annotation의 영향인가요? ======= 추가 질문! Animal dog = new Dog(); 위 코드와 같이 선언하면 자바에서는 자동으로 업캐스팅이 이뤄지는것 이라고 이해해도 될까요? Animal dog = (Animal) new Dog(); 위와 같이 자바에서 자동으로 형 변환을 시켜준다고 생각하면 되는건가요?!

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

synchronized 사용 시 쓰레드 질문

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

synchronized를 사용하면 1개의 쓰레드만 이용한다고 말씀해주셨는데 startTransaction(); stockService.decrease(id, quantity); endTransation(); 에서 왜 다른 쓰레드가 먼저 호출되는 상황이 발생하는건가요? 이 부분이 이해가 잘 안됩니다

  • java
  • spring
  • 동시성
강프로그래머 댓글 2 좋아요 1 조회수 547

cascade, 연관관계 사용 기준 질문.

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 강의 잘 듣고 있습니다. cascade,연관 관계를 사용하는 기준이 궁금해서 질문 글을 작성합니다. 1.cascade 질문 제가 이해한 바로는 엔티티를 영속성 컨텍스트 관리를 받기 위해 persist 등록하는 것이며 각 엔티티는 따로따로 persist를 해야 되는데 cascade를 사용하면 하나의 엔티티를 persist할 때 그와 연관된 엔티티를 같이 해주는 것으로 이해했습니다. Order 코드에서 OrderItem과 Delivery에 cascade가 적용됐는데 Member에는 적용을 안 하는 것 같더라고요. 왜 Member는 안 하는지 궁금합니다. 연관 관계 질문 order와 연관된 엔티티 간에 연관관계 메소드를 통해 한쪽에서 서로 등록해주는 것은 이해가 가는데 Item과 Category간에는 어느 쪽에도 연관 관계 메소드가 없는 이유가 궁금합니다. Item과 Category 이 둘은 약간 상수? 느낌이라서 연관 관계를 지을 필요가 없는 것일까요? 답변 주시면 정말 감사하겠습니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
  • 연관관계
  • cascade
알알이 댓글 1 좋아요 1 조회수 476

34강 orphanRemoval 관련 질문입니다!

해결됨

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

orphanRemoval 을 걸지 않았을 경우 책6을 삭제했으나, userLoanHistories를 조회해보면 여전히 책6이 존재한다. orphanRemoval = true 을 걸었을 경우 클린 코드를 삭제했더니 조회시 사라졌다 어째서 orphanRemoval 을 걸어주지 않으면 데이터베이스에 반영이 되지 않는건가요? @Transactional 어노테이션으로 인해 트랜잭션이 시작될 때, 영속성 컨텍스트가 시작되고, 영속성 컨텍스트의 4대 특징 중 하나인 생성/수정 감지로 인해 user 객체의 userLoanHistories 의 값에 변경사항( removeOneHistory )이 발생하여 자동저장이 될거라고 생각했는데 말이죠.. 실제 데이터베이스상에선 userLoanHistories 는 user테이블의 필드가 아니기 때문에, 영속성 컨텍스트가 관리하는 field 에 포함이 되지않는데 orphanRemoval = true 를 걸어주면 비로소 자신이 관리하는 field로 인식하는걸까요? 원리가 너무 궁금해요.. 내용추가1) 바로 다음 강의인 책 대출 리팩토링에선 orphanRemoval 같은 옵션을 주지 않고도 new userLoanHistory 를 add한 내용대로 저장이 되는데, 어째서 userLoanHistory 를 remove하는것은 orphanRemoval 옵션이 없으면 데이터의 변경이 일어나지않는지 궁금합니다.. 제 생각에는 User 에서 userLoanHistories.add 를 하든 userLoanHistories.remove 를 하든 둘 다 User 와 UserLoanHistory 와의 연관관계를 이용한 데이터를 변경하기위한 접근같은데 .. add는 되는데 remove는 안되는게 살짝 이해하기 어렵습니다 ㅠ 내용추가2) returnBook 과 loanBook , removeOneHistory 의 차이점이 뭘까 고민해봤는데 returnBook 과 loanBook 은 UserLoanHistory 라는 Entity에 접근하는 과정 (loanBook은 Entity객체생성, returnBook은 Entity의 property 수정)이 존재하고, removeOneHistory 는 Entity에 직접 접근하는게 아니라 단순히 List에 대한 변경일뿐이고, Entity에 대한 직접적인 수정이나 생성이 이뤄진것이 아니므로 데이터베이스의 변경이 일어나지 않았다. 이렇게 이해했는데 제가 이해한 내용이 맞을까요? 생각을 정리하다보니 질문이 길어진 점 죄송합니다 ㅠ

  • java
  • spring
  • spring-boot
  • jpa
영후이 댓글 1 좋아요 1 조회수 382

버전 3.2.2 테스트 오류 - 해결은 했지만 궁금한 점

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] id 'java' id 'org.springframework.boot' version '3.2.2' id 'io.spring.dependency-management' version '1.1.4' java { sourceCompatibility = '17' } 현재 쓰는 버전입니다. 애플리케이션 실행에는 문제가 없지만 테스트시에 아래와 같이 오류가 뜹니다. Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/Workspace/jpa_%EA%B0%95%EC%9D%98/jpashop/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 1s 4 actionable tasks: 1 executed, 3 up-to-date 이에 대한 해결 방법을 찾아 보던 중 파일 - 설정 - 빌드,실행,배포 - gradle - 다음을 사용하여 테스트 실행 - IntelliJ IDEA 로 변경을 하여 해결하였습니다. 해결은 했지만 왜 이와같은 오류가 일어났었는지 IntelliJ IDEA 로 테스트를 실행하도록 했을 때 왜 동작하는지 앞으로 다른 문제가 발생하지는 않을지 궁금합니다.

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

테스트를 실행해도 db에 반영이 안되는 것 같습니다.

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 처음에 db delete 안 해주고 실행했을 때도 체크 표시가 떴고 delete 해주고 실행, db에서 회원 목록 조회하니 목록에 아무도 없습니다. test가 db에 연결이 안된 걸까요?

  • java
  • spring
  • mvc
  • spring-boot
이서영 댓글 1 좋아요 0 조회수 610

다음 강의는 언제쯤...

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

안녕하세요 코드 팩토리님.. 강의 너무 잘듣고 있습니다. 혹시 nestjs part2 강의는 언제 계획되어 있으신지 궁금합니다. 빨리 보고 싶어서요^^;;

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
정윤근 댓글 3 좋아요 1 조회수 582

수정이라는 작업을 할 때 PUT을 더 사용하는 이유가 있을까요?

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

HTTP 메서드에 처음 공부할 때 수정의 경우에는 PUT과 PATCH를 사용한다고 배웠는데요. PUT의 경우에는 통째로 갈아끼우는 방식의 갱신이고 PATCH의 경우에는 부분 수정이 가능하다고 배웠습니다. 이 강의에서는 USER의 정보중에 이름만받고 있어서(PUT은 전체 필드를 명시해주어야 한다고 배웠습니다.) PATCH가 더 적당한 방식이 아닌가라는 생각이 들었습니다. PATCH가 아닌 PUTMapping을 사용하신 이유가 있으실까요? 그리고 이와 관련된 블로그 글들이 많은데 저마다 내리는 결론이 달라서 조금 혼란스럽습니다. 강사님의 생각을 듣고 싶습니다. 좋은 강의 만들어주신 태현님을 존중하고 존경하며 이만 글 줄이겠습니다!

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
wisehero 댓글 1 좋아요 4 조회수 2461

환경변수 설정 시 Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string 라는 에러가 납니다.

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

안녕하세요. 환경변수 설정 간 TypeOrmModule.forRoot()를 설정하는 구간에서 강의대로 process.env로 .env에 있는 키들을 받아오려 하니 제목과 같은 에러가 납니다. 구글링을 해보았는데, forRootAsync를 활용하라는 말 등은 있지만 저 에러가 동일하게 구현된 사례는 없었습니다. 혹시 제가 어떤 잘못을 했는지 궁금하여 질문을 남깁니다. 강의 정말 잘 보고 있습니다. 감사합니다. @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: process.env[ENV_DB_HOST], port: parseInt(process.env[ENV_DB_PORT]), username: process.env[ENV_DB_USERNAME], password: process.env[ENV_DB_PASSWORD], database: process.env[ENV_DB_DATABASE], synchronize: true, }), CommonModule, ConfigModule.forRoot({ envFilePath: process.env.NODE_ENV === 'production' ? '.env.production.local' : '.env.development.local', isGlobal: true, }), AuthModule, UsersModule, ], controllers: [AppController], providers: [AppService], }) export class AppModule {} // .env.development.local DB_TYPE=postgres DB_HOST=localhost DB_PORT=5430 DB_USERNAME=123123 DB_PASSWORD=123123 DB_DATABASE=123123 // constants.ts export const ENV_DB_HOST = 'DB_HOST'; export const ENV_DB_PORT = 'DB_PORT'; export const ENV_DB_USERNAME = 'DB_USERNAME'; export const ENV_DB_PASSWORD = 'DB_PASSWORD'; export const ENV_DB_DATABASE = 'DB_DATABASE'; // 에러 메세지 Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
김태수 댓글 2 좋아요 0 조회수 1423

인기 태그

인프런 TOP Writers

주간 인기글