inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

yml과 properties

해결됨

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

어떤 파일이 더 좋다? 유용한가요? 본인에게 더 맞는걸 쓰는게 괜찮은가요? 전 yml이 편한데 구글링 하면서 찾아보면 yml보다 프로퍼티스가 더 많이 보이는거 같아서요..

  • spring
  • spring-boot
  • JPA
  • java
  • 웹앱
박찬영 댓글 1 좋아요 0 조회수 328

Optional 적용 문제

해결됨

실전! 스프링 데이터 JPA

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 회원 이메일을 사용하여 MemberRepository에서 회원 정보를 조회하는 메서드를 구현해 보았습니다. 해당 이메일의 회원이 DB에 존재하지 않을경우를 고려하여 다음과 같이 Optional로 감싸주었습니다. Transactional(readOnly = true) public interface MemberRepository extends JpaRepository<Member, Long> { Optional<Member> findByEmail(String email); ... } 이 경우 Service 단에서 해당 메서드를 사용할 경우 변수 타입을 Optional<Member>로 선언해 줘야 했습니다. @Transactional public void followFriend(FollowFriendRequest request) { Member requester = getMember(request.getRequesterEmail()); Optional<Member> receiver = memberRepository.findByEmail(request.getReceiverEmail()); log.info("requester: '{}', receiver: '{}'", requester, receiver); if (receiver == null) { throw new MemberEmailNotFound(); } if (requester.hasFriend(receiver) || relationRepository.existsByOwnerEmailAndFriendEmail(request.getRequesterEmail(), request.getReceiverEmail())) { throw new EmailDuplicatedException(request.getReceiverEmail()); } relationRepository.save(new Relation(requester, receiver)); } 이러면 위 코드 마지막 줄의 Relation 생성자 또한 Optional을 포함한 생성자를 추가로 만들어 줘야 하고 이렇게 되면 Relation 엔티티의 receiver 필드값에도 Optional을 씌워줘야 하는 문제가 발생했습니다. 이 경우 Optional을 어떻게 사용하는게 옳은건지 궁금합니다.

  • optional
  • spring
  • spring-boot
  • java
  • JPA
고산하 댓글 2 좋아요 1 조회수 1415

클래스의 로드 시점

미해결

코딩으로 학습하는 GoF의 디자인 패턴

안녕하세요! 강의 너무나 잘 듣고 있습니다. public class Settings { private Settings() { } private static class SettingsHolder { private static final Settings INSTANCE = new Settings(); } public static Settings getInstance() { return SettingsHolder.INSTANCE; } } 로드 시점에 관한 질문입니다. getInstance가 호출 될때 SettingsHolder가 JVM에 로드된다고 말씀하셨습니다. 자바는 잘 모르지만, 동적으로 로드가 된다고 해석했습니다. public class Settings { private static final Settings INSTANCE = new Settings(); private Settings() { } public static Settings getInstance() { return INSTANCE; } } 그렇다면 이른 초기화 방식도, 마치 SettingsHolder가 그러하듯, 필요로 할 때 동적으로 로드 될 순 없나요? 필요로 할 때 로드된다면 SettingsHolder를 필요로 하지 않을 테니 말이죠. 그럼에도 불구하고 static inner class를 사용하는 건 반드시 이유가 있을 테니.. 하여 제 나름대로 찾아보고 테스트해 본 결과 자바 파일에 정의된 기본 클래스들은 실행 시 로드됨을 확인했습니다. 모든 클래스가 실행 시 로드되는진 확실하진 않지만 이와 관련된 JVM의 로드 정책에 대해서 간략하게 설명 부탁드립니다. :)

  • java
  • 디자인-패턴
댓글 3 좋아요 2 조회수 945

AcceptEx 질문있습니다.

해결됨

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

AcceptEx가 실패가 나는 경우 즉 , AcceptEx호출 자체가 false가 나고, 이때 GetlastErrror가 WSA_IO_PENDING이 아닌경우나 , AcceptEx의 호출로 IOCP 에서 Pending중일때 모종의 이유로 GQCS에서 AcceptEx pending에 대한 실패가 리턴되는경우 listen socket이 close되었거나, 어찌되었든 더이상 유저를 받지못하는 상황일 수 있는데 이럴때 서버에 강제로 CRASH를 내도록 해도 될것같은데, 혹시 이렇게 하면 안될 이유가 있을까요?? (AcceptEx를 호출할때 close된 session 소켓을 전달하는 경우는 없고, AcceptEx의 호출결과로 IOCP 유저접속을 대기중인상태(Pending)일때 session socket이 close되거나 session이 삭제되는 일은 일체 없다고 가정합니다. 물론 listen socket은 닫힐 수 있지만, listensocket이 닫히면, 서버를 유지시켜줄 이유가 없다고 생각되긴 합니다.)

  • network
  • MMORPG
  • windows-server
