inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이야기를 나눠요

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

HandlerMethodArgumentResolver 를 사용하신 이유에 대해서 궁금합니다.

생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현

안녕하세요 선생님 강의에 도움을 많이 받고 있습니다! 다름이 아니라 반복되는 로직들을 HandlerMethodArgumentResolver 를 통해서 처리한 것에 대해서 궁금증이 하나 생겼는데요. 해당 RequestHeader 에서 값을 검증하거나, 변환하는 기능을 HandlerMethodArgumentResolver 외에도 유틸 메서드로도 동일한 처리가 가능할 것 같은데 HandlerMethodArgumentResolver 를 사용하신 이유에 대해서 알 수 있을까요? 어떠한 특정상황에서 사용하는 것인가? 하는 궁금증이 있어서 여쭤보게되었습니다. 감사합니다!

  • spring-boot
  • jpa
  • web-api
최종민 댓글 1 좋아요 0 조회수 449

로그에 traceId, spanId 모두 잘 찍히는데 조회가 안 됩니다.

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

로그에 traceId, spanId 모두 잘 찍히는데 브라우저의 zipkin에서 traceId로 조회를 하면 no trace가 뜨네요. 스프링부트 3에 맞춰서 깃허브에 올려주신 자료 참조해서 디펜던시 맞게 설정하고 yml에도 올려주신 자료대로 수정했는데 이런 문제가 생기면 어떤 부분이 잘못된 걸까요?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
CARL 댓글 0 좋아요 0 조회수 446

DB섹션 강의를 들으면서 궁금한 점이 생겨 질문을 남깁니다.외래키를 설정하는 방법과 조인검색결과를 json으로 어떻게 반환하나요?

스프링 DB 2편 - 데이터 접근 활용 기술

어느 강의영상에 질문을 남겨야할지 감이 안잡혀 여기에 질문 남깁니다…. 웹 개발을 할 때 DDL을 통해 생성되는 테이블들은 모두 서비스에서 사용되는 객체들을 보고 만드는것 같은데 (예를 들면 Member 클래스, Item클레스들을 생각했습니다) 만약 어떤 회원 A가 아이템A를 등록하였으면 데이터 베이스의 회원과 아이템 사이에는 등록이라는 관계가 생성이 되고 회원 1명은 아이템을 여러개 등록이 가능하다면 Member 테이블의 PK를 Item 테이블의 FK로 등록되며 Item 테이블의 속성들은 (id, item_name, price, quantity, member_id)로 설정이 될것 같은데 이런 경우 Item 클레스의 멤버변수로 Member member_id; 를 생성해주어야 할것 같은데 이런 외래키 값은 도메인을 설계할때 어떻게 처리해야 하나요? 그리고 api로 통신할 때 클라이언트 에게 데이터를 넘겨줄 때 스프링 입문 강의에서 hello 객체자체를 return 하면 스프링의 잭슨라이브러리가 json포멧으로 변환해서 넘겨준다고 해주셨는데 여러개의 테이블이 조인된 결과를 json으로 반환 해주려면 (예를 들어서 멤버 A가 등록한 아이템의 이름과 가격, 멤버의 이름을 요청한다면 반환되는 튜플이 item_name, price, member_name) 이것들은 하나의 객체가 아닌 Member클래스와 Item클래스의 일부 변수들을 사용한 새로운 값들인데 이럴때는 어떤 방법으로 return해주어야 하나요? 클라이언트측과 조율을 하여 검색되는 조건을 설정하여 조인검색의 제약을 설정하나요? 제약을 설정한다면 반환할 때 (item_name, price, member_name) 이 3개의 속성들을 멤버변수로 사용하는 새로운 클래스를 생성하여 반환해 주어야 하나요? 항상 질문글에 상세한 답글 남겨주셔서 열심히 공부할 수 있습니다. 감사합니다.

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
양치잘하기 댓글 2 좋아요 0 조회수 373

user정보에 orders가 안생깁니다.

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

여기서 마지막에 orders가 나와야하는데 왜 안나오나요? 어디에 문제가 있는건가여? 도와주세요 디버그하니깐 null로 나오긴 하는데... 예제처럼 수정하려면 어떻게 해야할까요 db는 mysql 쓰고 있습니다

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
김동현 댓글 1 좋아요 0 조회수 459

BigQuery 입문 강의 수강 후 dataset 선정 및 진행 방향성

초보자를 위한 BigQuery(SQL) 입문

