영속성은 어떻게 관리될까? 영속성 컨텍스트 (Persistence Context) --영속성(Persistence)은데이터를 프로그램이 종료되더라도 유지할 수 있도록 저장하는 개념으로일반적으로 애플리케이션에서 중요한 데이터를 DB나 파일 시스템 같은 영구 저장소에 저장하여,시스템이 재시작되거나 장애가 발생해도 데이터를 유지할 수 있도록 한다. 영속성 컨텍스트는 JPA에서 엔티티 객체를 관리하고, 트랜젝션이 끝나면 변경 사항을 DB에 반영한다.굳이 해석하면 "엔티티를 영구 저장하는 환경"이다. 엔티티의 생명 주기비영속 (new / Transient)영속 (Persistent)준영속 (Detached)삭제 (Removed) 비영속과 준영속은 비슷해 보이지만단 한 번이라도 영속성 컨텍스트에..
최대공약수와 최소공배수는 어떻게 구할까? 유클리드 호제법 (Euclidean Algorithm) --유클리드 호제법은두 수의 최대공약수(GCD)를 효율적으로 구하는 알고리즘이지만,해당 최대공약수(GCD)를 이용해서 최소공배수(LCM)도 쉽게 구할 수 있기 때문에둘 다 구하는 알고리즘이라고도 할 수 있다. 정확히는두 정수의 최대공약수(GCD)를 구하는 효율적인 알고리즘으로두 수의 최대공약수를 구할 때, 나눗셈을 반복적으로 수행하여 나머지가 0이 될 때까지 계산하는 방법이다.-- 최대공약수 (GCD) --공식 위 공식을 이용하여r = 0이 될 때 B가 최대공약수(GCD)가 된다. 증명A / B = q + r=> A = B * q + rA > B 가정q = 몫r = 나머지 GCD(A, B) ..
스프레드와 디스트럭쳐링은 무엇일까? 스프레드 (Spread) --스프레드는기존의 객체를 가지고 복사, 확장, 병합, 덮어쓰기를 하여 새로운 객체를 만들 수 있다. 스프레드 연산자는 (...)다. 예시 코드// 객체 복사const person = { name: "Alice", age: 25 };const copyPerson = { ...person };console.log(copyPerson); // { name: "Alice", age: 25 }console.log(copyPerson === person); // false (완전히 새로운 객체)// 객체 확장 (새로운 속성 추가)const person = { name: "Alice", age: 25 };const newPerson = { ....
클래스는 어떻게 사용할까? 클래스 --클래스를프로토타입의 Syntacitc Sugar라고 부르기도 한다.(Syntacitc Sugar = 복잡한 문법을 보다 사용하기 편하게 만든 것) 예전에는생성자 함수와 프로토타입을 사용하여 지금의 클래스와 비슷한 기능을 수행했지만해당 방법은 다른 언어들의 객체지향 방식과는 다르기 때문에 클래스 방식이 생겼다.(단, 생성자 함수와 클래스의 동작이 완전 동일하지는 않다.) 클래스 작성 형식class 클래스명 { 필드명: 값; ... constructor (매개변수1, ...) { // 생성자 this.필드명 = 값; ... } 메서드() { ... }} 예시코드class car { c..
객체는 무엇이며 어떻게 관리할까? 객체 --객체라는 용어는 매우 포괄적이지만자료형의 관점에서는 키(key)와 값(value)으로 구성된 속성(프로퍼티)의 집합이다. 객체는 기본 자료형과는 다르게여러 개의 값을 가질 수 있고 서로 다른 자료형의 값도 가질 수 있다. 기본 형식const 객체명 = { // 속성(프로퍼티) 키1: 값1, 키2: 값2}; 예시 코드// 빈 객체const person = {};const person = { name: "gildong" };const person = { name:["Hong", "AN"], // 배열 age:20, // 숫자 isAdult:true ..
JPA는 어떻게 설정할까? 의존성 추가 (Gradle) --build.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // JPA 라이브러리 implementation 'org.postgresql:postgresql' // 사용할 DB}-- application.yml (또는 application.properties) 설정 --application.ymlspring: datasource: url: jdbc:postgresql://localhost:5432/mydatabase # 연결할 DB url username: myuser #..
함수는 어떻게 사용할 수 있을까? 함수 선언 --함수는어떤 목적을 가지고 작성한 코드를 모아 둔 블록문으로호이스팅이 되기 때문에 함수를 밑에 선언하더라도 위에서 해당 함수에 접근할 수 있다. 기본 형식 (네이밍 함수)// 함수 선언하기function 함수명 (입력값) { // 수행할 일 return 반환값 // 반환할 값이 존재한다면 사용 (선택사항)}// 함수 호출하기함수명(입력값);return문은메서드에서 수행한 값을 외부로 반환할 때 사용된다. 예시 코드function add(x, y) { return x + y;}let z = add(2, 3); // z = 2 + 3;console.log(z); // 5function gugudan() { for(let i = 1; i 위 ..
AOP는 무엇인가? AOP (Aspect-Oriented Programming) --AOP는관점 지향 프로그래밍으로비즈니스 로직과 상관없는 공통 기능을 분리하여재사용성과 유지보수성을 높이는 프로그래밍 기법이다. 이는 OOP(객체 지향 프로그래밍)에서 해결하기 어려운 공통 기능의 중복 문제를 해결하는 데 유용하다. 공통 기능이란"횡단 관심사 (Cross-cutting Concerns)"를 말하고여러 모듈이나 클래스에서 공통으로 필요하지만 해당 모듈 자체의 핵심 기능과는 직접적으로 관련이 없는 기능을 의미한다.(ex. 로깅) 예시 상황m1(), m2(), ... 라는 자판기 관련 메서드가 존재 (m1 = 커피 자판기 메서드, m2 = 음료 자판기 메서드, m3 = ...)m1(), m2(), ...