grallex00 댓글 1 좋아요 0 조회수 359

h2 설치 관련

해결됨

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 현재 군인 신분으로 사지방 특성상 차단되어 있는 기능이 좀 있는데 h2.bat이나 윈도우창의 h2 콘솔 모두 켜지지 않는데 이러면 방법이 없는건가요?

  • h2
  • spring
  • JPA
  • java
  • spring-boot
  • 웹앱
민준 댓글 1 좋아요 1 조회수 614

persist이후에 commit은 안하나요?

미해결

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

쭉 강의를 따라오다보니 의문점이 하나 있는데 강의에서 em.persist() 이후에 tx.commit() 같은 코드가 없는데 어떻게 DB에 저장이 되는건가요? 김영한님의 다른 jpa강의를 보앗을 때 commit이 필요하다고 본거같아서요!

  • JPA
  • java
  • spring
  • 웹앱
  • spring-boot
IJILKJ 댓글 1 좋아요 1 조회수 288

저가 정리한게 맞는지가 궁금합니다

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

요약한게 맞는지 확인해주실 수 있나요? 1. Pop은 현재 head를 따로 oldHead로 저장하고, 이것이 nullptr이 아니란 소리는 head가 존재한다는 뜻, 즉 1개 이상 스택에 값이 존재한다는 뜻임 2. 스택에 값이 1개 이상이면 oldHead는 nullptr이 아닐 것이고 pop을 한번 했을 때 oldHead에 head가 제대로 값이 들어갔다면 while문을 통과하면서 _head=oldHead->next; 가 원자적으로 실행되고, 아래쪽을 쭉 실행하다가 TryDelete 함수가 호출될 것임 2-1. 이때 만약 다른 Pop 쓰레 드들이 있다고 하면, 요놈들은 첫 Pop에서 _head가 oldHead->next로 바뀐것으로 인해 while문을 통과하지 못하므로 oldHead=_head가 실행되어 다시 while문이 불려져서 다음 원소를 상대로 pop을 진행함 -------------------- 이후는 TryDelete입니다 3. popCount가 1인 경우 : TryDelete가 실행되는 순간에도 popCount가 1이라면 아직은 Pop이 다른 쓰레드로 호출되지 않은 상태임. 3-1-1. pendingList를 읽어 삭제하려고 하는데, 이걸 읽었는데도 popCount가 아직 1이라면 Pop이 pendingList를 읽는 사이에 한번도 호출되지 않은 것이므로, 읽은 pendingList와 연결된 모든 노드를 이참에 삭제함 3-1-2. pendingList를 읽어 삭제하려고 하는데, 이걸 읽은 사이에 popCount가 증가하여 Pop이 다른 쓰레드에서 호출됐다는 걸 알았으니 읽어들인 pendingList를 다시 돌려놓는다. 3-2. pendingList도 다 삭제햇으니(돌려놨으니) 현재 노드를 삭제해주면 된다. 4. popCount가 1 초과인 경우 : TryDelete가 실행되는 순간에 popCount가 1을 넘어버렷다면, Pop이 다른 쓰레드에서 호출된 상태이므로 지금 당장 삭제하지 말고 삭제 예약만 해놓도록 한다.

  • network
  • windows-server
  • MMORPG
jyk2367 댓글 4 좋아요 1 조회수 447

일대다 페치 조인과 페이징에 대해

미해결

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

안녕하세요! 일대다 패치조인을 진행하게 될시에, 다쪽의 갯수에 맞추어서 데이터가 뻥튀기, 즉 일쪽이 뻥튀기 된다는 사실을 인지하고 있습니다. 위 코드의 진행과정을 알고싶은데요, 위 처럼 일대다 페치 조인으로 데이터가 뻥튀긴 테이블이 완성되고 -> 뻥튀기 된 데이터들이 애플리케이션(메모리)에 올라가고 -> 거기에서 jpa가 이제 List<Order>에 담는것이 맞을까요? 이게 만약 맞다면, 일대다 패치조인시 페이징할때의 위험성과 같이 저것도 다 메모리에 올라가는 상황이 아닌가요?!, 아니면 제가 메모리의 개념을 잘 이해 못하고 있는지.. 답답하네요 ㅠ

  • spring
  • JPA
  • spring-boot
  • java
gmlakd0930 댓글 1 좋아요 0 조회수 488