안녕하세요. 초보자를 위한 BigQuery(SQL) 입문 잘 들었습니다. 생각보다 재미가 있어서 계속 해보려 하는데 무엇을 해야할지 잘 몰라서 고민입니다. 강의 후반부에 "앞으로 배우면 좋을 내용" 에 있는 순서대로 해보려 했습니다. 공식 문서와 블로그 글을 통해 ARRAY, STRUCT의 기본 공부를 했습니다. 다음으로 넘어가 복잡한 데이터 가공하기 부분을 하고 있습니다. 우선 bigquery의 공개 데이터를 사용해 보자는 생각을 했고 Google Trends datasets과 COVID-19 Public Datasets을 살펴봤습니다. 세부사항과 데이터를 보며 어떤 것을 의미하는지까지는 알 수 있었습니다. 다만 이후부터 어떻게 해야할지 감이 안 왔습니다. 강의를 수강할 때는 예제 문제들이 있으니 배운 것을 적용할 수 있었는데, 처음 보는 데이터고 어떤 목적을 갖고 분석을 해야할지 모르겠습니다. bigquery 프로젝트 예제를 찾아봤지만 마땅한게 없었습니다. 혹시 이 강의를 수강하고 연습해 보기 좋은 dataset과 어떤 방식으로 프로젝트를 진행해야 할지 알고 싶습니다.

  • sql
  • bigquery
  • 데이터-리터러시
타크로 댓글 1 좋아요 0 조회수 552

백엔드 독학 시 취업 준비(포트폴리오) 및 공부 방향이 궁금합니다.

안녕하세요 백엔드 독학 시 포트폴리오 준비 및 공부 방향을 어떻게 해야 할지 방향이 잡히지 않아 고수분들의 의견을 청하고자 글을 작성하게 되었습니다. 저는 백엔드 개발자를 지망하고 있고 인프런에서 강의를 들으면서 공부하고 있습니다. 현재는 자바 강의 및 김영한 님 스프링, JPA, QueryDSL 강의 및 데이터베이스 강의를 수강하였고 개인적으로 나름 포트폴리오? 하나 만들어보고자 도서 대출 반납 및 게시판 CRUD를 할 수 있는 것을 만들었습니다.(백엔드 부분 자바 코드) 화면도 만들기는 했지만 GPT 선생님의 도움을 빌려 일단 화면이 보일 수 있을 정도만 해놨습니다. 이후 협업을 경험해 보고 싶은데 현재 올라와 인프런에서 사이드 프로젝트 자리가 있으면 지원하고 있지만 뛰어난 분들이 너무 많아 참여가 힘든 것 같습니다. 일단 현재는 docker를 공부 중이며 redis, aws를 공부하려고 합니다. 현재 취업을 위해 팀 프로젝트를 하고 싶은데 어떻게 참여할 수 있을지, 많이 부족하다면 현재 어떤 방향으로 더 공부를 진행해야 할지 방향을 잡기가 힘들어 글을 쓰게 되었습니다. 중소기업에 취직하기 위해서는 JSP을 요구하는 곳도 많아 보이는데 html, css, js를 활용해서 화면도 만들 정도로 공부해야 하는 것 인지도 질문드리고 팀플 구하는 방법 및 공부 방향 및 어떤 것을 더 추가적으로 공부하면 좋을지 댓글 부탁드립니다! 감사합니다. 많은 분들께서 댓글 주시면 경청하도록 하겠습니다!

  • java
  • springboot
  • mysql
  • jpa
  • springdatajpa
  • querydsl
SHYU 댓글 1 좋아요 1 조회수 1209

깊이있는 학습을 하는 방법 질문입니다

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

안녕하세요 3년차 백엔드 개발자 입니다! 주로 기술 학습은 인강/구글링을 통해 해왔는데, 더 깊이있는 학습을 위해서 어떻게 학습을 하는게 좋을까요? 예를 들어 트랜잭션의 내부 원리와 서버에 요청을 받는 순간부터 응답으로 보내는 과정을 꼼꼼하게 알고싶으면 디버깅하면서 학습하는 방법밖에는 없을까요?

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

부하테스트는 배포 환경에서 하려면 어떻게 해냐하나요?

백엔드 개발자 성능 개선 초석 다지기

