일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 트랜잭션
- 상속
- 어노테이션
- @Bean
- github
- 자바
- mysql
- merge
- 의존성주입
- @transactional
- springboot
- 인터페이스
- list
- JVM
- 빈
- spring
- react
- java
- pom.xml
- 깃허브
- 영속성 컨텍스트
- 스프링
- 리액트
- Spring 개발환경 설정
- 객체
- Spring legacy Project
- 자동주입
- 스프링 컨테이너
- 이클립스
- DI
- Today
- Total
목록전체 글 (152)
DEVLOG
useCallback이란? 함수형 컴포넌트에서 사용할 수 있는 React Hook 중 하나이다. 사용 이유 컴포넌트가 리렌더링 되는 조건은 다음과 같다. 1. 자신의 state가 변경되었을 때 2. 자신의 props가 변경되었을 때 3. 부모 컴포넌트가 렌더링될 때 ... 등등 만약 A 컴포넌트의 변화가 B 컴포넌트에는 어떠한 영향도 끼치지 않는데, 위와 같은 이유로 리렌더링이 불필요하게 자주 발생한다면 성능을 저하시키는 원인이 될 것이다. 이처럼 무분별한 리렌더링을 막고 싶다면 useCallback을 사용하면 된다. 특정 함수에 useCallback을 사용하면 최초 렌더링 시 한 번만 생성되므로, 리렌더링 될 때마다 새로 만들지 않고, 재사용할 수 있다는 장점이 있다. 이러한 useCallback을 사..
회사 프로젝트 진행 중, JPA 엔티티 객체 생성 시 new 연산자가 아닌 @Builder 어노테이션을 사용해 생성하는 것을 보고 빌더 패턴에 대해 공부해보려한다. 우선 빌더 패턴과 자주 비교되는 패턴들을 보며 빌더 패턴을 왜 사용해야 하는지 알아보자. 점증적 생성자 패턴 VS 자바빈즈 패턴 VS 빌더 패턴 1) 점증적 생성자 패턴 // 점증적 생성자 패턴 public class Person{ private String name; private int age; private String gender; public Person(String name){ this.name = name; } public Person(String name, int age){ this.name = name; this.age = a..
이 에러는 not null 제약조건 위반을 뜻한다. 나의 경우, Insert 시 시퀀스 전략으로 @GeneratedValue를 사용하였음에도 자동증가가 안되고 null 처리가 되었다. 왜 @GeneratedValue가 먹히지 않는지 디버깅을 하던 중, 복합 키에서는 @GeneratedValue를 사용할 수 없다는 것을 알게 되었다. https://gaemi606.tistory.com/entry/JPA-%EB%B3%B5%ED%95%A9-%ED%82%A4-Composite-Key-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-IdClass JPA | 복합 키 (Composite Key) 사용하기 (@IdClass) JPA에서 식별자(@Id)를 둘 이상 사용하려면 별도의 식별자 클래스를 만..

우선 bind 함수를 알아보기 전에 왜 사용해야 하는지 알아보자. JS를 사용하다보면 함수와 메소드를 접하게 되는데, 이 둘은 언뜻보면 비슷해보이나 엄연히 차이가 있다. 함수를 호출하는 객체가 없는 경우 함수, 함수를 호출하는 객체가 있는 경우 메소드이다. 또한 함수는 직접 호출할 수 있고, 메소드는 점 표기법(ex. 객체.메소드()) 또는 대괄호 표기법 사용으로 호출할 수 있다. (즉, 메소드는 객체와 연결되어 있다.) 메소드 ⊂ 함수 또한, 메소드의 this는 해당 메소드를 호출하는 객체를 가리키며, 함수의 this는 undefined 이다. 그러므로 함수에 this를 주입하려면 아래 예시처럼 bind() 함수를 사용하면 된다.
오늘 배울 내용은 내부 시스템이라 할 수 있는 State이다. 가령 핸드폰의 화면은 컴포넌트이고, 작동하는 기능들은 내부 시스템과 부품에 의해 돌아가는데, 이러한 내부 시스템이 State인 것이다. State는 컴포넌트 안에서 관리되며, 객체지향의 원칙 중 은닉화가 주 목적이다. 즉, 은닉화를 통해 구현과 사용을 철저히 분리함으로써 확장성과 유지보수성을 높일 수 있다. 다음 예제를 통해 State와 props의 사용법을 알아보자. App.js import React, { Component, component } from 'react'; import TOC from "./components/TOC"; // TOC 는 해당 경로에서 가져온다는 의미 import Content from "./components..
근본적인 차이점은 프로그램의 흐름에 대한 제어권한이다. 프레임워크는 프로그램의 흐름에 대한 제어권한이 프레임워크에게 있고, 라이브러리는 흐름에 대한 제어를 하지 않고, 개발자가 필요한 기능을 필요할 때마다 꺼내 사용한다는 점에서 차이가 있다. 프레임워크 대표예시 Vue.js Spring 라이브러리 대표예시 React 자바 클래스 라이브러리

React란? 자바스크립트 라이브러리의 한 종류로 UI(User Interface, 사용자 인터페이스) 라이브러리이다. 즉, 화면을 만들기 위한 기능을 모아놓은 것이라 볼 수 있다. 라이브러리란? 자주 사용되는 기능들을 정리해 모아놓은 것 React 설치를 위해 npm 또는 npx로 create-react-app을 설치하여 개발환경을 구축해야 한다. 공식문서를 읽어보면 npm보다 npx로 설치할 것을 권장하고 있다. 아래 주소로 들어가보자. https://github.com/facebook/create-react-app#create-react-app-- GitHub - facebook/create-react-app: Set up a modern web app by running one command. S..
String과 StringBuffer, StringBuilder는 변화 가능성으로 구분할 수 있다. String은 불변성을 가지며, StringBuffer와 StringBuilder는 가변성을 가진다. StringBuffer와 StringBuilder는 동기화의 유무로 구분할 수 있다. StringBuffer는 동기화 키워드를 지원하며, StringBuilder는 지원하지 않는다. 각 클래스에 대해 자세히 알아보자. String String str = "Hello"; str = str + " world"; System.out.println(str); // Hello world 위 코드를 보면 String의 값이 변경된 것처럼 보이지만 결론부터 말하면 아니다. 문자열 수정 시점에 값이 할당되어 있던 메모리..