inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

MemberForm에서는 Setter가 강제되는건가요??

미해결

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

안녕하세요! 강의 도중 궁금한 점이 생겨 질문드립니다. form의 입력값들을 객체에 세팅할 때 setter를 쓰는걸로 알고있습니다! 아래 코드 처럼요 < input type ="text" th :field =" *{ name } "> -> memberForm.setName(input의 입력값); 영한님이 setter를 열어두는 것은 위험하다고 하셨는데 form 태그에 들어가는 정보와 관련된 필드를 가진 객체를 사용할 때는 setter를 반드시 열어둬야 하는건가요? MemberForm의 @Setter를 지우고 실행하면 form 필드의 값이 전부 null이 찍힙니다!

  • 웹앱
  • spring
  • spring-boot
  • java
  • JPA
나 좀 도와줘요 댓글 1 좋아요 0 조회수 438

system.out.println 에러

미해결

실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌

강의 중 나오는 선언 태그 내 system.out.println~ 구문에서 에러가 발생합니다. page 지시어로 java.lang.* 을 추가했는데도 실행이 안되네요 ㅠㅠ 왜 이럴까요.. Type Exception Report Message JSP를 위한 클래스를 컴파일할 수 없습니다.: Description The server encountered an unexpected condition that prevented it from fulfilling the request. Exception org.apache.jasper.JasperException: JSP를 위한 클래스를 컴파일할 수 없습니다.: JSP 파일 [/jspEx.jsp]의 [22] 행에서 오류가 발생했습니다. System.out cannot be resolved to a type 19: ArrayList<String> list = new ArrayList<String>(); 20: 21: public void jspMethod() { 22: System.out.println("-- jspMethod() --"); 23: } 24: %> 25:

  • java
  • jsp
cobogsil 댓글 2 좋아요 0 조회수 2404

제가 맞게 이해한건지 잘 모르겠습니다.

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Q1. IDENTITY 전략에서만 예외적으로, persist() 호출 직후 바로 insert 쿼리가 전달되어, DB에 데이터가 저장된다고 설명해주셨는데요, 이때 DB에 저장한 직후 동시에 그 DB에 넣은 Entity를 영속성 컨텍스트의 1차 캐시에도 넣고, insert 시DB에 생성된 PK를 가져와서 영속성 컨텍스트 안에 해당 Entity를 관리하는데 사용하는게 맞을 까요 ? Q2. ppt 32p 를 보면 allocaitonSize 속성 부분에서 "데이터베이스 시퀀스 값이 하나씩 증가하도록 설정되어 있으면 이 값을 반드시 1로 설정해야 한다" 라고 나와있는데요, 수업 내용과 같이 이 allocationSize 값 만큼 한번에 DB에 id를 할당하기 때문에 , DB에 할당되어야 할 id값을 1나씩 증가하도록 설정해야 하는 상황이라면, 이 값을 1로 설정해야 한다 라고 이해하였습니다. 그런데 ppt에 나온것과 같이 데이터베이스 시퀀스 값이 하나씩 증가하도록 설정해야 하는 특별한 상황이 따로 있는지 궁금합니다.

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

실무에서도 계층형 빌더가 자주 쓰이나요?

미해결

이펙티브 자바 완벽 공략 1부

뭔가 보면서도 '저렇게 까지 빌더를 써야하나?' 라는 생각이 들어서 궁금해서 여쭤봅니다. 실무에서 계층형 빌더가 자주 쓰이나요??

  • 이펙티브자바
  • java
  • 빌더
dataworld 댓글 1 좋아요 3 조회수 547

생성자가 이해가 안가요..

미해결

Do it! 자바 프로그래밍 입문 with 은종쌤

public Student() { korea = new Subject(); math = new Subject(); } 이게 어떤..역할인건지.. 왜 빈 괄호를 붙이는지 이해가 안가요 ㅠ

  • java
밍밍이 댓글 2 좋아요 0 조회수 316

(응용) 프로젝트 진행 전 상수-Constants 구성 에 관한 질문입니다.

해결됨

스프링과 JPA 기반 웹 애플리케이션 개발