현재 로컬에서 강의 내용에 나온대로 부하테스트를 돌려봤는데요. 이걸 바탕으로 AWS EC2에 배포하고 부하테스트를 해보려고 합니다. 하지만 현재 프리티어를 사용하고 있어 비용문제는 어떻게 되는지가 궁금합니다. 여기서 궁금한 부분은 다음과 같습니다. EC2 환경에서도 똑같이 하면 되는건지? 트래픽을 보내면 요금이 청구될텐데 어떻게 해야하는지?

  • java
  • springboot
  • jpa
  • aws
  • ec2
  • ngrinder
풋데브 댓글 1 좋아요 0 조회수 1341

백엔드가 너무어려워요

코드로 배우는 React 19 with 스프링부트 API서버

삭제된 글입니다

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
dkfnwld 댓글 1 좋아요 0 조회수 329

사이트 만들고 공유해도 되나요?

코드로 배우는 React 19 with 스프링부트 API서버

따라서 만들고 있는데요. 다 만들고 여기에 공유해도 되나요?

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
개발자 댓글 1 좋아요 0 조회수 314

실제 개발할 때의 마음가짐에 대해 질문드립니다.

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

Q. 실제 개발시에는 메서드가 하나 추가될 때마다 테스트해줘야 하는 것 맞을까요? 강의 상에서는 Order, OrderItem 코드 작성하시는 순서가 되게 유기적으로 매끄럽게 구성되어있는데요. 실제 코드 작성할 때는 실수도 나올 수 있고, 특정 메서드에 어느 클래스에 위치해야하는 게 좋을지에 대한 고민같은 것이 동반될 것 같다는 생각이 들 것 같다는 생각이 듭니다(실제로도 그래왔던 것 같구요). 좋은 강의를 수강하다보니 새로운 상황을 혼자 맞이할 때 막막한 순간에 어떤 마음가짐을 가져야할 지 고민이 되어 질문드립니다. p.s) 지금은 열심히 완강을 향해 달려가고 있는 중이라 강의평을 남기지 못하고 있는데, 여유가 되면 감사 인사 꼭 드리도록 하겠습니다. 항상 고마워요 영햔님....

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
Jaesang Yoon 댓글 1 좋아요 0 조회수 305

db 테이블 생성

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

실제 운영서버에서는 jpa 자동 생성을 사용하기 보다는 직접 db에서 create table을 이용해서 생성하는 걸 권장하시는 건가요??

  • java
  • jpa
sde101573 댓글 1 좋아요 0 조회수 316

일대다 페이징 방법

실전! Querydsl

삭제된 글입니다

  • java
  • jpa
재성 댓글 1 좋아요 0 조회수 543

SQL Error [42501]: ERROR: permission denied for database postgres

데이터 분석 SQL Fundamentals

안녕하세요 '실습용 스키마 설치 이슈 시 적용하세요'라는 강의편에 맥북에서 create schema nw; 이렇게 DBeaver에서 실행을 하면 아래와 같은 에라가 뜨네요 ㅠ SQL Error [42501]: ERROR: permission denied for database postgres

  • sql
  • postgresql
  • dbms/rdbms
심동희 댓글 0 좋아요 0 조회수 827

버전을 맞추었는데도 오류가 발생합니다. (pd ver: 2.0.3, sqlalchemy: 2.0.0)

다양한 사례로 익히는 SQL 데이터 분석

