inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

react 저장 시 iframe 강제 재생성 문제

미해결

create react app을 통해 프로젝트를 진행 중입니다. 원래 컴퓨터에서는 프로젝트가 정상적으로 작동 되었는데, 다른 컴퓨터에서 git clone을 받아 npm install 후 npm start 진행하니, 1. Cannot read property 'tap' of undefined 상기와 같은 에러가 발생하여 검색해보았더니, webpack version문제라고 나와 5버전에서 4버전으로 내려주었습니다. 2. <iframe style="position: fixed; top: 0px; left: 0px; width: 100%; height: 100%; border: none; z-index: 2147483647;"></iframe> 그 후 리액트를 실행하고, 저장할 때마다 iframe이 자동으로 주입되어 홈페이지의 click을 막습니다. 혹시 이와같은 문제를 겪으시는 분들 중에 해결하신 분이 계실지요...? 원래는 다른 컴퓨터에만 문제 발생하였는데, 이제 작업하던 원래 컴퓨터에까지 발생하기 시작했습니다. 저는 임시 방편으로나마 css에서 ifame display none 시키고 작업중인데, 무슨 이유로 생기는 오류인지 모르겠습니다.

  • react
  • iframe
  • z-index:2147483649
정형섭 댓글 1 좋아요 0 조회수 2519

visual studio에서 프로젝트 실행시 오류가 발생합니다

미해결

오픈 소스 자바스크립트 React 프로그래밍 입문 Part.1

안녕하세요 리액트를 익히고자 수업을 듣고있는 수강생입니다. 강의를 잘 따라가는 와중 환경세팅부분에서 막혔습니다. - 증상: Visual Studio2022에서 프로젝트 실행 시 첨부파일과 같은 오류가 발생하며 오류 발생 - 추가 사항 (1) visual studio가 아닌 VS Code, nodejs에서 실행하면 정상 동작되는거 확인하였습니다 (2) cmd, powershell에서 npm명령 잘 작동하고 있습니다. - 캡처화면

  • react
  • visualstudio
  • react
  • asp.net
  • npm_start
손명재 댓글 1 좋아요 3 조회수 609

강의소개에서

해결됨

Slack 클론 코딩[실시간 채팅 with React]

강의소개보면 swr(리덕스대체) 라고 나와있는데 swr도 리덕스처럼 상태관리를 하는건가요?

  • react
  • typescript
  • redux
  • 웹팩
  • swr
  • react
  • Socket.io
  • babel
  • 클론코딩
쵸잉 댓글 1 좋아요 0 조회수 228

프로젝트 구성에 대해서 질문을 드려봅니다.

미해결

리액트로 구현하는 블록체인 이더리움 ERC721(NFT)

안녕하세요. 회사에서 NFT를 발행해주는 프로젝트를 진행하려는데요. 올려주신 강의를 보고 하나씩 처리를 해가고 있는데, 프로젝트 구성의 감을 잡지 못해서 문의를 좀 드리려고 합니다. 이 곳에 질문을 남겨도 될지는 모르겠지만, 너무 답답해서 문의를 드립니다. nodejs 를 사용해 backend(API 서버)를 만들고 raect(3000번 포트) 에서 proxy 를 설정해 nodejs(3001번 포트) 의 데이터를 받아오도록 frontend를 만드는 프로젝트를 진행하고 있습니다. 이 프로젝트는 NFT를 발행해주는 사이트를 만드는 것이 목표인데요. 만약 올려주신 drizzle-dapp으로 backend(API 서버)와 연결하는 back을 만들려면 package.json의 main을 truffle-config.js로 해도 괜찮을까요? 그게 아니라면 프록시서버를 따로 두지 않고 react-node 가 proxy로 설정되어 있는 상태로 NFT 거래가 가능하게 만들려면 truffle 을 어떻게 사용해야 할지 조언 해주실 수 있을까요...? 강의 내용과 맞지 않는 내용 올려서 죄송합니다.

  • react
  • node
  • Ethereum
  • truffle
  • react
김시준 댓글 1 좋아요 1 조회수 383

concat() stringValue 나이를 완전히 가져오지 못합니다.ㅠㅠ

미해결

실전! Querydsl

안녕하세요 질문이 있습니다 concat을 사용해서 stringValue를 활용할 때 나이를 다 가져오지 못하고 맨 앞에 있는 숫자만 가져오는데 왜 그럴까요ㅠㅠㅠㅠ

  • java
  • JPA
