묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
Controller 안에서 @Transaction 설정이 다른 2개의 method 호출
@Slf4j @RestController public class AController { @Autowired AService aService; @Autowired BService bService; @PostMapping("/api/v2/aaaa") public ResponseEntity<ResponseDto> postA( @RequestBody @Valid PostADto postADto, HttpServletRequest request) throws Exception { A a = aService.getA(request); HashMap<String, Object> result = bService.createB(postADto, a); .... }위 와 같이 컨트롤러에서 aService.getA(request); 와 bService.createB(postADto, user); 메서드를 호출합니다.각 메서드는 아래와 같이 선언돼있습니다.@Transactional(readOnly = true) public A getA(HttpServletRequest request) { .... return aRepository.findById(id).orElse(null); }@Transactional public HashMap<String, Object> createB(PostADto postADto, A a) { ...... bRepository.save(postADto.toB()); ...... return ...; }getA 메서드안에서 TransactionSynchronizationManager.isCurrentTransactionReadOnly(); log 출력했을때 readonly = true로 나오고 readDB로 잘 연결됩니다. 하지만 createB 메서드안에서 TransactionSynchronizationManager.isCurrentTransactionReadOnly(); log 출력했을때 readonly = false로 나오는데 실제로는 readDB로 연결되고 query를 발생시켜 아래와 같은 오류가 발생합니다.Caused by: java.sql.SQLException: The MySQL server is running with the --read-only option so it cannot execute this statement at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) Caused by: java.sql.SQLException: The MySQL server is running with the --read-only option so it cannot execute this statement 컨트롤러에 @transactional 을 선언하지 않았기 때문에 각 메서드에서 트랜잭션이 수행되어 getA 메서드에서는 readDB로 createB 메서드에서는 writeDB로 요청이 된다고 알고 있었는데 그런 방식으로 동작이 안되 혼란스럽습니다. 어떤 이유로 이런 문제가 발생하는지 궁금합니다. 그리고 왜 이렇게 동작하는지 어느 부분을 학습하면 좋은지 궁금합니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
@Transactional 내부에서 트랜젝션 템플릿이 사용되나요
@Transactional 내부에서도 결국 트랜젝션 템플릿을 사용해서 트랜젝션 처리를 하는지 궁금합니다!
-
해결됨실전! 스프링 데이터 JPA
파라미터로 받은 form을 어떻게 엔터티로 반환하는지 모르겠어요...
현재 실전 데이터 JPA수강 중인데요.. 독학 중이라 토이프로젝트로 연습하는데 오늘까지 배운 JpaRepository 상속과 관련하여 회원가입 기능 구현하려 하려는데 어디 물어볼곳이 없고 뒤죽박죽이라 정리가 필요해서 장문의 질문을 남깁니다.. 일단 제가 머릿속에 정리가 안되는 것은 영한선생님께서 최대한 컨트롤러에 엔터티를 노출하지 말고 비지니스 로직을 서비스에서 최대한 구현하라고 해서 따라하는 중인데 Member를 기준으로 파라미터를 받을 MemberForm을 생성했습니다. 여기서 질문이.. MemberForm을 생성했으면 MemberDto는 따로 생성 안해도 될까요?컨트롤러를 그림과 같이 작성하였고서비스는 아래와같이 하였는데... 뭔가 서비스에서 엔터티를 직접 만지니까 찝찝한데 실무에서도 이렇게 하는지 궁금합니다..
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
10 자릿수의 합 관련 질문
안녕하세요, 강사님. 10번 자릿수의 합 문제 관련해서 작은 질문이 있습니다.각 자리수의 합은 당연히 0보다 클 수밖에 없기 때문에 max의 값을 0으로 하고 문제를 풀었는데요.-2147000000 대신 0으로 해도 무방할까요?
-
미해결프로젝트로 배우는 Vue.js 3
x-total-count 및 db.json id값 문제
x-total-count가 undefined로 나옵니다 ㅠㅠ무슨 일일까요.. 그리고..db.json - id값 문제,,uuid로 들어가는 거 같은데,,,또 id값이 스트링으로 또 들어가네요ㅠㅠ ***혹시 몰라서 저렇게 x-total-count 추가해놓긴했는데페이징 번호 눌러도 첫번째 페이지말고는 데이터를 가져오질 않네요..깃허브에 올려놓으신 코드 봐도 x-total-count 헤더에 추가한 코드말고는 다른 게 없습니다. &버전차이일까요? node.js 일부러 낮은 버전 설치하면 json-server가 node랑 버전이 안맞는다고 안돌아가더라고요. 그래서 node 버전을 LTS최신버전으로 설치하긴했는데.. const getTodos = async (page = currentPage.value) => { currentPage.value = page; try { const res = await axios.get( `http://localhost:3000/todos?_page=${page}&_limit=${limit}` ); const total = await axios.get('http://localhost:3000/todos'); //전체 리스트 가져오기 const totalList = total.data.length; //가져온 전체리스트의 길이 res.headers.set("Access-Control-Expose-Headers", "x-total-count"); res.headers.set( "x-total-count", totalList ) //그냥..어거지로 만들어 줌.. console.log(res.headers["x-total-count"]) numberOfTodos.value = res.headers["x-total-count"]; console.log(res.data) todos.value = res.data; } catch (err) { console.log(err); error.value = 'Something went wrong!'; } }
-
미해결스프링 핵심 원리 - 기본편
웹 서버
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Tomcat started on port(s): 8080 (http) with context path '' Started CoreApplication in 0.914 seconds (JVM running for 1.528) 이라는 메시지가 나와야 하는데, 똑바로 gradle에도 implementation 'org.springframework.boot:spring-boot-starter-web'을 넣고 실행을 했는데, Whitelavel Error page가 뜨지 않고 접속할 수 없다고 뜹니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepositoryTest에서 실행안됨..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의를 따라 코드를 실행하던 중 MemberRepositoryTest을 실행하면 에러가 나서 질문드립니다! https://drive.google.com/file/d/1N_7Rt-XDX3zNRHNy6JwiBLG7H2-23TLP/view?usp=sharing
-
해결됨React + GPT API로 AI회고록 서비스 개발 (원데이 클래스)
왜 {import.meta.env.VITE_SOME_KEY} 가 적용이 안될까요 ㅠㅠ
/src/.env 파일에 VITE_SOME_KEY = 123이렇게 설정하고, App.jsx에 function App() { return(<>{import.meta.env.VITE_SOME_KEY} <Counter/> </> )}export default App;이렇게 설정했습니다. 근데 왜 화면엔 123이 출력이 안되는 걸 까요 ㅠ? 오류 메시지도 없고..강의랑 똑같이 했는데 왜 안나올끼요 ..
-
미해결실무자를 위한 구글애널리틱스(GA4+GTM) 활용법(25년 Update)
실무에 적용할 때 unknown 값이 너무 많아 신뢰할 수 없을 때
실무에 적용할 때 unknown 값이 너무 많아 신뢰할 수 없을 때, 어떻게 조금이나마 개선해서 풀어낼 수 있을까요?실제DB의 값과 애널리틱스에 수집되는 인구통계 정보를 연결시켜주는 작업이 가능한가요?아니면 unknown 측정 비중을 줄일 수 있는 방법이 없을까요?
-
해결됨[R을 R려줘] R 데이터 시각화
unique 함수 처리 결과
다음과 같이 csv 데이터를 불러오고 unique(df$지역) 함수를 실행했는데 강의에서와 다르게 "타시도", "강동구", "서초구"만 출력되는데 이유가 있을까요?df = read.csv("Seoul_COVID19_20210511.csv", fileEncoding = "cp949") head(df, 2) head(df[, 1:6], 2) unique(df$지역)
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타임리프 param 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]타임리프 뷰 템플릿에서 param을 통하여 쿼리 파라미터에 입력된 값에 접근할 수 있다는 사실을 알고 있습니다실습해본 결과 param을 통해서 name , age와 같은 단순 타입들만 받을 수 있었는데 컨트롤러에서 @ModelAttribute의 기능과 같이 타임리프에서 객체를 파라메터로 받을 수 있는 방법이 있나요?
-
미해결리눅스 입문 - 개념으로 탄탄히!!
버추얼 박스에서 설치가 안돼요
일부러 버추얼 박스 버전은 6.1.18 r142142 버전으로 했고요.우분투 이미지는 ubuntu-20.04.6-desktop-amd64이거 썼습니다.버추얼 박스에서 돌리니 위에처럼 설치가 멈춰 버리네요...
-
미해결[리뉴얼] 처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part2]
Bayesian Optimization에서 optimizer.maximize()함수를 더이상 지원 안한다고 합니다.
- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. import numpy as np from xgboost import XGBClassifier from bayes_opt import BayesianOptimization from sklearn.model_selection import cross_val_score pbounds = { 'learning_rate': (0.01, 0.5), 'n_estimators': (100, 1000), 'max_depth': (3, 10), 'min_child_weight': (0, 10), 'subsample': (0.5, 1.0), 'colsample_bytree': (0.5, 1.0) # 'reg_lambda': (0, 1000), # 'reg_alpha': (0, 1.0) } def lgbm_hyper_param(learning_rate, n_estimators, max_depth, min_child_weight, subsample, colsample_bytree): max_depth = int(max_depth) n_estimators = int(n_estimators) clf = LGBMClassifier( max_depth=max_depth, min_child_weight=min_child_weight, learning_rate=learning_rate, n_estimators=n_estimators, subsample=subsample, colsample_bytree=colsample_bytree, random_state=1 # reg_lambda=reg_lambda, # reg_alpha=reg_alpha ) return np.mean(cross_val_score(clf, train_importance, train_answer, cv=5, scoring='accuracy')) # cv 도 숫자로 작성하여, 내부적으로 (Stratified)KFold 사용함 optimizer = BayesianOptimization( f=lgbm_hyper_param, pbounds=pbounds, verbose=1, random_state=1) optimizer.maximize(init_points=10, n_iter=100, acq='ei', xi=0.01) 위 코드를 실행하면 아래와 같은 에러가 발생합니다.--------------------------------------------------------------------------- Exception Traceback (most recent call last) Cell In[44], line 34 31 return np.mean(cross_val_score(clf, train_importance, train_answer, cv=5, scoring='accuracy')) # cv 도 숫자로 작성하여, 내부적으로 (Stratified)KFold 사용함 33 optimizer = BayesianOptimization( f=lgbm_hyper_param, pbounds=pbounds, verbose=1, random_state=1) ---> 34 optimizer.maximize(init_points=10, n_iter=100, acq='ei', xi=0.01) File ~\miniconda3\Lib\site-packages\bayes_opt\bayesian_optimization.py:288, in BayesianOptimization.maximize(self, init_points, n_iter, acquisition_function, acq, kappa, kappa_decay, kappa_decay_delay, xi, **gp_params) 286 old_params_used = any([param is not None for param in [acq, kappa, kappa_decay, kappa_decay_delay, xi]]) 287 if old_params_used or gp_params: --> 288 raise Exception('\nPassing acquisition function parameters or gaussian process parameters to maximize' 289 '\nis no longer supported. Instead,please use the "set_gp_params" method to set' 290 '\n the gp params, and pass an instance of bayes_opt.util.UtilityFunction' 291 '\n using the acquisition_function argument\n') 293 if acquisition_function is None: 294 util = UtilityFunction(kind='ucb', 295 kappa=2.576, 296 xi=0.0, 297 kappa_decay=1, 298 kappa_decay_delay=0) Exception: Passing acquisition function parameters or gaussian process parameters to maximize is no longer supported. Instead,please use the "set_gp_params" method to set the gp params, and pass an instance of bayes_opt.util.UtilityFunction using the acquisition_function argument "set_gp_params" method을 사용하라고 하는데gpt에 물어봐도 제대로 된 코드를 주지 않아서 어려움이 있습니다. 제가 설치한 라이브러리는 아래 목록과 같습니다..Package Version ---------------------------- ------------ absl-py 2.1.0 anyio 3.5.0 archspec 0.2.1 argon2-cffi 21.3.0 argon2-cffi-bindings 21.2.0 asttokens 2.0.5 astunparse 1.6.3 async-lru 2.0.4 attrs 23.1.0 Babel 2.11.0 bayesian-optimization 1.4.3 beautifulsoup4 4.12.2 bleach 4.1.0 boltons 23.0.0 Brotli 1.0.9 cachetools 5.3.2 certifi 2023.11.17 cffi 1.16.0 charset-normalizer 2.0.4 colorama 0.4.6 comm 0.1.2 conda 23.11.0 conda-content-trust 0.2.0 conda-libmamba-solver 23.12.0 conda-package-handling 2.2.0 conda_package_streaming 0.9.0 contourpy 1.2.0 cryptography 41.0.7 cv 1.0.0 cycler 0.12.1 debugpy 1.6.7 Note: you may need to restart the kernel to use updated packages. decorator 5.1.1 defusedxml 0.7.1 distro 1.8.0 executing 0.8.3 fastjsonschema 2.16.2 flatbuffers 23.5.26 fonttools 4.47.2 gast 0.5.4 google-auth 2.26.2 google-auth-oauthlib 1.2.0 google-pasta 0.2.0 grpcio 1.60.0 h5py 3.10.0 idna 3.4 ipykernel 6.25.0 ipython 8.20.0 ipywidgets 8.0.4 jedi 0.18.1 Jinja2 3.1.2 joblib 1.3.2 json5 0.9.6 jsonpatch 1.32 jsonpointer 2.1 jsonschema 4.19.2 jsonschema-specifications 2023.7.1 jupyter 1.0.0 jupyter_client 8.6.0 jupyter-console 6.6.3 jupyter_core 5.5.0 jupyter-events 0.8.0 jupyter-lsp 2.2.0 jupyter_server 2.10.0 jupyter_server_terminals 0.4.4 jupyterlab 4.0.8 jupyterlab-pygments 0.1.2 jupyterlab_server 2.25.1 jupyterlab-widgets 3.0.9 keras 2.15.0 kiwisolver 1.4.5 libclang 16.0.6 libmambapy 1.5.3 lightgbm 4.3.0 Markdown 3.5.2 MarkupSafe 2.1.3 matplotlib 3.8.2 matplotlib-inline 0.1.6 menuinst 2.0.1 mistune 2.0.4 ml-dtypes 0.2.0 nbclient 0.8.0 nbconvert 7.10.0 nbformat 5.9.2 nest-asyncio 1.5.6 notebook 7.0.6 notebook_shim 0.2.3 numpy 1.26.3 oauthlib 3.2.2 opencv-python 4.9.0.80 opt-einsum 3.3.0 overrides 7.4.0 packaging 23.1 pandas 2.2.0 pandocfilters 1.5.0 parso 0.8.3 pillow 10.2.0 pip 23.3.2 platformdirs 3.10.0 pluggy 1.0.0 ply 3.11 prometheus-client 0.14.1 prompt-toolkit 3.0.43 protobuf 4.23.4 psutil 5.9.0 pure-eval 0.2.2 pyasn1 0.5.1 pyasn1-modules 0.3.0 pycosat 0.6.6 pycparser 2.21 Pygments 2.15.1 pyOpenSSL 23.2.0 pyparsing 3.1.1 PyQt5 5.15.10 PyQt5-sip 12.13.0 PySocks 1.7.1 python-dateutil 2.8.2 python-json-logger 2.0.7 pytz 2023.3.post1 pywin32 305.1 pywinpty 2.0.10 PyYAML 6.0.1 pyzmq 25.1.0 qtconsole 5.5.0 QtPy 2.4.1 referencing 0.30.2 requests 2.31.0 requests-oauthlib 1.3.1 rfc3339-validator 0.1.4 rfc3986-validator 0.1.1 rpds-py 0.10.6 rsa 4.9 ruamel.yaml 0.17.21 scikit-learn 1.4.0 scipy 1.12.0 Send2Trash 1.8.2 setuptools 68.2.2 sip 6.7.12 six 1.16.0 sniffio 1.3.0 soupsieve 2.5 stack-data 0.2.0 tensorboard 2.15.1 tensorboard-data-server 0.7.2 tensorflow 2.15.0 tensorflow-estimator 2.15.0 tensorflow-intel 2.15.0 tensorflow-io-gcs-filesystem 0.31.0 termcolor 2.4.0 terminado 0.17.1 threadpoolctl 3.2.0 tinycss2 1.2.1 tornado 6.3.3 tqdm 4.65.0 traitlets 5.7.1 truststore 0.8.0 typing_extensions 4.7.1 tzdata 2023.4 urllib3 1.26.18 wcwidth 0.2.5 webencodings 0.5.1 websocket-client 0.58.0 Werkzeug 3.0.1 wheel 0.41.2 widgetsnbextension 4.0.5 win-inet-pton 1.1.0 wrapt 1.14.1 xgboost 2.0.3 zstandard 0.19.0 궁극적인 질문은앞으로 파이썬은 계속 업데이트가 될텐데 그때마다어디를 찾아봐야하는지 어떻게 검색해야하는지에 관해서도 알려주시면 감사하겠습니다..
-
미해결
ec2 스프링 https 적용 (feat. 도메인 적용)
안녕하세요 웹 프로젝트 진행 중 궁금한 점이 생겨 질문드립니다.react와 spring으로 개발을 진행하였고 둘다 ci/cd 적용을 해서 배포를 해둔 상태입니다! 문제상황프론트는 도메인을 구입하여 https가 적용된 상태벡엔드는 Ec2에서 돌아가고 있어 탄력적 ip만 사용하여 http만 적용해결방법프론트 도메인이 xxx.com이고 도메인을 하나 더 구입하여(xxx.net) 서버가 돌고 있는 ec2와 연결해 aws acm을 사용해 https가 적용되도록 하였습니다.궁금한 점프로젝트가 끝난 후 찾아보니 xxx.com(프론트 도메인)에 서브 도메인을 등록하여서 백엔드 로드벨런서를 적용하면 api.xxx.com을 백엔드 도메인으로 사용이 가능한 것으로 이해했는데 맞을까요?서브 도메인 말고 하나의 도메인으로 프론트와 백엔드를 처리하는 방법이 있을까요?실제로 많이 사용하는 서버가 올라가져 있는 ec2에 https를 적용하는 방법은 무엇인지 궁금합니다
-
해결됨사수 없이 디자이너가 성장하는 법
디스코드 초대장 링크 오류
안녕하세요. 디스코드 링크를 타고 들어가니[올바르지 않은 초대장-만료된 초대장이거나 참가 권한이 없어요.] 라고 뜹니다. 어떻게 해야 하나요?
-
해결됨한 입 크기로 잘라먹는 타입스크립트(TypeScript)
터미널..
터미널에 src/index.ts 이렇게 작성해서 index.js파일이만들어졌습니다. 그런데 index.js파일이 빈파일입니다.아무런 내용이 없는데, 왜그런걸까요..?ㅠㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2559수열문제 관련해서 질문이 있습니다.
i 는 1부터 시작해서 n까지 누적합을 구하는공식은 이해가됐는데그 이후에 for(int i=k; i<n; i++){ret = max(ret, psum[i] - psum[i - k]; 이부분에 대해서 그림으로 그려보려고 해도 잘 이해가 되지 않습니다..개념 강의를 참고해도 쉽지않네요혹시 이부분에 대해서 그림으로 설명 부탁드려도 될까요 -학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결Vue로 Nodebird SNS 만들기
실습 환경 문의(Node 버전)
안녕하세요.실습을 위해서 Node 버전은 어떤 버전을 설치 해야 할까요 ?최신 버전을 받아서 설치하니 에러가 있어서, 답변바랍니다.
-
미해결김영한의 실전 자바 - 기본편
super-생성자
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.상속을 했을 때, 메소드의 경우에는 호출하는 클래스에 따라서 (만약 자식클래스로 호출했을 때에는) 자식 인스턴스에 가서 확인한 후, 없으면 부모로 올라가서 호출을 하는데, 첫번 째 질문 : 생성자의 경우에는 부모 먼저 호출이 되는지 이해가 잘 안갑니다.그리고 만약 new ClassC()를 호출을 했을 때, new CLassC()의 인스턴스가 생성이 되는데, '두번째 질문 : 이때 ClassC에는 ClassB를 상속하고 있어서 ClassB도 인스턴스가 생성이 되어야 되어야 한다 라고 이해하면 될는건가요>
-
미해결
db의 데이터를 엑셀양식템플릿으로 출력하는 강의도 포함되어 있는지?
mysql에 회계데이터를 입력해 두고 표준 엑셀양식 템플릿(이력서, 근로계약서)에 많은 량의 출력을 하는 업무자동화프로그램을 만들려고 하는데 이 강의가 도움이 될까요? 한글에서 엑셀로 데이터를 옮기는 강의는 있는데 db에서 양식 템플릿으로 링크하는 부분은 없어 보여서요? 있다면 어떤강의인지?