해당 영상에서 member엔티티의 id값 할당방식

미해결

실전! 스프링 데이터 JPA

@Id @GeneratedValue Member 엔티티의 id생성이 auto로 디폴트값인데, 영상 7분 10초에 멤버의 객체생성이 하나뿐인 테스트에서 id값이 1이아닌 2로 뜨는지 궁금합니다.

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

초록줄에러...

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

ㅇ이런에러는 어떻게 해결하나요??

  • C#
  • network
  • unity
starkshn 댓글 2 좋아요 0 조회수 904

추가할만한 기능

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

우선 인생 강의 정말 감사드립니다. 도움이 정말 많이 되네요ㅠ,ㅠ 강의 시간과 분량 상 필수적이고 핵심적인 것만 알려주셨을 거 같은데, 강의에서 가르쳐주신 것처럼 자기만의 서버 프레임워크를 만들어갈 때 더 추가할 만한 기능이 있을까요?

  • network
  • windows-server
  • MMORPG
댓글 1 좋아요 1 조회수 384

단말기와 장치들과의 연결할때

해결됨

20년 경력자의 알기 쉬운 컴퓨터네트워크

안녕하십니까. 단말기와 스위치 및 라우터 장비에 연결시킬 때 강의에서는 선과 선 사이에 Fa0 Fa0/1 등등 선 끝과 끝사이에 이렇게 문구가 떠 있는데 제 PC 프로그램에서는 선만 표시되고 Fa0 및 Fa0/1 등 과 같은 문구가 표출이 안되는데 설정시키는 방법이 따로 있는건가요?

  • protocol
  • network
knysinji0 댓글 1 좋아요 2 조회수 375

gradle 프로젝트 open 오류 발생

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 처음으로 mac 환경에서 프로젝트를 열려고 하는데 이 오류 때문에 진행을 못하고 있네요.. 프로젝트 파일을 다시 삭제하고 열어봐도 pc를 재부팅하고 다시 시작해도 똑같은 오류가 계속 발생합니다. 구글링에 검색해봐도 마땅한 해결방안이 나오지 않아 답답하네요ㅜㅜ 프로젝트 구성도 이상합니다.. 파일을 열때마다 "._java"와 같은 텍스트 파일이 생겨요

  • gradle
  • error
  • spring-boot
  • MVC
  • spring
  • java
코카콜라 댓글 5 좋아요 0 조회수 1743