J S 댓글 2 좋아요 1 조회수 394

상속 매핑에 대한 질문

미해결

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

안녕하세요 영한님 서포터즈님들 상속 매핑에 대해 예제를 작성하는 중에 궁금한 점이 생겨 질문드립니다. 제가 게시판을 생성해서 게임 게시판. 일정 게시판 등 종류 별로 만들 때, 어떤 전략을 사용하는게 효율적인가 생각해보았습니다. 현재 자식 게시판들은 모두 같은 필드를 가지고 있습니다. 즉, 부모 게시판에 있는 필드만을 사용합니다. 1. SINGLE TABLE 전략 해당 전략을 사용하게 된다면 부모 테이블에 자식 테이블의 필드들이 한 테이블에 있게 됩니다. 특정 게시판을 조회하기 위해서는 모든 게시판 객체를 가져올텐데, 시스템의 규모가 크지 않고, join할 필요가 없기 때문에 현재는 해당 방법이 효율적이라 생각합니다. 2. JOIN TABLE 전략 추후에 게시판들이 늘어나게 되고, 다른 게시판 종류의 추가로 필드를 추가할 필요가 있다고 가정해봤습니다.(확장성 고려) 그렇다면 1번 전략을 사용할 때, 특정 게시판을 조회하기 위해서는 모든 게시판을 다 탐색해야하는데, 조인 전략을 사용하게 되면 특정 게시판을 조회할 때 그 특정 게시판 테이블만 조회하면 된다고 생각합니다. 따라서 게시판들이 늘어나게 되면 해당 방법이 효율적이라 생각합니다. 결론 그래서 제가 예제를 만들 때 사용한 전략에 대해 저 자신을 위와 같은 이유로 납득시켰는데 이게 맞는지 궁금합니다 그렇다면 결국 대부분의 실무에서는 JOIN 전략을 사용할 수 밖에 없나요?

  • JPA
  • java
gusdn85554 댓글 2 좋아요 0 조회수 286

OrderItems까지 같이 조회되는 이유가 궁금합니다!

미해결

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