query = """ select * from nw.customers """ df = pd.read_sql_query(sql=query, con=postgres_engine) df.head(10) --------------------------------------------------------------------------- UnicodeDecodeError Traceback (most recent call last) Cell In[25], line 4 1 query = """ 2 select * from nw.customers 3 """ ----> 4 df = pd.read_sql_query(sql=query, con=postgres_engine) 5 df.head(10) File ~\anaconda3\Lib\site-packages\pandas\io\sql.py:468, in read_sql_query(sql, con, index_col, coerce_float, params, parse_dates, chunksize, dtype, dtype_backend) 465 if dtype_backend is lib.no_default: 466 dtype_backend = "numpy" # type: ignore[assignment] --> 468 with pandasSQL_builder(con) as pandas_sql: 469 return pandas_sql.read_query( 470 sql, 471 index_col=index_col, (...) 477 dtype_backend=dtype_backend, 478 ) File ~\anaconda3\Lib\site-packages\pandas\io\sql.py:832, in pandasSQL_builder(con, schema, need_transaction) 829 raise ImportError("Using URI string without sqlalchemy installed.") 831 if sqlalchemy is not None and isinstance(con, (str, sqlalchemy.engine.Connectable)): --> 832 return SQLDatabase(con, schema, need_transaction) 834 warnings.warn( 835 "pandas only supports SQLAlchemy connectable (engine/connection) or " 836 "database string URI or sqlite3 DBAPI2 connection. Other DBAPI2 " (...) 839 stacklevel=find_stack_level(), 840 ) 841 return SQLiteDatabase(con) File ~\anaconda3\Lib\site-packages\pandas\io\sql.py:1539, in SQLDatabase.__init__(self, con, schema, need_transaction) 1537 self.exit_stack.callback(con.dispose) 1538 if isinstance(con, Engine): -> 1539 con = self.exit_stack.enter_context(con.connect()) 1540 if need_transaction and not con.in_transaction(): 1541 self.exit_stack.enter_context(con.begin()) File ~\anaconda3\Lib\site-packages\sqlalchemy\engine\base.py:3245, in Engine.connect(self) 3222 def connect(self) -> Connection: 3223 """Return a new :class:`_engine.Connection` object. 3224 3225 The :class:`_engine.Connection` acts as a Python context manager, so (...) 3242 3243 """ -> 3245 return self._connection_cls(self) File ~\anaconda3\Lib\site-packages\sqlalchemy\engine\base.py:145, in Connection.__init__(self, engine, connection, _has_events, _allow_revalidate, _allow_autobegin) 143 if connection is None: 144 try: --> 145 self._dbapi_connection = engine.raw_connection() 146 except dialect.loaded_dbapi.Error as err: 147 Connection._handle_dbapi_exception_noconnection( 148 err, dialect, engine 149 ) File ~\anaconda3\Lib\site-packages\sqlalchemy\engine\base.py:3269, in Engine.raw_connection(self) 3247 def raw_connection(self) -> PoolProxiedConnection: 3248 """Return a "raw" DBAPI connection from the connection pool. 3249 3250 The returned object is a proxied version of the DBAPI (...) 3267 3268 """ -> 3269 return self.pool.connect() File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\base.py:452, in Pool.connect(self) 444 def connect(self) -> PoolProxiedConnection: 445 """Return a DBAPI connection from the pool. 446 447 The connection is instrumented such that when its (...) 450 451 """ --> 452 return _ConnectionFairy._checkout(self) File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\base.py:1255, in _ConnectionFairy._checkout(cls, pool, threadconns, fairy) 1247 @classmethod 1248 def _checkout( 1249 cls, (...) 1252 fairy: Optional[_ConnectionFairy] = None, 1253 ) -> _ConnectionFairy: 1254 if not fairy: -> 1255 fairy = _ConnectionRecord.checkout(pool) 1257 if threadconns is not None: 1258 threadconns.current = weakref.ref(fairy) File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\base.py:716, in _ConnectionRecord.checkout(cls, pool) 714 rec = cast(_ConnectionRecord, pool._do_get()) 715 else: --> 716 rec = pool._do_get() 718 try: 719 dbapi_connection = rec.get_connection() File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\impl.py:168, in QueuePool._do_get(self) 166 return self._create_connection() 167 except: --> 168 with util.safe_reraise(): 169 self._dec_overflow() 170 raise File ~\anaconda3\Lib\site-packages\sqlalchemy\util\langhelpers.py:147, in safe_reraise.__exit__(self, type_, value, traceback) 145 assert exc_value is not None 146 self._exc_info = None # remove potential circular references --> 147 raise exc_value.with_traceback(exc_tb) 148 else: 149 self._exc_info = None # remove potential circular references File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\impl.py:166, in QueuePool._do_get(self) 164 if self._inc_overflow(): 165 try: --> 166 return self._create_connection() 167 except: 168 with util.safe_reraise(): File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\base.py:393, in Pool._create_connection(self) 390 def _create_connection(self) -> ConnectionPoolEntry: 391 """Called by subclasses to create a new ConnectionRecord.""" --> 393 return _ConnectionRecord(self) File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\base.py:678, in _ConnectionRecord.__init__(self, pool, connect) 676 self.__pool = pool 677 if connect: --> 678 self.__connect() 679 self.finalize_callback = deque() File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\base.py:902, in _ConnectionRecord.__connect(self) 900 self.fresh = True 901 except BaseException as e: --> 902 with util.safe_reraise(): 903 pool.logger.debug("Error on connect(): %s", e) 904 else: 905 # in SQLAlchemy 1.4 the first_connect event is not used by 906 # the engine, so this will usually not be set File ~\anaconda3\Lib\site-packages\sqlalchemy\util\langhelpers.py:147, in safe_reraise.__exit__(self, type_, value, traceback) 145 assert exc_value is not None 146 self._exc_info = None # remove potential circular references --> 147 raise exc_value.with_traceback(exc_tb) 148 else: 149 self._exc_info = None # remove potential circular references File ~\anaconda3\Lib\site-packages\sqlalchemy\pool\base.py:898, in _ConnectionRecord.__connect(self) 896 try: 897 self.starttime = time.time() --> 898 self.dbapi_connection = connection = pool._invoke_creator(self) 899 pool.logger.debug("Created new connection %r", connection) 900 self.fresh = True File ~\anaconda3\Lib\site-packages\sqlalchemy\engine\create.py:640, in create_engine.<locals>.connect(connection_record) 638 if connection is not None: 639 return connection --> 640 return dialect.connect(*cargs, **cparams) File ~\anaconda3\Lib\site-packages\sqlalchemy\engine\default.py:580, in DefaultDialect.connect(self, *cargs, **cparams) 578 def connect(self, *cargs, **cparams): 579 # inherits the docstring from interfaces.Dialect.connect --> 580 return self.loaded_dbapi.connect(*cargs, **cparams) File ~\anaconda3\Lib\site-packages\psycopg2\__init__.py:122, in connect(dsn, connection_factory, cursor_factory, **kwargs) 119 kwasync['async_'] = kwargs.pop('async_') 121 dsn = _ext.make_dsn(dsn, **kwargs) --> 122 conn = _connect(dsn, connection_factory=connection_factory, **kwasync) 123 if cursor_factory is not None: 124 conn.cursor_factory = cursor_factory UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb8 in position 63: invalid start byte 판다스 버전과 sqlalchemy 버전은 다음과 같이 맞추었습니다 2.0.3 2.0.0

  • sql
  • postgresql
  • dbms/rdbms
  • 퍼포먼스-마케팅
  • 데이터-엔지니어링
