JPA 연결시키고 테스트 코드 돌려보다 여러 에러를 만나게 되었음. 그 중 마지막 에러. 이 에러의 원인은 종속성 관계에 있다고 함. 개인 과제의 예시를 들어보겠음. 문서와 사용자는 N:1 관계임. 문서 테이블의 인스턴스인 기안자(작성자)와 시행자는 사용자 id를 참조하고 있음. 이때 cascade를 통해 종속성 설정을 해두면 기안자(작성자) 저장할 때 사용자 id도 저장됨. 시행자 저장할 때 사용자 id 중복 저장됨. ⚠ 에러 발생! 사용자 id 에 해당하는 entity가 이미 등록된 키 값을 가지고 있기 때문. ✅ 해결 종속설 설정 해제하고 각각을 따로 저장하는 것. 필자의 경우, 기안자(작성자)와 시행자 entity에 @ManyToOne(cascade= CascadeType.PERSIST) 옵션을 ..
스프링 프레임워크의 주요 특징이 있다. 이건 정말 꼭 꼭 꼭 꼭 꼭 기억해야 하는 것. 1. 제어의 역행(IoC, Inversion of Control) - 메서드/객체의 호출 제어권이 사용자가 아닌 프레임워크인 스프링에 있다. (기존) main()처럼 프로그램이 시작되는 곳에 객체 생성-호출함. (IoC) 컨테이너에 객체 생성과 공급을 위임. → 얘가 다 하기 때문에 객체는 어떻게 생성되고, 어떻게 사용되는지 모른다. cf. 제어의 역전이라고도 표현하는 데, 번역의 차이일뿐... 크게 중요하지 않다. 2. 의존성 주입(DI, Dependency Injection) - IoC를 시스템적으로 구현하는 방법 중 하나. - 각 계층이나 서비스 간 의존성 존재할 경우 Bean 설정에 기반해 스프링이 자동으로 연..
기초 4강 정리 1. 이벤트 리스너 사용하는 방법 1) 원하는 버튼에 onClick = { 클릭시 실행할 함수 } 작성 a. 이때, 직접 함수를 작성하거나 ex. 함수명() b. 콜백 함수를 작성할 수 있음. ex. ()=> { 실행할 내용 } - 이걸 많이 사용하는 듯. c. 실제 작성 코드 { 글제목[0] } {} } >👍 0 2월 17일 발행 cf. 직접 함수 작성할 때, 바로 실행하려면 함수명() 버튼 누르면 실행 등과 같이 어떤 동작 다음에 실행이면 ()없애야 함. 2. state 와 결합하여 사용 1) 좋아요 이모티콘을 누를 때마다 추천 수가 증가하게 만들고자 함. ▶ 자주 바뀌는, 중요한 변수 2) import 문 수정 ▶ let [ a, b ] = useState(); 초기값을 0으로 설정..
1. 실행화면 더보기 실행 화면 2. 코드 import React, { useState} from 'react'; import logo from './logo.svg'; import './App.css'; function App() { let [글제목, 글제목변경] = useState(['남자 코트 추천', '강남 우동 맛집', '광교 횟집 추천']); return ( 개발 Blog { 글제목[0] } 2월 17일 발행 { 글제목[1] } 2월 18일 발행 { 글제목[2] } 2월 19일 발행 ); } export default App; 3. 기타 ▶ 터미널에 뜨는 warning - eslint가 잡아주는 문법 체크 사항(변수 써두고 안 사용했어요~ 등) 보기 싫으면 import 보다 위에 eslint-..