안녕하세요 항상 좋은 답변 남겨주셔서 감사합니다 OrderItems까지 같이 조회되는 이유가 궁금해서 글을 적게 되었습니다. @GetMapping ( "/api/v1/simple-orders" ) public List<Order> ordersV1 () { List<Order> orders = orderService .findOrders( new OrderSearch()) ; orders.forEach(order -> { order.getMember().getName() ; order.getDelivery().getStatus() ; }) ; return orders ; } V1 컨트롤러는 다음과 같습니다. @Entity @Getter @Setter @NoArgsConstructor @AllArgsConstructor @Table (name = "orders" ) public class Order { @Id @GeneratedValue @Column (name = "order_id" ) private Long id ; @ManyToOne (fetch = FetchType. LAZY ) @JoinColumn (name = "member_id" ) private Member member ; @OneToMany (mappedBy = "order" , fetch = FetchType. LAZY , cascade = CascadeType. ALL ) // order 가 만들어지면 orderItem 이 만들어지기 때문에 영속성 전이한다 . private List<OrderItem> orderItems = new ArrayList<>() ; @OneToOne (fetch = FetchType. LAZY , cascade = CascadeType. ALL ) private Delivery delivery ; private LocalDateTime orderDate ; @Enumerated (EnumType. STRING ) private OrderStatus status ; ORDER는 다음과 같습니다. @Entity @Getter @Setter public class OrderItem { @Id @GeneratedValue @Column (name = "orderitem_id" ) private Long id ; @ManyToOne (fetch = FetchType. LAZY ) @JoinColumn (name = "item_id" ) private Item item ; @JsonIgnore @ManyToOne (fetch = FetchType. LAZY ) @JoinColumn (name = "order_id" ) private Order order ; private int orderPrice ; private int count ; ORDER_ITEM은 다음과 같습니다. 여기서 V1 컨트롤러를 통해서 쿼리를 날리면, 뒤늦게 Lazy Loading을 통해서 Order_Item들이 프록시 초기화가 되는 것처럼 나갑니다. 그런데 실제로는 프록시가 초기화도 되어있지 않습니다. 정리하면 이렇습니다 1. Order_Items는 Lazy Loading 설정이 되어있고, 프록시 객체를 강제 초기화 하는 과정도 없습니다. 그런데 왜 select 쿼리가 나가게 되는 것인지 알려주실 수 있으실까요? 2. orderItem에 대한 select 쿼리가 나갔음에도 불구하고 실제 응답에 있는 값은 null입니다. 이 경우는 어떻게 이해를 해야할까요? 항상 좋은 답변 주셔서 감사합니다!

  • java
  • JPA
  • spring
  • spring-boot
코린코린 댓글 2 좋아요 2 조회수 687

@Transactional이 생략되는 이유가 궁금합니다

미해결

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

안녕하세요. 항상 좋은 답변 해주셔서 감사합니다. 이번에는 @Transactional이 생략되는 이유가 궁금해서 글을 적게 되었습니다. @GetMapping ( "/api/v4/simple-orders" ) public List<SimplerOrderQueryDto> ordersV4 () { return orderSimpleQueryRepository .findOrderDtos() ; } @Repository @RequiredArgsConstructor public class OrderSimpleQueryRepository { private final EntityManager em ; public List<SimplerOrderQueryDto> findOrderDtos () { return em .createQuery( " select new jpabook.jpashop.repository.order.simplequery.SimplerOrderQueryDto(o.id, m.name, o.orderDate, o.status, d.address) from Order o " + " join o.member m " + " join o.delivery d " , SimplerOrderQueryDto. class ).getResultList() ; } } V4 컨트롤러를 개발할 때 궁금한 내용입니다. em.createQuery를 만들어서 dto를 바로 조회해오는 내용입니다. 제가 궁금한 부분은 @Transactional이 없어도 정상동작하는 부분입니다. 위 코드 상에는 어디에도 tx.begin() / tx.commit()이 되어있는 부분이 없는 것으로 보입니다. 따라서 트랜잭션 상태가 아니기 때문에 JPA가 DB 커넥션을 얻지 못한 상황으로 보이는데, DB에서 값을 읽어오고 있습니다. 혹시 어떤 조화로 이렇게... 트랜잭션 없이 값을 불러오는것인지.. 그리고 영속화가 되고 있는것인지를.. 알려주실 수 있으실까요? 감사합니다!

  • java
  • spring-boot
  • spring
  • JPA
코린코린 댓글 1 좋아요 0 조회수 527

몽고db 사이트가 많이 바뀌어서

미해결

리액트로 나만의 블로그 만들기(MERN Stack)

몽고db 사이트가 많이바뀌어서 cluster 화면이 너무많이바뀌어서 강의를 알아들을수없습니다.

  • 몽고db
  • express
  • redux
  • nodejs
  • react
  • bootstrap
  • mongodb
nnouss 댓글 1 좋아요 0 조회수 361

실무에서 사용되는 Setter

해결됨

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Setter를 열어 둘 경우 엔티티에 변경으로 인한 유지보수가 힘들다고 말씀해주셨는데 혹시 Setter를 다 닫고 필요한 것만 연다거나, 비즈니스 메서드를 만드는 예제를 참고할 만한게 있을까요?

  • JPA
  • 웹앱
  • spring
  • java
  • spring-boot
reyeol 댓글 2 좋아요 0 조회수 428

오답이 아닌데 오답인 이유 ..

미해결

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

import java.util.Scanner ; public class Main { public int solution (String[] str , char word){ int count = 0 ; for (String s : str) { if (s.toLowerCase().charAt( 0 )==word){ count++ ; } } return count ; } public static void main (String[] args) { Main ch = new Main() ; Scanner sc = new Scanner(System. in ) ; String[] str = sc.nextLine().split( "" ) ; char word = sc.nextLine().charAt( 0 ) ; System. out .println(ch.solution(str , word)) ; } } 위 풀이가 왜 오답이라고 나오는건가요? .. 풀이도 정해져있나요?

  • java
  • 코테 준비 같이 해요!
댓글 0 좋아요 0 조회수 341

batchSize 원리에 대해서 알고 싶습니다

미해결

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

안녕하세요 영한님 @BatchSize를 이용하여 최적화를 하다가 문득 깊은 내용을 알고싶어서 질문을 드립니다. 폴더 안의 폴더를 만드는 구조인데요 다음의 상하 관계를 가진 폴더가 총 13개 있습니다. 이 13개의 폴더 정보를 받아 위의 그림의 구조로 저장을 하고 싶었습니다 . @Getter @NoArgsConstructor (access = AccessLevel. PROTECTED ) @Entity public class Folder { @Id @GeneratedValue (strategy = GenerationType. SEQUENCE) @Column (name = "FOLDER_ID" ) private Long id ; private String name ; // 부모 @ManyToOne (fetch = FetchType. LAZY ) @JoinColumn (name = "PARENT_ID" ) private Folder parent ; // 자식 @BatchSize (size = 900 ) @OneToMany (mappedBy = "parent" ) private List<Folder> children ; @Builder private Folder (String name , Folder parent) { this . name = name ; this . parent = parent ; } } 그래서 Folder라는 엔티티를 self reference하도록 구성을 했구요 @BeforeEach public void setUp () throws Exception { Folder aFolder = Folder. builder () .name( "A" ) .build() ; Folder bFolder = Folder. builder () .name( "B" ) .parent(aFolder) .build() ; Folder bChild1 = Folder. builder () .name( "BChild1" ) .parent(bFolder) .build() ; Folder bChild2 = Folder. builder () .name( "BChild2" ) .parent(bFolder) .build() ; Folder bChild3 = Folder. builder () .name( "BChild3" ) .parent(bFolder) .build() ; Folder cFolder = Folder. builder () .name( "C" ) .parent(aFolder) .build() ; Folder cChild1 = Folder. builder () .name( "CChild1" ) .parent(cFolder) .build() ; Folder cChild2 = Folder. builder () .name( "CChild2" ) .parent(cFolder) .build() ; Folder cChild3 = Folder. builder () .name( "CChild3" ) .parent(cFolder) .build() ; Folder dFolder = Folder. builder () .name( "D" ) .parent(aFolder) .build() ; Folder dChild1 = Folder. builder () .name( "DChild1" ) .parent(dFolder) .build() ; Folder dChild2 = Folder. builder () .name( "DChild2" ) .parent(dFolder) .build() ; Folder dChild3 = Folder. builder () .name( "DChild3" ) .parent(dFolder) .build() ; folderRepository .saveAll(Arrays. asList (aFolder , bFolder , cFolder , dFolder , bChild1 , bChild2 , bChild3 , cChild1 , cChild2 , cChild3 , dChild1 , dChild2 , dChild3)) ; em .flush() ; em .clear() ; } 이렇게 저장을 한 후 @Test @DisplayName ( "bfs 알고리즘 적용 테스트 " ) @Transactional @Commit public void bfsTest () throws Exception { // given Queue<Folder> queue = new LinkedList<>() ; Folder deleteFolder = folderRepository .findById( 1L ).get() ; queue.offer(deleteFolder) ; List<Folder> tempFolders = new ArrayList<>() ; tempFolders.add(deleteFolder) ; int i = 0 ; // when while (!queue.isEmpty()) { System. out .println( "i = " + i) ; Folder pollFolder = queue.poll() ; List<Folder> folders = pollFolder.getChildren() ; for (Folder folder : folders) { queue.offer(folder) ; } tempFolders.addAll(folders) ; i++ ; } // then Collections. reverse (tempFolders) ; folderRepository .deleteAll(tempFolders) ; em .flush() ; } 위의 코드처럼 테스트 코드를 짯습니다 그러니 select 쿼리가 많이 줄어든것을 확인할 수 있었습니다. 2022-01-13 23:25:04.471 DEBUG 21588 --- [ main] org.hibernate.SQL : select folder0_.folder_id as folder_i1_1_0_, folder0_.name as name2_1_0_, folder0_.parent_id as parent_i3_1_0_ from folder folder0_ where folder0_.folder_id=? 2022-01-13 23:25:04.492 DEBUG 21588 --- [ main] org.hibernate.SQL : select children0_.parent_id as parent_i3_1_1_, children0_.folder_id as folder_i1_1_1_, children0_.folder_id as folder_i1_1_0_, children0_.name as name2_1_0_, children0_.parent_id as parent_i3_1_0_ from folder children0_ where children0_.parent_id=? 2022-01-13 23:25:04.498 DEBUG 21588 --- [ main] org.hibernate.SQL : select children0_.parent_id as parent_i3_1_1_, children0_.folder_id as folder_i1_1_1_, children0_.folder_id as folder_i1_1_0_, children0_.name as name2_1_0_, children0_.parent_id as parent_i3_1_0_ from folder children0_ where children0_.parent_id in ( ?, ?, ? ) 2022-01-13 23:25:04.501 DEBUG 21588 --- [ main] org.hibernate.SQL : select children0_.parent_id as parent_i3_1_1_, children0_.folder_id as folder_i1_1_1_, children0_.folder_id as folder_i1_1_0_, children0_.name as name2_1_0_, children0_.parent_id as parent_i3_1_0_ from folder children0_ where children0_.parent_id in ( ?, ?, ?, ?, ?, ?, ?, ?, ? ) 총 이렇게 4개의 쿼리가 나갔는데요 서론이 길었습니다 선생님 제가 질문할 것은 이겁니다 @BatchSize를 설정하면 하이버네이트는 어떤 알고리즘으로 저 in절의 아이디 값들을 넣는 것일까요> 자료를 찾아봐도 나오는데가 없었고 저스스로 고민을 했을 때는 <1번> 첫번째 select 쿼리가 나갔을 때 A폴더(id = 1)가 영속화 된다. <2번> 2번째 select 쿼리가 나갔을 때 B,C,D 폴더 즉 id가 2,3,4인 폴더들이 영속화가 된다. -> 따라서 3번째 select 쿼리에서 in절의 id들은 이 2,3,4가 되는 것이다. (여기서의 의문점 그럼 앞서 영속화된 A폴더의 id = 1은 안 집어 넣는 알고리즘은 또 뭘까) 이렇게 생각했는데 과연 맞는지 궁금합니다

  • jpa
  • JPA
  • java
fecorp 댓글 1 좋아요 0 조회수 2129

onCreateWorkspace Submit 무반응

미해결

Slack 클론 코딩[실시간 채팅 with React]

안녕하세요! 지금까지는 문제 없이 잘 진행하고 있었으나 계속 찾아보고, alecture 폴더 내에 있는 소스코드와 비교를 해보아도 어떤 코드가 문제인지 모르겠어서 질문 글을 남기게 되었습니다. 해당 섹션 마지막에서 액시오스 코드를 작성하고 백엔드에 워크 스페이스를 생성하도록 요청하는 부분이 있는데요, const onCreateWorkspace = useCallback((e) => { console.log('ok'); e.preventDefault(); console.log(newWorkspace); if (!newWorkspace || !newWorkspace.trim()) return; console.log('b'); if (!newUrl || !newUrl.trim()) return; console.log('c'); axios.post('/api/workspaces', { workspace: newWorkspace, url: newUrl, }, { withCredentials: true, }, ).then((response) => { revalidate(); setShowCreateWorkspaceModal(false); setNewWorkspace(''); setNewUrl(''); }).catch((error) => { console.dir(error); toast.error(error.response?.data, { position: 'bottom-center' }); }); }, []); 워크스페이스 이름과, 워크스페이스 url 을 넣고 생성하기 버튼을 누르면 반응이 없어서 위 코드처럼 console.log 를 찍어서 확인해보니 newWorkspace 에 아무런 값이 담기지가 않고 있습니다. 해당 소스코드 및 라인 : https://github.com/Kuass/sleact/blob/master/setting/ts/layouts/Workspace/index.tsx#L32 입니다. onCreateWorkspace = useCallback 에 event 객체도 콘솔에 찍어서 보았으나 값은 정상적으로 있는데.. 왜 이럴까요 강사님 ㅠㅠ..

  • react
  • Socket.io
  • typescript
  • babel
  • 웹팩
  • 클론코딩
댓글 1 좋아요 1 조회수 330

콜백함수가 헷갈려서 질문 드립니다!

미해결

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의

index.js에서 user.comparePassword를 호출할 때 req.body.passwod로 비밀번호를 인자로 전달하고 뒤에 err, isMatch는 comparePassword 메소드에서 cb(err)과 cb(null, isMatch)로 받아와서 비밀번호가 틀렸습니다 쪽으로 넘어가는 것 같은데 제가 이해한 게 맞을까요...??

  • react
  • nodejs
huhu 댓글 1 좋아요 0 조회수 276

Django 로 이용한 머신러닝/딥러닝 서비스

해결됨

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

안녕하세요 강사님 퀄리티 높은 강의와 디테일좋은 강의 감사드립니다. 머신러닝에도 관심이 있어 공부를 하던와중에 내가직접 서비스를 하려면 백엔드의 지식도 필요할듯하여 감사하게 강의를 듣고있습니다. 머신러닝/딥러닝 서비스를 사용하기위한 백엔드 서비스가 Django 가 좋은것같은데 현업에서도 많은 사용을 하고있나요? (아마 강사님께서도 많은 컨설팅을 해주셔서 아실거라 생각이 들어 질문을 드립니다.) 딥러닝 모델을 웹에서 돌리기위해서는 병렬처리?가 필요할듯한데 Django 에서는 이러한 부분에대한 솔루션이 있는지 또한 궁금합니다. 감사합니다.

  • django
  • react
  • python
  • docker
YoonEo Choi 댓글 2 좋아요 0 조회수 3721

DB url에서 막혀요ㅠㅠ

미해결

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

Database "mem:ea62e49b-fd2d-4217-8245-939ed574682c" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 (도움말) 자꾸 이런 오류가 떠요ㅠㅠ

  • java
  • spring-boot
  • MVC
  • spring
댓글 1 좋아요 0 조회수 282

영속성 컨텍스트에 대해 질문드립니다.

미해결

실전! Querydsl

jpaQueryFactory .selectFrom( member ) .fetch() ; jpaQueryFactory .selectFrom( member ) .fetch() ; 이런식으로 테스트 코드를 짠 후 실행시켰는데 select문이 2번 나갔습니다. 제가 이해한 바로는 select문이 한번 나가고 2번째 쿼리에 대해서는 영속성 컨텍스트 1차 캐시에서 가져와서 select문이 안나가야 하는데 2번 나간게 이해가 되질 않습니다..

  • java
  • JPA
댓글 2 좋아요 0 조회수 735

port in use 8080 에러

미해결

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

안녕하세요! 강의를 듣다가 문제가 생겨서 연락드렸습니다.. 아래 사진과 같이 8080 포트를 이미 사용중이라는 에러를 보고 해결해보려고 cmd의 netstat -ano 명령어를 사용했습니다. 사진처럼, 8080포트를 사용중인 프로세스가 없는데 ide를 실행하면 8080이 이미 사용중이라고 뜨네요... stackoverflow에서 프로세스에 javaw가 동작하고 있을수도 있다고 해서 해당 프로세스를 찾아봤지만 없었습니다. 재부팅, ide 껏다 키기 등등으로도 해결이 안되는데 그냥 포트를 임의로 8090으로 변경해서 사용하는게 답일까요....?

  • spring-boot
  • JPA
  • spring
  • 웹앱
  • java
이상윤 댓글 2 좋아요 0 조회수 655

put

해결됨

풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)

그래프큐엘을 다시 보면서 강의 정주행 해보고 있습니다. 질문: update message 부분을 put 대신에 patch로 리팩토링해도 괜찮을까요? 저는 프론트 위주로만 알고 있어서 api쪽은 단순히 전체 update는 put, 부분적인 data 수정은 patch 정도로만 알고 있는데요, 어떤 경우 put/patch를 쓰는 게 더 좋은지 의견 궁금해서 남깁니다.

  • rest-api
  • graphql
  • react
xiuxiu 댓글 1 좋아요 0 조회수 246

Dto를 다 다르게 만들어야 할까요..?

미해결

실전! 스프링 데이터 JPA

안녕하세요. 강의 너무 잘 보고 있습니다. JPA와 관련된 질문은 아닌거 같은데 강의를 보다가 항상 궁금했던 점이 언급되어서 이렇게 질문드립니다. 엔티티를 그대로 클라이언트로 넘기면 엔티티가 변경되었을때 API 스팩이 변경되기 때문에 DTO로 변환해서 넘겨줘야 한다고 하셨는데 예를들어 만약에 10개의 API가 Member 정보를 필요로 할 경우(Member 엔티티의 필드가 약 20개 정도 된다고 가정) 각 API 마다 MemberDto 클래스를 모두 생성하고 각 MemberDto에 Member엔티티를 dto로 매핑하는 로직을 모두 작성해야 하나요..? 10개 모두 생성해서 사용하려 하니 클래스 네이밍도 어렵고 코드 중복이 너무 많아지는것 같고, 10개 API 에서 필요로하는 Member 정보를 모두 담은 하나의 MemberDto를 만들어 사용하려 하니 엔티티를 사용할 때의 문제와 같이 MemberDto를 변경하면 10개 API 스팩이 변경되는 문제가 발생합니다.. 제가 생각했을때 제일 최선의 방법은 API마다 리스폰VO 클래스를 만들고 해당 클래스에 static inner 클래스로 MemberDto를 선언하는것인데.. 혹시 실무에서 사용하는 best practice가 어떤거일까요..?

  • java
  • JPA
  • spring
  • spring-boot
최영원 댓글 1 좋아요 0 조회수 539

인기 태그

인프런 TOP Writers

주간 인기글