@GeneratedValue 작성 후 오류

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. @Id @GeneratedValue (strategy = GenerationType. IDENTITY ) private String id ; 위 코드 작성 후 오류가 납니다.. String 말고 숫자로 해도 오류가 나네요 ㅠ .. mysql로 바꿨는데 왜 그런지 모르겠습니다ㅠ 오류 - WARN: GenerationTarget encountered exception accepting command : Error executing DDL " create table Member ( id varchar(255) not null auto_increment, name varchar(255) not null, primary key (id) ) engine=MyISAM" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table Member ( id varchar(255) not null auto_increment, name varchar(255) not null, primary key (id) ) engine=MyISAM" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:440) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:424) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:315) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:166) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:135) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:121) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:155) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at hellojpa.JpaMain.main(JpaMain.java:14) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000d\000a create table Member (\000d\000a id varchar(255) not null auto_increment,\000d\000a name varchar(255) not null,\000d\000a primary key (id)\000d\000a ) engine[*]=MyISAM"; expected "identifier"; SQL statement: create table Member ( id varchar(255) not null auto_increment, name varchar(255) not null, primary key (id) ) engine=MyISAM [42001-210] at org.h2.message.DbException.getJdbcSQLException(DbException.java:521) at org.h2.message.DbException.getJdbcSQLException(DbException.java:496) at org.h2.message.DbException.getSyntaxError(DbException.java:265) at org.h2.command.Parser.readIdentifier(Parser.java:5759) at org.h2.command.Parser.parseCreateTable(Parser.java:9306) at org.h2.command.Parser.parseCreate(Parser.java:6779) at org.h2.command.Parser.parsePrepared(Parser.java:746) at org.h2.command.Parser.parse(Parser.java:674) at org.h2.command.Parser.parse(Parser.java:644) at org.h2.command.Parser.prepareCommand(Parser.java:551) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:615) at org.h2.server.TcpServerThread.process(TcpServerThread.java:288) at org.h2.server.TcpServerThread.run(TcpServerThread.java:191) at java.base/java.lang.Thread.run(Thread.java:834) at org.h2.message.DbException.getJdbcSQLException(DbException.java:451) at org.h2.engine.SessionRemote.done(SessionRemote.java:607) at org.h2.command.CommandRemote.prepare(CommandRemote.java:85) at org.h2.command.CommandRemote.<init>(CommandRemote.java:51) at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:477) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1292) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:217) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:205) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 15 more 오류 member package hellojpa ; import javax.persistence.* ; import java.math.BigDecimal ; import java.time.LocalDate ; import java.time.LocalDateTime ; import java.util.Date ; @Entity public class Member { @Id @GeneratedValue (strategy = GenerationType. IDENTITY ) private String id ; @Column (name = "name" , nullable = false ) private String username ; public Member (){ } public String getId () { return id ; } public void setId (String id) { this . id = id ; } public String getUsername () { return username ; } public void setUsername (String username) { this . username = username ; } } jpaMain package hellojpa ; import org.hibernate.internal.build. AllowSysOut ; import javax.persistence.EntityManager ; import javax.persistence.EntityManagerFactory ; import javax.persistence.EntityTransaction ; import javax.persistence.Persistence ; import java.util.List ; public class JpaMain { public static void main (String[] args) { EntityManagerFactory emf = Persistence. createEntityManagerFactory ( "hello" ) ; EntityManager em = emf.createEntityManager() ; EntityTransaction tx = em.getTransaction() ; tx.begin() ; try { Member member = new Member() ; //member.setId("ID_A"); member.setUsername( "C" ) ; em.persist(member) ; tx.commit() ; } catch (Exception e){ tx.rollback() ; } finally { em.close() ; } emf.close() ; } } persistence.xml <? xml version ="1.0" encoding ="UTF-8" ?> <persistence version ="2.2" xmlns ="http://xmlns.jcp.org/xml/ns/persistence" xmlns: xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi :schemaLocation ="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd" > <persistence-unit name ="hello" > <properties> <!-- 필수 속성 --> <property name ="javax.persistence.jdbc.driver" value ="org.h2.Driver" /> <property name ="javax.persistence.jdbc.user" value ="sa" /> <property name ="javax.persistence.jdbc.password" value ="" /> <property name ="javax.persistence.jdbc.url" value ="jdbc:h2:tcp://localhost/~/test" /> <property name ="hibernate.dialect" value ="org.hibernate.dialect.MySQL5Dialect" /> <!-- 옵션 --> <property name ="hibernate.show_sql" value ="true" /> <property name ="hibernate.format_sql" value ="true" /> <property name ="hibernate.use_sql_comments" value ="true" /> <property name ="hibernate.hbm2ddl.auto" value ="create" /> </properties> </persistence-unit> </persistence>

  • JPA
  • java
이유경 댓글 1 좋아요 0 조회수 770

엔티티 id 값이 공유되는 문제

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요 영한님 제가 JPA를 이용한 사이드 프로젝트를 진행중인데 한 가지 문제가 생겨서 질문드립니다. 현재 저는 oracle 을 사용하고 있으며, Member, Order, Store 등의 여러 엔티티들을 사용합니다. 모두 @GeneratedValue 로 선언한 상태입니다. 그런데 / Given Member member = Member. builder ().name( "memberA" ).build() ; memberRepository .save(member) ; Store store = Store. builder ().name( "storeA" ).build() ; storeRepository .save(store) ; System. out .println(store.getId()) ; Order order = Order. createOrder (member , store , OrderType. DELIVERY ) ; orderRepository .save(order) ; System. out .println(order.getId()) ; 와 같이 테스트를 작성하면서, Member를 생성해서 save하면 memberId가 1이 되는데 그다음에 store를 save하면 서로 다른 테이블이기 때문에 1L이 되어야 하는데 2L이 됩니다. 물론 그다음 order는 3L이 되구요 모든 엔티티들이 hibernate_sequence를 공유하고 있고, save하는 과정에서 select hibernate_sequence.nextval from dual; 가 호출될 때마다 값이 1씩 증가하고 있는 것같습니다. 엔티티들이 sequence를 공유하지 않는 방법이 없을까요... 검색을 여러번 해보기도 했고, 검색 키워드를 못잡겠어서 질문드립니다 ㅠㅠ

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

안녕하십니까 기선님!!!!! webclient와 비동기관련 질문요청드립니다

미해결

스프링 부트 개념과 활용

안녕하십니까. 기선님처럼 되고싶은 1년차 주니어 개발자입니다. 제 개인 프로젝트 중에 현재는 동기방식 restTemplate으로 한번에 여러 군데에 요청을 던지는 기능이 구현되어 있는데 일부 요청이 오래 걸리는 것들이 있어서 스레드를 오래 물고있다는 판단을 하여 해당 기능을 nio 방식으로 전환하려고 합니다.(webclient) 웹서버는 io/nio모두 지원하는 undertow를 사용하고 있으며, 스프링 mvc를 사용하고 있습니다. 본론으로 제가 해당 프로젝트에 한번 외부로의 요청에 각각 응답시간이 다른 여러곳에 일부는 오래걸리는 요청을 던지기 위해 비동기 처리로 수정하여 개발하려고 하는데, @Async나 CompletableFuture말고 webflux를 추가하여 mvc+webflux의 형태로 개발해도 괜찮을지 여쭤보고 싶습니다.(이게 개인 프로젝트가 아닌 실무에서도 가능할지) webflux와 mvc를 같이 쓰면 않좋다는 이전 토비님 말씀과 예전 구글링 글들도 있지만, 제 개인적인 생각에는 undertow는 예전 3.0 서블릿과는 다르게 io/nio를 함께 처리해주기 때문에 webflux + mvc 두개를 같이 써서 필요한 부분에 비동기 처리중에서도 pub/sub구조와 backpressure가 구현되어 있는 webflux-reacotr를 일부 도입해도 괜찮지 않을까하여 여러곳들을 전전하며 찾아보고 있었습니다. 제 부족한 실력으로는 어깨너머로 알게된 지식으로 스스로 원하는 결론을 그냥 내린것 같은 생각이 강하게 들고, 마땅한 결론에 도달하지 않아서 여쭙고싶습니다!!!!!

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

unable: to acces jarfile target/*.jar

미해결

예제로 배우는 스프링 입문 (개정판)

java -jar target/*.jar 이 실행되지않아 target파일로 들어간뒤에도 실행되지않아 전체이름을 다 쳤더니 실행되었습니다. 왜 *가 먹히지 않았던걸까요?

  • spring
  • java
미로 댓글 3 좋아요 3 조회수 485

브라우저 캐시 갱신 관련 질문

해결됨

모든 개발자를 위한 HTTP 웹 기본 지식

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 먼저, HTTP 웹 기본 지식 강의 완강했습니다. 좋은 강의 만들어주셔서 감사합니다. python django backend 개발자를 준비하고 있습니다. 질문은 `브라우저 캐시 갱신` 관련 질문입니다. 1. 브라우저는 기본적으로 서버에서 보내는 캐시를 다 저장하기 때문에, 캐시 무효화를 위해서 서버에서는 이와 관련된 header를 반드시 넣어야 한다고 이해하는 게 맞나요?? 2. 캐쉬 유효 시간이 지나서 갱신하려고 할 때, 수정된 내용이 없으면 header만 보낸다고 이해했습니다. 그러면 representation header 설명 강의 내용에서 'clinet와 serer 간에 주고 받는 resource의 data를 어떻게 표현할지 결정하는 header ' 라고 설명하셨는데, 클라이언트가 브라우저 캐시로 접근 유무를 결정하는 역할도 포함하는 건가요??? - header가 업데이트 되어 클라이언트가 브라우저 캐시를 조회 후, 업데이트 되는 원리를 제가 모르는 것 같습니다. 3. representation 관련 부분에서 Meta data 가 언급되는데 제가 이해하기로는 데이터 안에 담겨진 content data로 이해했습니다. 이게 맞나요?? 잘못되었다면 정확한 내용을 가진 출처를 알려주시면 공부해보겠습니다.

  • network
김제하 댓글 1 좋아요 0 조회수 166

repository는 entity당 개별로 생성해줘야 하나요?

미해결

실전! 스프링 데이터 JPA

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의내용을 보면 Member와 Team 엔티티가 있고 JpaRepository를 상속받은 repository 또한 각각 만들어져 있습니다. 단순한 조회는 이미 정의되어있는 메소드로 가능하지만, 다른 테이블(엔티티)와 조인하는 경우에는 직접 정의해서 사용 가능하다는 내용의 강의였는데요 그럼 만약 4개 5개 복잡한 엔티티들과 연관된 쿼리들을 정의하고 싶다면 어느 repositroy에 정의를 해야할지 고민입니다. 여러 엔티티를 1개의 repository로 관리하고자 해도, 상속받을때 <>속에 특정 엔티티를 넣어줘야하는데, 그럼 어떤 엔티티를 넣어야할까요? 코딩에 정답은 없겠지만은 실무에서는 관례쩍으로 어떤식으로 구현을 하는지 궁금합니다.

  • spring
  • JPA
  • java
  • spring-boot
koon0312 댓글 1 좋아요 0 조회수 1090

인기 태그

인프런 TOP Writers

주간 인기글