자주 쓰이고, 오타가 날법한 String 을 모아 아래 처럼 상수화 했습니다. 상수패키지 com.studyolle.core.constant.* 이후 Controller , Test 등에서 아래와 같이 사용중입니다. 질문입니다 Enum 으로 관리 하려고 했지만, 컨트롤러-핸들러 의 @GetMapping( Enum.URI.name() ) 과같은 선언도 불가능 하고, 단순 값 참조를 Enum .name() 이라던지, Enum .custom() 과 같이 덕지덕지 메서드가 붙게되어, 심플하게 하고자, Enum 은 사용하지 않았습니다. 그러나 이렇게 static final 필드 로 관리하다보면, 언젠가 양이 많아 질탠데, 이럴 경우는 또다시 나누어야 될거라 생각이 듭니다만.. 이런 일반적인 방식 보다 효과적으로 관리하는 ( Map 을 쓴다던지, 특정 패턴이라던지) 방법이 있을까요? 상수 관리는 이런 방향이 괜찮았다.. 라는 사례가 궁금합니다. 읽어주셔서 감사합니다.

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

플러시에 대한 정리

미해결

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

안녕하세요. 맨 마지막에 플러시 정리해주실 때 설명이 헷갈려서 질문드립니다. 플러시는 트랜잭션 단위로 동작하기 때문에 '커밋 직전'에만 변경 내역을 DB에 날려주면 된다고 하셨는데요, 앞서 배운 그림 자료는 commit() 호출 -> flush() 호출 -> 쿼리가 날아감 인 것 같은데 커밋 직전에 변경 내역을 날린다는 게 무슨 의미인지 궁금합니다.

  • java
  • JPA
도던 댓글 2 좋아요 1 조회수 436

주문 목록 검색 컨트롤러에서 @ModelAttribute가 적용된 orderSearch 질문

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요! 주문 목록 검색 요청을 처리하는 OrderController의 orderList() 메서드 관련 질문이 있습니다. 제가 findOrders()내부 findAllByString() 로직을 이해한게 아니여서, orderList()메소드가 이런식으로 동작하는게 맞는지 궁금합니다. 이 메소드는 다음의 3가지 상황에 의해 호출 될 것 같은데요, 1. 상품 주문 화면에서 상품 주문 후, 주문을 처리하는 order() 메소드에 의한 리다이렉션 요청을 받을 때 2. 홈 화면에서 순수하게 주문 내역을 클릭하였을 때 3. 주문 내역 화면에서, 회원명 or 주문상태를 조건으로 하여 검색할 때 그래서 상황 1,2와 같은 경우에는 모든 주문 내역을 다 보여주고, 상황 3의 경우에는 조건에 따른 주문내역만을 보여주도록 동작해야 할 것 같습니다. 이때 실제 코드에서는 OrderService의 findOrders() 메소드 호출만으로 위 3가지 상황을 모두 커버하고 있는데요, 그렇게 되면 () 상황 1,2의 경우에는 orderList()의 @ModelAttribute orderSearch에 null이 대입되어 모든 주문 내역이 다 조회되는 것 같습니다. 그리고 상황 3의 경우에는 선택한 조건에 따른 orderSearch 객체가 form태그에 의해 요청파라미터로 념겨져와서, orderList()의 파라미터 중 orderSearch가 받아 조건에 따른 주문 내역이 조회되는 것 같은데, 제가 맞게 이해한건지 궁금합니다. 그리고 특히 상황 3의 경우 선택한 회원명or주문상태에 따른 orderSearch객체를, form태그가 생성하여 보내주는 것이 맞는지 궁금합니다. 긴 질문 읽어주셔서 감사합니다!

  • spring-boot
  • java
  • 웹앱
  • JPA
  • spring
kkt169 댓글 1 좋아요 0 조회수 392

entity에 비지니스 로직 관련 질문입니다.

미해결

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

