| ⚡ 지연로딩 실무에서 모든 연관관계는 지연로딩을 사용해라. 실무에서 즉시 로딩을 사용하지 마라. JPQL fetch 조인이나, 엔티티 그래프 기능을 사용해라 @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) public abstract class Item { @Id @GeneratedValue private Long id; private String name; private int price; } @Entity public class Member extends BaseEntity { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME..
⚡ 클로저(closure) 클로저(closure)라는 개념은 내부 함수가 외부함수의 스코프(범위)에 접근할 수 있는 것을 말한다. 📝 예제 function outer() { var a = 'A'; var b = 'B'; function inner() { var a = 'AA'; console.log(b); } return inner; } var outerFunc = outer(); outerFunc(); // B 해당 코드에서 inner() 함수의 스코프가 outer()함수의 스코프를 참조하고 있고 outer()의 실행이 끝나고 소멸된 이후에도 inner() 함수가 outer() 함수의 스코프에 접근할 수 있는 것을 클로저라고 한다
자바스크립트는 동적언어이다. 타입은 프로그램이 처리되는 과정에서자동으로 파악한다. ⚡ let, const 사용하는 이유 ES6 이후로 var 대신 되도록 const, let을 사용해야 한다. 그 이유는 var의 변수 호이스팅과 function-level-scope로 생기는 문제 때문이다. 1. 호이스팅(Hoisting) 이란? console.log(puppy); var puppy ="cute"; console.log(puppy) //결과 undefined cute puppy변수를 아직 선언하지 않은 상태에서 호출했는데 오류가 나지 않고 undefined라는 값을 반환한다. 이런 현상을 "호이스팅"이라고 한다. 변수 호이스팅(Hoisting)은 변수의 선언과 초기화가 동시에 이루어져, 아직 값이 없음에도 ..
⚡ 프록시 객체는 객체그래프로 연관된 객체들을 탐색한다. 그런데 객체가 데이터베이스에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA는 이러한 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시는 연관된 객체를 처음부터 데이터베이스에서 조회하는 것이 아니라, 실제 사용하는 시점에 데이터베이스에서 조회할 수 있다. 하지만 자주 함께 사용하는 객체들은 조인을 사용해서 함께 조회하는 것이 효과적이다. JPA는 즉시로딩과 지연 로딩이라는 방법으로 둘을 지원한다. JPA는 연관된 객체를 함께 저장하거나 함께 삭제할 수 있는 영속성 전이와 고아 객체 제거라는 편리한 기능을 제공한다. ⚡ 프록시의 특징 프록시 객체는 처음 사용할 때 한 번만 초기화 된다. 프록시 객체를 초기화 할 때, 프록시 객체..
| 다대일 단반향 package hellojpa; import javax.persistence.*; @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public..
목표: 상속 관계 매핑과 @MappedSuperclass 알아보기 💡 상속 관계 매핑 관계형 데잍터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 가장 유사하다. 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현할 때는 3가지 방법을 선택할 수 있다. 조인전략 : 각각을 모두 테이블로 만들고 조회할 때 조인을 사용한다 단일 테이블 전략 : 테이블을 하나만 사용해서 통합한다 구현 클래스마다 테이블 전략 : 서브 타입마다 하나의 테이블을 만든다. 1.조인전략 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의기본 키를 받아서 기본키+외래키 로 사용하는 전략이다. 객체는 타입으로 구분할 수 있지만 테이블은 ..
점심시간에 방문한 지리산 약초장어 수서 오피스 건물 뒤쪽으로 걸어가다보면 약초장어가 보인다. 약초장어 발견 입구안에 있는 장식품이 눈에 띈다. 룸들이 많아서 회식 때 와도 괜찮을 것 같다. 우리는 장어구이 솥밥 정식을 주문. 반찬이 맛있엇다. 특히 부추!! ㅈ 장어가 노릇노릇한게 맛있어 보인다! 사이드로 나온 된장찌개
윤건릉 근처에 있는 해장국집 "해장촌" 화성에서 집으로 가는 길에 발견한 "해장촌" 맛있는 녀석들에 방송되었다고해서 방문을 해보았다. 윤건릉 앞쪽에 위치해있다. 주차를 하고 입구에서 한 컷 맛있는 녀석들에 방송된게 맞는 것 같음 김치는 셀프! 먹음직 스러운 해장국 배고파서 그런지 군침이 돈다!!!!! 포장도 가능!
🔗 문제 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 💡 힌트 우선순위 큐 이론 참조 Java 우선순위 큐(Priority Queue) 와 Comparable, Comparator – Jihun's Development Blog (cjh5414.github.io) 💻 코드 package org.kyhslam.DoItAlgorithm.ch02; import java.io.BufferedReader; import java...
문제 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 코드 package org.kyhslam.DoItAlgorithm.ch02; import java.util.Arrays; import java.util.Scanner; import java.util.Stack; public class p17298 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = ..
Feign Client REST Call을 추상화 한 Spring Cloud Netflix 라이브러리 이다. 사용방법 호출하려는 HTTP Endpoint에 대한 Interface를 생성 @FeignClient 선언 Load Balanced 지원 참조 - https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/ Spring Cloud OpenFeign Feign is a declarative web service client. It makes writing web service clients easier. To use Feign create an interface and annotate it. It has pluggable ann..
User-Service > UserServiceApplication.java @LoadBalaned를 붙이면 Microservice의 name으로 사용할 수 있다. 그러면 url이 바꿔도 따로 바꿔줄 필요가 없다 @SpringBootApplication @EnableDiscoveryClient public class UserServiceApplication { public static void main(String[] args) { SpringApplication.run(UserServiceApplication.class, args); } @Bean public BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } ..