Backend/πΏ Spring(35)
-
[JPA] @ManyToOne - PKκ° μλ νλλ₯Ό μ°Έμ‘°ν λ (feat.referencedColumnName)
κ°μ @ManyToOne μ°κ΄κ΄κ³μμ pk κ° μλ κ°μ μ°Έμ‘°ν λ κ²ͺμ λ¬Έμ λ₯Ό κΈ°λ‘νμ΅λλ€. κΈ°μ‘΄μλ μ°κ΄κ΄κ³λ₯Ό λ§Ίμ§ μκ³ FKλ₯Ό λ¨μ String μΌλ‘ μ°Έμ‘°νκΈ° λλ¬Έμ λ ν μ΄λΈμ κ°λ¨ν μ‘°μΈνμ¬ μνλ κ²°κ³Όλ₯Ό μ»μ μ μμμ΅λλ€. νμ§λ§ μ°κ΄κ΄κ³λ₯Ό λ§Ίκ³ FK μ νμ μ String μμ Entityλ‘ λ³κ²½νμ λ, μνλ κ²°κ³Όλ₯Ό λ°ν λ°μ μ μμμ΅λλ€. λ¬Έμ μ μμΈκ³Ό ν΄κ²° λ°©λ²μ νμ΄ μ€λͺ ν΄λ³΄κ² μ΅λλ€. λ¬Έμ μν© Hospital μν°ν°μμ Address μν°ν°λ₯Ό μ°Έμ‘°νλ addressCode λΌλ Foreign Key κ° μμ΅λλ€. μ νν λ§νλ©΄ FK μ²λΌ μ¬μ©νλ €κ³ μ μΈν addressCode νλκ° μμ΅λλ€. μ΄μ΄μκ²λ ν΄λΉ νλμ νμ μ Address λ‘ μ μΈνμ§ μκ³ , String μΌλ‘ μ§..
2022.09.02 -
[Spring] Shedlock μΌλ‘ μ€μΌμ₯΄λ§ μ μ΄νκΈ°
λͺ©μ°¨ μλ‘ Shedlock μ΄λ? λ³Έλ‘ Shedlock μ¬μ©μ μν νλ‘μ νΈ μ€μ Shedlock μ μ¬μ©νμ λ / μ¬μ©νμ§ μμ λ λΉκ΅ κ²°λ‘ μμ½ μλ‘ 2λμ λμΌν μλ² μΈμ€ν΄μ€λ₯Ό λμ΄ (Scale-out) μν©μ κ°μ ν΄λ³΄μ. μλ²μ μΌμ μ£ΌκΈ°λ‘ λ©μΌμ λ°μ‘νλ μ€μΌμ₯΄λ¬κ° μλ€. 2λμ μΈμ€ν΄μ€μ μ€μΌμ₯΄λ¬κ° λμμ μλνλ€λ©΄, λκ°μ λ©μΌμ΄ 2λ²μ© λ°μ‘λλ μν©μ΄ λ°μνλ€. λκ°μ λ©μΌ 2λ² λ°λκ² λμλκ³ ν μ μμ§λ§, μλ²κ° 2λλ³΄λ€ λ§λ€λ©΄? λκ°μ λ©μΌμ μ¬λ¬ λ² λ°λκ²μ μ°¨μΉνλλΌλ, μλ² μ μ₯μμλ μ€λ³΅λλ μμ μ μννλ κ²μ΄κΈ° λλ¬Έμ 리μμ€ λλΉλ₯Ό μ€μ¬μΌνλ€. Shedlock μ΄λ? shedlock λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ©΄, λμΌν μ€μΌμ₯΄λ¬κ° μ€λ³΅ λμνλ κ²μ λ°©μ§ν μ μλ€. 곡μλ¬Έ..
2022.08.14 -
IntelliJ μ€νλ§λΆνΈ μλ² 2λ μ΄μ μ€ννλ λ²
μΈν 리μ μ΄μμ μ€νλ§λΆνΈλ₯Ό μ€νν λ, n(>=2) λ μ΄μμ μλ²λ₯Ό μ€νν κ²½μ°κ° μλ€. 1. Edit Configurarions ν΄λ¦ νμλ μ΄λ―Έ 2λμ μλ²λ₯Ό μμ±ν΄λ μνμ΄λ€. 2. '+' λ²νΌ ν΄λ¦ ν Springboot μ ν 3. κΈ°μ‘΄ μλ² μ 보λ₯Ό μ°Έμ‘°νμ¬ νκ²½ μ€μ μ ν΄μ€λ€. μ€μν μ μ VM options μ -Dserver.port=8081 μ μ λ ₯ν΄μ€μΌνλ€. κΈ°μ‘΄ ν¬νΈκ° 8080 μ΄λΌ κ²ΉμΉμ§ μκ²λ§ μ λ ₯νλ©΄ λλ€. (8081 νμ X) μ΄μ μ¬λ¬λμ μλ²λ₯Ό μ€νν μ μλ νκ²½μ΄ κ°μΆ°μ§λ€. 4. ctrl + alt + R ν€λ₯Ό λλ¬ μλ² μ€ννκΈ° μ€ννκ³ μ νλ μλ²λ₯Ό μ ννμ¬ μ€ννμ. νμλ 2λμ μλ²λ₯Ό λͺ¨λ μ€ννκ³ , μλμ²λΌ μ μμ μΌλ‘ μ€νλλ κ²μ νμΈνλ€.
2022.08.14 -
[Docker, Springboot] java.sql.SQLSyntaxErrorException: Unknown database
μλ¬ : java.sql.SQLSyntaxErrorException: Unknown database μ€νλ§λΆνΈ μ΄κΈ° μΈν μ, url μ μ§μ λ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ°Ύμ§ λͺ»ν΄ μλ¬κ° λ°μνλ€. urlμ μ§μ ν λ°μ΄ν°λ² μ΄μ€λͺ μ project λ‘ μλ μ΄λ―Έμ§μμ νμΈν μ μλ―μ΄, μ΄λ―Έ μμ±λ λ°μ΄ν°λ² μ΄μ€μμλ λΆκ΅¬νκ³ μ€νλ§λΆνΈμμ μ°Ύμ§ λͺ»νλ λ¬Έμ κ° μμλ€. ν΄κ²° : κ°λ¨ν url μ λ§μ§λ§μ μλ μ½λλ§ λΆμ¬μ£Όλ©΄ λλ€. ?createDatabaseIfNotExist=true ν΄λΉ μ½λλ₯Ό λ§λΆμ΄κ³ λ ν μ€νλ§λΆνΈλ₯Ό μ€ννλ©΄ μ μμ μΌλ‘ url λ§€νμ΄ λλ κ²μ νμΈν μ μλ€.
2022.08.03 -
κ°λ°νλ©΄μ λ°°μ΄ Map vs DTO λ°©μμ μ°¨μ΄μ
λͺ©μ°¨ μλ‘ λμ κΈ°λ₯ μ건 λ¬Έμ μ λ³Έλ‘ μ΄κΈ° κ°μ²΄ ꡬ쑰(Map) - Bad μ΅μ’ κ°μ²΄ ꡬ쑰 (DTO) - Good κ²°λ‘ μλ‘ λμ μ¬μ΄λ νλ‘μ νΈμμ "μ λ‘μ¨μ΄μ€νΈ κ΄λ ¨ μ₯μ"λ₯Ό μ§λμ λμ°λ μμ μ λ΄λΉνλ€. "μ λ‘μ¨μ΄μ€ κ΄λ ¨ μ₯μ" (μ΄ν place) λ λ€μν μΉ΄ν κ³ λ¦¬λ‘ λΆλ₯λ μ μλλ°, κΈ°ν λ¨κ³μμ μλ μ΄λ―Έμ§μ νν° λΆλΆ μ²λΌ μ μνμ¬ μΉ΄ν κ³ λ¦¬ν νμλ€. κΈ°λ₯ μ건 μ¬μ©μκ° μνλ μΉ΄ν κ³ λ¦¬μ μμ μ μ νν μ μλλ‘ 'νν°'λ₯Ό κΈ°λ₯μ μ 곡νλ κ²μ΄ λͺ©νμλ€. ν° μΉ΄ν κ³ λ¦¬μ ν΄λΉλλ μλΉλ₯Ό λλ, μνμ λλ, 보μμ μ£Όλ μΉ΄ν κ³ λ¦¬λ₯Ό μ°μ λ§λ λ€. κ° μΉ΄ν κ³ λ¦¬μ μνλ μ¬λ¬ κ°μ νν°λ₯Ό λ£λλ€. ν΄λΌμ΄μΈνΈ λ¨μμ κ°κ°μ κ°μ μ μ μλλ‘ key, value νμμΌλ‘ μ μ‘νλ€. key κ°μ μ‘°..
2022.07.31 -
[JPA] API κ°λ° - μ§μ°λ‘λ©κ³Ό μ±λ₯ μ΅μ ν (feat.Fetch μ‘°μΈ)
JPA μ μ§μ°λ‘λ© μ΅μ μ μ¬μ©ν λ λ°μνλ μ±λ₯λ¬Έμ λ₯Ό λ¨κ³μ μΌλ‘ ν΄κ²°ν΄λ³΄μ. Version 1. μν°ν°λ₯Ό μ§μ λ ΈμΆ (μ§μ ν΄μΌνλ λ²μ ) μλ μ½λλ Order μν°ν°λ₯Ό 컬λ μ μ λ΄μ κ·Έλλ‘ λ ΈμΆνλ€. μ΄λ΄ κ²½μ° API μ€νμ΄ λ³κ²½λλ©΄ ν΄λΌμ΄μΈνΈ λ¨μμλ λ³κ²½λ μ€νμ λμνμ§ λͺ»νκ³ μλͺ»λ κ°μ μ½μ΄λ€μ¬ μλ¬κ° λ°μν κ°λ₯μ±μ΄ μ‘΄μ¬νλ€. λν μν°ν°λ₯Ό κ·Έλλ‘ λ ΈμΆνκΈ° λλ¬Έμ 보μμμ λ¬Έμ λ κ°κ³Όνλ€. /** * * xToOne(ManyToOne, OneToOne) κ΄κ³ μ΅μ ν * Order * Order -> Member * Order -> Delivery * */ @RestController @RequiredArgsConstructor public class OrderSimpleApiContro..
2022.06.16 -
[Spring] @Aspect μ AOP νΊμ보기
μ΄μ ν¬μ€ν μ ν΅ν΄, μ€νλ§μμλ μλ νλ‘μ μμ±κΈ° κΈ°λ₯μ μ¬μ©νλ©΄ νλ‘μλ₯Ό λ³λμ μ€μ μμ΄ μμ±ν μ μμλ€. μ΄ λ μλ νλ‘μ μμ±κΈ°λ μ΄λλ°μ΄μ λ₯Ό λͺ¨λ μ°Ύμ μλμΌλ‘ νλ‘μ κ°μ²΄λ₯Ό μ€νλ§ λΉμΌλ‘ λ±λ‘νλ€. μ΄λ² ν¬μ€ν μμλ, μ§κΈκΉμ§ μ§μ Advisorλ₯Ό λ§λ€μλ κ²μ @Aspect μ΄λ Έν μ΄μ μ λμ μ¬μ©νμ¬ λ§λ€μ΄λ³΄κ³ , μ΄ @Aspect κ° μ€νλ§ AOP κ°λ μ μ΄λ»κ² μ μ©λλμ§λ μμλ³΄κ² λ€. @Aspect Proxy μλ νλ‘μ μμ±κΈ°(AnnotationAwareAspectJAutoProxyCreator) λ Advisor λ₯Ό μλμΌλ‘ μ°Ύμμ(Advisor Type νμ) νμν κ³³μ νλ‘μλ₯Ό μμ±νμ¬ μ μ©νλ€. μλ νλ‘μ μμ±κΈ°λ μΆκ°μ μΈ μν λ‘ @Aspect μ΄λ Έν μΈμ μ μ°Ύκ³ , μ΄κ²μ ..
2022.06.05 -
[Spring] λΉ νμ²λ¦¬κΈ°, Bean Postprocessor
μ μ μ€νλ§ μ»¨ν μ΄λκ° λΉμ κ΄λ¦¬νλ λ°©μμ μ§μ΄λ³΄μ. @Bean μ΄λ Έν μ΄μ μ μ¬μ©νκ±°λ, μ»΄ν¬λνΈ μ€μΊμΌλ‘ μ€νλ§ λΉμ λ±λ‘νλ©΄ μ€νλ§μ λμ κ°μ²΄λ₯Ό μμ±νκ³ μ€νλ§ μ»¨ν μ΄λ λ΄λΆμ λΉ μ μ₯μμ λ±λ‘νλ€. μ΄μ 컨ν μ΄λμ λ±λ‘λ μ€νλ§ λΉμ μ‘°ννμ¬ νμν λ ν΄λΉ λΉμ μ¬μ©νλ€. μ΄μ ν¬μ€νΈμμ νλ‘μλ₯Ό μ€μ ν λ°©λ²μ μκ°ν΄λ³΄μ. μ€μ κ°μ²΄λ₯Ό μ€νλ§ λΉμΌλ‘ λ±λ‘νλ κ²μ΄ μλ ProxyFactoryConfigV1 μ²λΌ, λΆκ° κΈ°λ₯μ΄ μλ νλ‘μλ₯Ό μ€μ κ°μ²΄ λμ μ€νλ§ μ»¨ν μ΄λμ λΉμΌλ‘ λ±λ‘ν΄μΌ νλ€. κ·ΈλΌ Component Scan λ°©μμΌλ‘ λΉμ λ±λ‘νλ κ²½μ°μ μ΄λ»κ² νλ‘μ μ€μ μ ν μ μμκΉ? μ΄λ―Έ μ€νλ§ μ»¨ν μ΄λμ λ±λ‘μ΄ λκΈ° λλ¬Έμ νλ‘μλ₯Ό μ€μ κ°μ²΄ λμ λ±λ‘ν μ λ μκ² λλ€. λ§μ½ ..
2022.06.04 -
[Spring] Pointcut, Advise, Advisor κΈ°λ³Έ κ°λ μ μμ보μ
ν¬μΈνΈμ»· (pointcut) : νν°λ§ ν μμΉλ₯Ό μ§μ νλ νν°λ§ λ‘μ§μ΄λ€. μ¦ μ΄λμ λΆκ° κΈ°λ₯μ μ μ©ν μ§ μ΄μ μ λλ€. μ΄λλ°μ΄λ (advice) : νλ‘μκ° νΈμΆνλ λΆκ° κΈ°λ₯ μ΄λ€. λ¨μν νλ‘μκ° μ μ©ν λΆκ°κΈ°λ₯ λ‘μ§μ΄λΌ μκ°νλ©΄ λλ€. μ΄λλ°μ΄μ (advisor) : λ¨μνκ² νλμ ν¬μΈνΈμ»·κ³Ό νλμ μ΄λλ°μ΄μ€λ₯Ό κ°μ§κ³ μλ κ²μ΄λ€. μ½κ² μκ°ν΄ ν¬μΈνΈμ»· 1 : μ΄λλ°μ΄μ€ 1 μΈ κ². λ¬Έμ₯μΌλ‘ μ 리νλ©΄, λΆκ° κΈ°λ₯ λ‘μ§μ μ μ©ν λ , μ΄λμ μ μ©ν μ§ μμΉ μ§μ μ pointcut μ΄ λ΄λΉνκ³ , μ΄λ€ λ‘μ§μ μ μ©ν μ§λ advice κ° λ΄λΉνλ€. 그리νμ¬ μ΄λμ, μ΄λ€ λΆκ° κΈ°λ₯ λ‘μ§μ μ§μ ν μ§ λͺ¨λ μκ³ μλ κ²μ΄ μ΄λλ°μ΄μ (advisor)κ° λλ€. μν κ³Ό μ± μ advice, pointcut κ°..
2022.06.03