KoKuMa 댓글 1 좋아요 0 조회수 2347

JPA 프로젝트 성능테스트 환경 구축 질문있습니다.

실전! 스프링 데이터 JPA

강사님의 강의를 보고 Spring/JPA 토이 프로젝트를 만들고 성능 테스트를 진행해보려고 합니다. 현재 프로젝트는 AWS EC2 프론티어 클라우드 서버에서 구동 중인데, 성능 테스트 시 aws를 이용하게 되면 부담스러운 비용이 발생할까봐 우려되었습니다. 때문에 로컬 환경에서 가상머신을 띄우고 실구동환경의 컴퓨팅 자원과 동일하게 세팅한 뒤 테스트를 진행해보려고 하는데, 이러한 방식으로 진행한 테스트 결과가 실제 서버에 적용할 수 있을만큼 유의미한지 궁금합니다. 질문 읽어주셔서 감사합니다.

  • java
  • spring
  • spring-boot
  • jpa
김민규 댓글 1 좋아요 0 조회수 470

선생님 안녕하세요!

Oracle PL/SQL 딱 이만큼.. [개념+실전]

안녕하세요! 수업 정말 잘듣고 있습니다!! 공부한거를 블로그에 작성 하려하는데 예제 같은 것을 출처를 밝혀 포스팅 해도될까요??

  • sql
  • oracle
  • PL/SQL
고재형 댓글 1 좋아요 0 조회수 505

테스트 환경에서 h2 db 를 사용하는 경우 실용성에 대하여

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

테스트 환경에서 h2 메모리 db 를 사용하는 방식에 대한 실용성 관련 고민이 있습니다. 프로젝트를 진행하다보면 기본적으로 orm 기반으로 구현을 하지만 일부 예외적인 기능들은 특정 dbms 에 의존적인 쿼리를 직접 실행하는 경우가 불가피하게 발생하는 듯 합니다. 이 경우 특정 dbms(예를들어 mysql) 에 대한 의존성이 발생할 수 밖에 없는데요. 이때 운영 dbms 와 다른 메모리 db(h2) 를 사용하여 테스트를 작성하게 불가능해지고 결국엔 실환경과 동일한 테스트용 db 를 세팅하는식으로 다시 변경하게 되는 듯 합니다. (결국 메모리 db 를 이용한 간단한 테스트를 사용할 수 없는 상황) 실무적인 차원에서 이런 경우 보통 어떤 방식으로 해결하는게 최선일지 궁금합니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
JaeWon Lee 댓글 1 좋아요 0 조회수 708

인기 태그

인프런 TOP Writers

주간 인기글