πβοΈ κ³μν΄μ μ
λ°μ΄νΈ νκΈ° πβοΈ λ§μ§λ§ μ
λ°μ΄νΈ 2022/03/29 1. Querydsl μ μ μ¬μ©ν κΉ? 2. μλλ°©μ? 3. μμ‘΄μ± 4. Repository ꡬ쑰 5. Projection μ λν κ³ μ°° ... 6. λμ 쿼리 (BooleanBuilder) 7. ExpressionUtils 8. μ λ ¬ νμ
μ λ°λ₯Έ μ λ ¬ μ²λ¦¬ Querydsl μ μ μ¬μ©ν κΉ? JPA λ₯Ό μ¬μ©νλ©΄μ (@Query ν¬ν¨) μ‘°ν κΈ°λ₯μ λν νκ³κ° μλ€. λμ μΈ μΏΌλ¦¬μΈ κ²½μ°μΈλ° μλ₯Ό λ€μ΄ μ£Όλ¬Έ νμ΄μ§λ₯Ό κ²μ νλ€κ³ νμ λ μΉ΄ν
κ³ λ¦¬ or μνλͺ
or κΈ°μ
λͺ
λ±λ±... μΌλ‘ κ²μ μ‘°κ±΄μ΄ λ¬λΌμ§λ λΆλΆμ΄λ€. κ·Έλμ μ¬μ©νκ² λ κ²μ΄ λ°λ‘ Querydsl νλ μμν¬ μ΄λ€. - νμ
체ν¬κ° λ°λ‘ κ°λ₯νλ€ - μλ° μ½λλ₯Ό κΈ°λ°μΌ..
π WEB
μ»΄νμΌκ³Όμ μμ μμ±ν΄ μ£Όλ λ°©μμΌλ‘ λμνλ javaλΌμ΄λΈλ¬λ¦¬μ
λλ€. @Value κΈ°λ³Έμ μΌλ‘ λΆλ³κ°μ²΄λ‘ λ§λ€μ΄μ€λ€. classμ μ μΈνλ©΄ μλμ μ΄λ
Έν
μ΄μ
μ΄ κΈ°λ³Έμ μΌλ‘ ν¬ν¨λλ€. @Getter @AllArgsConstructor @ToString @EqualsAndHashCode @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) νμ§λ§ @Setter λ ν¬ν¨λμ§ μλλ€. μλνλ©΄ κΈ°λ³Έμ μΌλ‘ λΆλ³μ±μ 보μ₯νκΈ° λλ¬Έμ setterλ₯Ό μλ΅νλ κ²μ λΉμ°νλ€ @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) λ privateμ΄λ final μ μ¬μ©ν μ μκ² ν΄μ€λ€. μ΅μ’
μ μΌλ‘ @Value ..
μ€λ λνμ μμ
μ²λ¦¬μ μ¬μ©λλ μ€λ λλ₯Ό μ νλ κ°μλ§νΌ μ ν΄ λκ³ μμ
νμ λ€μ΄μ€λ μμ
λ€μ νλμ© μ€λ λκ° λ§‘μ μ²λ¦¬νλ€. λ³λ ¬ μμ
μ²λ¦¬κ° λ§μμ§λ©΄ μ€λ λ κ°μκ° μ¦κ°λλλ° κ·Έμ λ°λ₯Έ μ€λ λ μμ±, μ€μΌμ€λ§μΌλ‘ μΈν΄ CPUκ° λ°λΉ μ Έ λ©λͺ¨λ¦¬ μ¬μ©λμ΄ λμ΄λλ€. λ°λΌμ μ ν리μΌμ΄μ
μ μ±λ₯μ΄ μ ν λλ―λ‘ μ€λ λ νμ μ¬μ©νμ¬ μ€λ λ μ 체 κ°μκ° λμ΄λμ§ μλλ‘ ν΄μΌνλ€. μ€λ λν μμ± public class ExecutorExample { public static void main(String[] args) { // 1κ°μ μ€λ λλ₯Ό μ¬μ©νλ μ€λ λν μμ± ExecutorService singleThread = Executors.newSingleThreadExecutor(); // μ€λ λλ₯Ό μ ν μμ΄ μ¬..
λ°λͺ¬ μ€λ λ μ£Ό μ€λ λμ μμ
μ λλ 보쑰μ μΈ μν μ μννλ μ€λ λμ
λλ€. κ·Έλ κΈ° λλ¬Έμ μ£Ό μ€λ λκ° μ’
λ£λλ©΄ λ°λͺ¬ μ€λ λλ κ°μ μ μΌλ‘ μλ μ’
λ£λ©λλ€. μ μ© μλ‘λ μλ μ μ₯, κ°λΉμ§ 컬λ ν° λ±μ΄ μλλ° μ΄ κΈ°λ₯λ€μ μ£Ό μ€λ λκ° μ’
λ£λλ©΄ κ°μ΄ μ’
λ£λ©λλ€. λ°λͺ¬ μ€λ λ λ΄μ©μ μμ±ν΄μ€ ν public class DaemonThread extends Thread{ public void save(){ // μλ μ μ₯ } public void run(){ save(); } } λ©μΈ μ€λ λμμ setDaemon μ ν΄μ£Όλ©΄ λλ€. public class mainThread(){ public static void main(String[] args){ DaemonThread daemonThread = new Dae..
μ€λ λλ μ€νλκΈ° μνμ μ€ν μνλ₯Ό λ²κ°μκ°λ©΄μ μμ μ run() λ©μλλ₯Ό μ‘°κΈμ© μ€νν©λλ€. κ·Έ ν λμ΄μ μ€νν μ½λκ° μμ λ μ’
λ£ μνκ° λ©λλ€. μ€λ λ κ°μ²΄ μμ± -> start() -> μ€νλκΈ°(μ€μΌμ€λ§μΌλ‘ μΈν΄) μ€ν -> μ’
λ£ - μ€λ λ μ€μΌμ€λ§μΌλ‘ μ νλ μ€λ λκ° cpuλ₯Ό μ μ νκ³ run() λ©μλλ₯Ό μ€ννλ€ (μ€ν μν) - μ€λ λ μ€μΌμ€λ§μ μν΄ λ€μ μ€νλκΈ° μνλ‘ λμκ° μ μλ€.(μ€νλκΈ° μν) μ΄λ»κ² μ μ΄ν κΉ? 1. μ£Όμ΄μ§ μκ°λμ μΌμ μ μ§ sleep() μ€ν μ€μΈ μ€λ λλ₯Ό μΌμ μκ° λ©μΆ μ μκ² νλ€. Thread ν΄λμ€μ μ μ λ©μλμΈ sleep() μ μ¬μ©νλ€. Thread.sleep(1000) // 1μ΄ -> λ°λ¦¬μΈμ»¨λ (1/1000) λ¨μ * μ£Όμ΄μ§ μκ°μ΄ λκΈ°μ ..
λκΈ°ν λ©μλμ λκΈ°ν λΈλ‘ λ©ν°μ€λ λ νλ‘κ·Έλ¨μμλ μ€λ λλ€μ΄ κ°μ²΄λ₯Ό 곡μ ν΄μ μμ
ν΄μΌ νλ κ²½μ°κ° μλ€. μ€λ λaκ° μ¬μ©νλ κ°μ²΄λ₯Ό bμ μν΄ μνκ° λ³κ²½ λ μ μμ΄μ aκ° μλνλ κ²°κ³Όμ λ¬λΌμ§ μ μκΈ° λλ¬Έμ μ¬μ©μ€μΈ μ€λ λμ μμ
μ΄ λλ λκΉμ§ κ°μ²΄μ μ κΈμ κ±Έμ΄ λ€λ₯Έ μ€λ λκ° μ¬μ©ν μ μλλ‘ ν΄μΌ νλ€. λ¨ νλμ μ€λ λλ₯Ό μ€ννλ μκ³ μμμ λ§λ€μ΄μ£Όλ©΄ λλ€. -> μ€λ λκ° κ°μ± λ΄λΆμ λκΈ°ν λ©μλ λλ λΈλ‘μ λ€μ΄κ°λ©΄ μ¦μ κ°μ²΄μ μ κΈμ κ±Έμ΄ λ€λ₯Έ μ€λ λκ° μμμ μλ μ½λλ₯Ό μ€ννμ§ λͺ»νλλ‘ νλ€. λ©μλ μ€ν μ’
λ£ λλ©΄ μ κΈμ΄ νλ¦°λ€. μ¬μ©λ°©λ²μ μλμ κ°λ€ public synchronized void method(){ // μκ³ μμ } μΌλΆ λ΄μ©λ§ λ§λ€κ³ μΆλ€λ©΄ μλμ κ°μ΄ λΈ..
λ©ν° νλ‘μΈμ€κ° μ ν리μΌμ΄μ
λ¨μμ λ©ν° νμ€νΉμ΄λΌλ©΄ λ©ν° μ€λ λλ μ ν리μΌμ΄μ
λ΄λΆμμμ λ©ν° νμ€νΉμ΄λΌκ³ λ³Ό μ μλ€. λ©ν° μ€λ λλ λ€μν κ³³μμ μ¬μ©λλ€. 1. λμ©λ λ°μ΄ν°μ μ²λ¦¬ μκ°μ μ€μ΄κΈ° μν΄ λ°μ΄ν°λ₯Ό λΆν ν΄μ λ³λ ¬λ‘ μ²λ¦¬νλ κ³³μμ μ¬μ© 2. UIλ₯Ό κ°μ§κ³ μλ μ ν리μΌμ΄μ
μμ λ€νΈμν¬ ν΅μ μ νκΈ° μν΄ μ¬μ© 3. λ€μ ν΄λΌμ΄μΈνΈμ μμ²μ μ²λ¦¬νλ μλ²λ₯Ό κ°λ°ν λ - λ©μΈ μ€λ λ λ©μΈ μ€λ λκ° μμ
μ€λ λλ³΄λ€ λ¨Όμ μ’
λ£λλλΌλ μμ
μ€λ λκ° κ³μ μ€ν μ€μ΄λ©΄ νλ‘μΈμ€λ μ’
λ£λμ§ μλλ€. - μμ
μ€λ λ λͺ κ°μ μμ
μ λ³λ ¬λ‘ μ€νν μ§ κ²°μ νκ³ κ° μμ
λ³λ‘ μ€λ λλ₯Ό μμ±νλ€. (μμ
1) (μμ
2) (νλ‘κ·Έλ¨μμ λ³λ ¬λ‘ μ€νν μμ
μ κ²°μ ) -> λ©μΈμ€λ λ μ€λ λ1 μ€λ λ2 Threadν΄..
userStateλ³΄λ€ λ λ€μν μ»΄ν¬λνΈ μν©μ λ°λΌ λ€μν μνλ₯Ό λ€λ₯Έ κ°μΌλ‘ μ
λ°μ΄νΈ ν΄ μ£Όκ³ μΆμ λ μ¬μ©νλ Hook 리λμλ νμ¬ μν, κ·Έλ¦¬κ³ μ
λ°μ΄νΈλ₯Ό μν΄ νμν μ 보λ₯Ό λ΄μ μ‘μ
κ°μ μ λ¬λ°μ μλ‘μ΄ μνλ₯Ό λ°ννλ ν¨μμ΄λ€.(μλ‘μ΄ μνλ₯Ό λ§λ€ λλ λ°λμ λΆλ³μ±μ μ§μΌ μ£Όμ΄μΌ νλ€) μμ λ‘ μ¬λ¬ μΈνμ μνλ₯Ό μ μ₯ν΄λ΄
μλ€! import React,{useReducer} from 'react'; function reducer(state,action){ retunr{ ...state, [action.name] = action.value }; } μ°μ μμ κ°μ΄ reducer ν¨μλ₯Ό μμ±ν©λλ€. 1. ...stateλ κΈ°μ‘΄μ μλ state κ°λ€μ λ³΅μ¬ μν€λκ²κ³Ό κ°μ΅λλ€. 2. actio..
import React, { Component } from 'react'; class LifeCycleSample extends Component{ state={ error:false, number:0, color:null, } myRef = null; // μ»΄ν¬λνΈλ₯Ό λ§λ€ λ μ²μμΌλ‘ μ€νλλ€. // μ΄κΈ° stateλ₯Ό μ νλ€. constructor(props){ super(props); console.log('constructor'); } // propsλ‘ λ°μ μ¨ κ°μ stateμ λκΈ°νμν€λ μ©λ // μ»΄ν¬λνΈκ° λ§μ΄νΈλ λ, μ
λ°μ΄νΈλ λ νΈμΆ static getDerivedStateFromProps(nextProps,prevState){ console.log('getDerivedStateFrom..
νλ‘μ Teamμ μν΄μλ Member λ₯Ό μ‘°νν μ TeamκΉμ§ μ‘°νν νμκ° μμκΉ? λΉμ§λμ€ λ‘μ§μμ νμνμ§ μμ λκ° μλλ° νμ Teamμ ν¨κ» μ‘°ννλ€λ©΄ λλΉκ° λ°μλλ€. μ΄ λλΉλ₯Ό νμ§ μκΈ° μν΄ νλ‘μλΌλ κ° λ©°μΌλ‘ ν΄κ²°νλ€. - μ€μ ν΄λμ€λ₯Ό μμ λ°μμ λ§λ€μ΄μ§κΈ° λλ¬Έμ κ² λͺ¨μμ΄ κ°λ€ - μ¬μ©νλ μ
μ₯μμλ μ§μ§, κ°μ§ κ°μ²΄μΈμ§ ꡬλΆνμ§ μκ³ μ¬μ©νλ©΄ λλ€. - νλ‘μ κ°μ²΄λ μ€μ κ°μ²΄μ μ°Έμ‘°λ₯Ό λ³΄κ΄ -> νλ‘μ κ°μ²΄λ₯Ό νΈμΆνλ©΄ νλ‘μ κ°μ²΄λ μ€μ κ°μ²΄μ λ©μλ νΈμΆ em.find() : λ°μ΄ν°λ² μ΄μ€λ₯Ό ν΅ν΄μ μ€μ μν°ν° κ°μ²΄ μ‘°ν em.getReference() : λ°μ΄ν°λ² μ΄μ€ μ‘°νλ₯Ό 미루λ κ°μ§(νλ‘μ) μν°ν° κ°μ²΄ μ‘°ν // νΈμΆν μκ° μΏΌλ¦¬ μ€ν Member findMember..
μμκ΄κ³ 맀ν κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ μμ κ΄κ³κ° μλ€.(μνΌνμ
μλΈνμ
κ΄κ³λΌλ λͺ¨λΈλ§ κΈ°λ²μ΄ κ°μ²΄ μμκ³Ό μ μ¬νλ€) μνΌνμ
μλΈνμ
λ
Όλ¦¬ λͺ¨λΈμ μ€μ 물리 λͺ¨λΈλ‘ ꡬννλ λ°©λ² 1. κ°κ° ν
μ΄λΈλ‘ λ³ν -> μ‘°μΈ μ λ΅ (μ μ) - ν
μ΄λΈ μ κ·ν - μΈλ ν€ μ°Έμ‘° λ¬΄κ²°μ± μ μ½μ‘°κ±΄ νμ© κ°λ₯ - μ μ₯κ³΅κ° ν¨μ¨ν - μ‘°νμ μ‘°μΈμ λ§μ΄ μ¬μ© -> μ±λ₯ μ ν, μ‘°ν μΏΌλ¦¬κ° λ³΅μ‘ν¨ - λ°μ΄ν° μ μ₯μ INSERT μΏΌλ¦¬κ° 2λ² νΈμΆ λλ€. λΉμ§λμ€μ μΌλ‘ μ€μνκ³ λ³΅μ‘ν λ μ ν! λΆλͺ¨ ν΄λμ€ μ€μ @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn μμ ν΄λμ€ μ€μ -> dtypeμ νμλ μ΄λ¦μ μ ν΄ μ€ κ²½μ° @DiscriminatorVa..
μ°κ΄κ΄κ³ 맀νμ κ³ λ €μ¬ν 3κ°μ§ 1. λ€μ€μ± 2. λ¨λ°©ν₯, μλ°©ν₯ 3. μ°κ΄κ΄κ³μ μ£ΌμΈ - κ°μ²΄ μλ°©ν₯ κ΄κ³λ μ°Έμ‘°κ° 2κ΅°λ° μκΈ° λλ¬Έμ λμ€ ν
μ΄λΈμ μΈλ ν€λ₯Ό κ΄λ¦¬ν κ³³μ μ§μ ν΄μΌν¨ - μΈλ ν€λ₯Ό κ΄λ¦¬νλ μ°Έμ‘° - μ£ΌμΈμ λ°λνΈ : μΈλ ν€μ μν₯μ μ£Όμ§ μμ, λ¨μ μ‘°ν λ€λμΌ[N:1] κ°μ₯ λ§μ΄ μ¬μ©ν¨ λ¨λ°ν₯ μλμ κ°μ΄ [N]μμ μΈλ ν€λ₯Ό κ΄λ¦¬νκ³ Teamμ μ‘°ν νκ³ μΆκ°ν μ μλ€. Teamμ μλ μ‘°ννμ§ λͺ»ν¨ -> Teamμμ Memberμ μ‘°ννλμΌμ΄ λΉλ²νλ€κ³ νλ©΄ -> μλ°ν₯ μΌλ‘ 맀νν΄μ£Όλκ² μ’μ. μλ°ν₯ λ¨λ°ν₯μμ TEAMμ΄ MEMBERλ₯Ό mapped by λ₯Ό μΆκ°νμ¬ MEMBERλ₯Ό μ‘°νν μ μλ€. (μ½κΈ° μ μ©) μΌλλ€[1:N] 1μ΄ μ°κ΄κ΄κ³μ μ£ΌμΈμ΄λ€. λ¨λ°©ν₯ TEAM μμ..