안녕하세요 강사님! 이번 강의에서 addStock함수와 removeStock 함수를 entity에 작성하셨는데요. 응집력 측면에서 해당하는 entity에 함수에 관련된 로직들을 넣는 건 이해했습니다. 여기서 궁금한건 테스트 코드인데요 저렇게 entity에 로직이 들어가면 해당 로직도 테스트 코드를 작성해야 할거 같거든요. 일반적으로 서비스에 비지니스 로직을 넣고 여러 함수들이 생기면 테스트클래스를 작성해서(ex. SampleService -> SampleServiceTest) 각 함수들을 테스트하는 테스트 코드를 짜는데요. 단위테스트를 할 때 외부 디펜던시(ex. db 등)를 끊고 해당 기능만 테스트 하는게 좋다고 배웠습니다. 그럼 Service에 있는 함수는 함수대로 테스트하고, 엔티티에 있는 함수들은 그거대로 또 따로 테스트를 작성해야 할 거 같은데 현업에서는 엔티티도 테스트를 작성하는 건가요? 아래처럼요 public class ItemTest { @Test public void removeStockTest() { //given //when itemEntity.removeStockTest() //then } }

  • 웹앱
  • spring
  • spring-boot
  • JPA
  • java
서꾸리 댓글 1 좋아요 0 조회수 742

19강 3:34초처럼 나오질 않네요 디버그창에

미해결

작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지

run-edit configurations 왼쪽 상단+ 눌러서 python 체크- 스크립트 패스 프래그매틱 -venv-scripts 파라미터 runserver 한다음 매니지파이 우클릭 디버깅(무당벌레) 누르면 원래 python manage.py runserver 한것처럼 127:0:0:1:8000 이런거 터미널 창에 안뜨는데. 사이트는 들어가지긴 해요 여기서 빈칸에 test 입력한다음 post 누르면 3:34초 처럼 디버그 창에 아무것도 안뜨네요 ㅠㅠ 그리고 디버깅 실행 눌르면 무담벌레 점 잠깐 찍혔다가 사라지네요

  • docker
  • django
  • python
coding corgi 댓글 0 좋아요 0 조회수 304

Filter의 처리 순서에 관한 질문

미해결

스프링 시큐리티

안녕하세요. 학습내용을 복습하던중 질문이 있습니다. <p>DelegatingFilterProxy</p> 와 <p>FilterChainProxy</p> 의 요청 처리 흐름을 <p>DispatcherServlet</p>을 포함하여 설명하는 그림에서 질문이 있습니다. <p>FilterChainProxy</p>가 직접 <p>DispatcherServlet</p>에 요청을 하는 것이 맞나요? 제 생각에는 첨부한 그림과 같은 실행 순서가 되야 할 것 같습니다. <p>FilterChainProxy</p>가 인증 인가 처리를 마친 후 직접 <p>DispatcherServlet</p>에 요청을 날리게 되면 <p>Servlet Container</p>의 필터 Filter 체인 실행에 문제가 있을 것 같습니다.

  • Spring Security
  • spring-boot
  • java
득윤 댓글 1 좋아요 2 조회수 543

int j = 0

미해결

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

안녕하세요. 강의를 듣던 중 궁금한 점이 생겨 질문을 남깁니다. int j =0 을 for문 조건에 초기화 하지 않고 for문 밖에 초기화를 하면 안쪽 for문이 끝나고 다시 바깥쪽 for문을 돌 때에 마지막 j의 값이 그대로 넘어가게 되는 것 맞나요?

  • java
  • 코테 준비 같이 해요!
김동현 댓글 1 좋아요 0 조회수 517

크롤링 중 list index out of range 에러 도움 부탁드립니다

미해결

제가 작성한 코드는 아닙니다 크롤링 하는 와중에 list index of range 에러가 나오는데 해결법을 못 찾아서 질문드립니다.. from urllib.request import urlopen from bs4 import BeautifulSoup from xml.dom.pulldom import END_DOCUMENT import pandas as pd import requests from bs4 import BeautifulSoup from datetime import datetime import re from tqdm import tqdm from tqdm.contrib.concurrent import process_map import math from time import sleep from multiprocessing.dummy import Pool import multiprocessing as mp from multiprocessing.pool import MaybeEncodingError start_date = "y1=2019&m1=09&d1=25" end_date = "y2=2019&m2=09&d2=30" url = "https://find.mk.co.kr/new/search.php?pageNum={}&cat=&cat1=&media_eco=&pageSize=10&sub=all&dispFlag=OFF&page=news&s_kwd=%BB%EF%BC%BA%C0%FC%C0%DA&s_page=news&go_page=&ord=1&ord1=1&ord2=0&s_keyword=%BB%EF%BC%BA%C0%FC%C0%DA&period=p_direct&s_i_keyword=%BB%EF%BC%BA%C0%FC%C0%DA&s_author=&{}&{}&ord=1&area=ttbd" def get_list(idx) : #idx = 검색했을때 page 번호 req = requests.get(url.format(idx, start_date, end_date)) #한글깨져서 인코딩 soup = BeautifulSoup(req.content.decode('euc-kr','replace'), 'html.parser') div_list = soup.find_all('div', {'class' : 'sub_list'}) art_list = [i.find('span', {'class': 'art_tit'}) for i in div_list] #db에 저장할거 title, href, body, date df = pd.DataFrame(columns = {'title','href', 'date','body'}) for article in art_list: append_flag = True title = str(article.find("a").contents[0]) href = str(article.find("a")["href"]) body_text = None date = None try: req = requests.get(href, timeout=2) except requests.exceptions.Timeout as errd: print("Timeout Error : ", errd) except requests.exceptions.ConnectionError as errc: print("Error Connecting : ", errc) except requests.exceptions.HTTPError as errb: print("Http Error : ", errb) # Any Error except upper exception except requests.exceptions.RequestException as erra: print("AnyException : ", erra) try: soup = BeautifulSoup(req.content.decode('euc-kr','replace'), 'html.parser') except: print("parser error") date_text = soup.find('li', {'class' : 'lasttime'}) if not date_text : date_text = soup.find('li', {'class' : 'lasttime1'}) if date_text : match = re.search(r'\d{4}.\d{2}.\d{2}', date_text.string) if match : date = datetime.strptime(match.group(), '%Y.%m.%d').date() else : print("match none") else : append_flag = False #print("mssing date text") art_text = soup.find('div', {'class' : 'art_txt'}) if not art_text : art_text = soup.find('div', {'class' : 'article_body'}) if not art_text : art_text = soup.find('div', {'class' : 'view_txt'}) if art_text : body_text = art_text.get_text() else : append_flag = False #print("mssing body text") #print("link : " + href) if append_flag : temp = pd.DataFrame({'title' : [ title ], 'href' : [ href ], 'date' : [ date ], 'body' : [body_text]}) df = df.append(temp) return df def get_count() : req = requests.get(url.format(1, start_date, end_date)) #한글깨져서 인코딩 soup = BeautifulSoup(req.content.decode('euc-kr','replace'), 'html.parser') count_text = soup.find('span', {'class' : 'class_tit'}).get_text().replace(",","") art_count = re.search("\d+",count_text) "y1=2019&m1=03&d1=15" print(start_date[3:7]+"년 "+start_date[11:13]+"월 "+start_date[17:]+"일 부터 " +end_date[3:7]+"년 "+end_date[11:13]+"월 "+end_date[17:]+"일 까지 총 " +art_count.group(0)+"개의 기사") return art_count.group(0) if __name__ == "__main__": count = get_count() tasks_count = math.ceil(float(count)/20) + 1 #tasks = range(1,10) tasks = range(1,tasks_count) result_list = process_map(get_list, tasks,max_workers=4) df = pd.concat(result_list) #df = pd.concat(parmap.map(get_list, tasks, pm_pbar = True, pm_processes = 4)) print(df) file_name = start_date[5:7]+start_date[11:13]+start_date[17:]+"_"+end_date[5:7]+end_date[11:13]+end_date[17:] df.to_csv(file_name+'.csv', index = False, encoding='utf-8-sig') ------------------------------------------------------------------------------------------------------------------------------------------------------ 코드는 이렇구요 _RemoteTraceback Traceback (most recent call last) _RemoteTraceback : """ Traceback (most recent call last): File "/home/ubuntu/anaconda3/envs/python3/lib/python3.6/concurrent/futures/process.py", line 175, in _process_worker r = call_item.fn(*call_item.args, **call_item.kwargs) File "/home/ubuntu/anaconda3/envs/python3/lib/python3.6/concurrent/futures/process.py", line 153, in _process_chunk return [fn(*args) for args in chunk] File "/home/ubuntu/anaconda3/envs/python3/lib/python3.6/concurrent/futures/process.py", line 153, in <listcomp> return [fn(*args) for args in chunk] File "<ipython-input-7-167ab35f9166>", line 22, in get_list title = str(article.find("a").contents[0]) IndexError: list index out of range """ The above exception was the direct cause of the following exception: IndexError Traceback (most recent call last) <ipython-input-7-167ab35f9166> in <module> () 96 #tasks = range(1,10) 97 tasks = range ( 1 , tasks_count ) ---> 98 result_list = process_map ( get_list , tasks , max_workers = 4 ) 99 df = pd . concat ( result_list ) 100 #df = pd.concat(parmap.map(get_list, tasks, pm_pbar = True, pm_processes = 4)) /home/ubuntu/anaconda3/envs/python3/lib/python3.6/site-packages/tqdm/contrib/concurrent.py in process_map (fn, *iterables, **tqdm_kwargs) 128 tqdm_kwargs = tqdm_kwargs . copy ( ) 129 tqdm_kwargs [ "lock_name" ] = "mp_lock" --> 130 return _executor_map ( ProcessPoolExecutor , fn , * iterables , ** tqdm_kwargs ) /home/ubuntu/anaconda3/envs/python3/lib/python3.6/site-packages/tqdm/contrib/concurrent.py in _executor_map (PoolExecutor, fn, *iterables, **tqdm_kwargs) 74 map_args . update ( chunksize = chunksize ) 75 with PoolExecutor ( ** pool_kwargs ) as ex : ---> 76 return list ( tqdm_class ( ex . map ( fn , * iterables , ** map_args ) , ** kwargs ) ) 77 78 /home/ubuntu/anaconda3/envs/python3/lib/python3.6/site-packages/tqdm/notebook.py in __iter__ (self) 255 def __iter__ ( self ) : 256 try : --> 257 for obj in super ( tqdm_notebook , self ) . __iter__ ( ) : 258 # return super(tqdm...) will not catch exception 259 yield obj /home/ubuntu/anaconda3/envs/python3/lib/python3.6/site-packages/tqdm/std.py in __iter__ (self) 1183 1184 try : -> 1185 for obj in iterable : 1186 yield obj 1187 # Update and possibly print the progressbar. /home/ubuntu/anaconda3/envs/python3/lib/python3.6/concurrent/futures/process.py in _chain_from_iterable_of_lists (iterable) 364 careful not to keep references to yielded objects . 365 """ --> 366 for element in iterable : 367 element . reverse ( ) 368 while element : /home/ubuntu/anaconda3/envs/python3/lib/python3.6/concurrent/futures/_base.py in result_iterator () 584 # Careful not to keep a reference to the popped future 585 if timeout is None : --> 586 yield fs . pop ( ) . result ( ) 587 else : 588 yield fs . pop ( ) . result ( end_time - time . monotonic ( ) ) /home/ubuntu/anaconda3/envs/python3/lib/python3.6/concurrent/futures/_base.py in result (self, timeout) 430 raise CancelledError ( ) 431 elif self . _state == FINISHED : --> 432 return self . __get_result ( ) 433 else : 434 raise TimeoutError ( ) /home/ubuntu/anaconda3/envs/python3/lib/python3.6/concurrent/futures/_base.py in __get_result (self) 382 def __get_result ( self ) : 383 if self . _exception : --> 384 raise self . _exception 385 else : 386 return self . _result --------------------------------------------------------------------------------------------------------------------- 이렇게 에러가 뜹니다 title = str(article.find("a").contents[0]) 이 부분에서 contents가 존재하지 않는데 인덱스로 접근하려고 해서 오류가 난 것 같은데 contents가 무조건 존재 하는게 아니라면 존재하지 않는 경우의 예외처리를 추가하려면 어떻게 해야될까요? 어느 위치에 뭐라고 작성해야 할지 몰라서 막막해서 질문드립니다

  • python
  • crawling
Co Di 댓글 0 좋아요 0 조회수 633

질문이욤

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 기본편

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. import requests from bs4 import BeautifulSoup import openpyxl fpath = r'C:\Users\Lenovo\Desktop\content\참가자_data.xlsx' wb = openpyxl.load_workbook(fpath) ws=wb.active #현재 활성화된 시트 선택 codes = ["000660","035720","005930"] row=2 for code in codes: url=f"https://finance.naver.com/item/sise.naver?code={code}" response = requests.get(url) html=response.text soup=BeautifulSoup(html,'html.parser') price=soup.select_one("#_nowVal").text price=price.replace(',','') print(price) ws=[f'B{row}']=int(price) row=row+1 wb.save(fpath) cannot assign to f-string expression 이런 에러가 뜨면서 작동이 안됩니다 ㅜㅜ

  • 웹-크롤링
  • python
댓글 1 좋아요 1 조회수 305

질문이요 ㅠㅠ

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 기본편

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강의 잘 듣고있습니다 다름이 아니라 엑셀부분을 코드 짜고 실행하면 엑셀 파일은 만들어지는데 안에 데이터셀이 텅 비어있습니다...ㅠㅠ

  • 웹-크롤링
  • python
댓글 1 좋아요 1 조회수 186

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 조회수 1414

클래스의 로드 시점

미해결

코딩으로 학습하는 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 조회수 943

중첩함수 질문 수정

미해결

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. def nested_func(num): #1 def func_in_func(num): #2 print(num) #3 print("In func") #4 func_in_func(num + 100) #5 nested_func(100) #6 수업 중 중첩함수에 관한 내용에서 #6를 먼저 받고 #1로 돌아가 num에 100이 입력된다는 것은 이해했습니다. 그런데 그다음에 #2로 가서 num에 100이 입력되지 않고 바로#4로 간다는 부분이 잘 와닿지 않습니다. 왜그렇게 되는건가요?

  • python
가나다라 댓글 4 좋아요 0 조회수 300

인기 태그

인프런 TOP Writers

주간 인기글