1κ°μ 컬λΌμ λν μ€λ³΅ κ° νμΈ select u.name, count(u.name) from users u group by u.name having count(u.name) > 1; 2κ° μ΄μ 컬λΌμ λν μ€λ³΅ κ° νμΈ select u.cell_phone, u.name, count(*) from users u group by u.cell_phone, u.name having count(*) > 1;

λꡬ μ¬μ©λ² μ€μ¬μ΄ μλλΌ ν μ€νΈ λμ μ νμμ±, λΉμ© μΈ‘λ©΄μ μ¬λ‘μ ν¨κ» νμ΄κ°κ³ μλ€. ν μ€νΈ λꡬλ μ¬μ©λ²μ μ΅νλ©΄ λλ€. νμ§λ§ μ μ¬μ©ν΄μΌ νλμ§ μ΄λ€ μΌμ΄μ€μμ μ¬μ©ν΄μΌ νλμ§λ₯Ό κΉ¨λ¬μμΌ μ λ§ νμν ν μ€νΈ μΌμ΄μ€λ₯Ό μμ±ν μ μκ³ μ§μμ ν μ€νΈλ₯Ό μ μ§ν μ μλ€. μ¬λ―Έμ¨,,γ

κ°λ°μ μ΄λκ³Ό κ°λ€. λΆλͺ 곡λΆκ° λ§μ΄ νμνμ§λ§ 곡λΆλ§ λ§μ΄ νλκ² λ³΄λ€ μ€μ λ‘ ν΄λ³΄λκ²μ΄ μ’λ€. λν νλ²μ λ§μ΄ νλ€κ³ ν΄μ κΎΈμ€ν¨μ΄ μλ€λ©΄ μ€λ ₯μ΄ λ¨λ²μ λμ§ μλλ€. κ·Έλ λ€κ³ μ€μ λ‘ ν΄λ³΄λκ²λ§ νλ€λ©΄ ν¨μ¨μ μ΄μ§ λͺ»νκ³ , μ’μ§ λͺ»ν μ΅κ΄μ΄ μκΈΈ μ μλ€. κ·Έλ¬λ―λ‘ κ³΅λΆνλκ²κ³Ό μ§μ κ°λ°νλ κ²μ μ μ ν λ³ννλκ²μ΄ μ’λ€. νλ μμν¬λ₯Ό μμ΄λ€ μ λ³Έμ§μ μ΄ν΄νλκ²μ λ€λ₯΄λ€. κ°λ°μ€λ ₯μ λλ¦¬κ³ μνκΈ° μν΄μλ λꡬμ μλ ¨λμ λ³Έμ§μ λν μ΄ν΄λ₯Ό λ³νν΄μΌ νλ€. μ»΄ν¨ν μ¬κ³ νκΈ° μꡬμ¬νμ μ¬μ©μμ μꡬμ¬νμ νλ‘κ·Έλλ° μΈμ΄λ‘ μ»΄ν¨ν°μκ² μ λ¬νλ κ²μ΄λ€. λ°λΌμ μꡬμ¬νμ λ°μ΄ν°μ κ΄μ μΌλ‘ μκ°ν΄μΌλ§ μ»΄ν¨ν μ¬κ³ μ μΆλ°μ μ΄λΌκ³ ν μ μλ€. λ°μ΄ν° κ΄μ μΌλ‘ μΈμνλ κ³Όμ μ λ³΄ν΅ μ§κ΄μ μΌλ‘ μ΄ν΄νκ³ λμ΄κ°..
jwt ν ν° μ μΆκ°νλ λμ€ μ΄λ―Έ μ¬μ©μ€μΈ μλΉμ€κ° μ¬μ©νκ³ μλκ±Έ μΆμννλ μμ μ€μ μ λ€λ¦μ μ¬μ©ν νκΈ°μ΄λ€. μλΉμ€ λ§λ€ λ€λ₯Έ ν ν°μ μ§ μκ°, νμ΄λ‘λλ₯Ό κ°κ³ μλλ° μ€λ²λΌμ΄λ©μ μ¬μ©νμλλ° μ½λ리뷰 λ κ°μ κΈ°λ₯μ νλ©΄μ μ½κ°μ νλμΆκ°λ§ λλκ²μ΄λΌμ μ λ€λ¦μ μ¬μ©ν΄λ³΄λκ² μ΄λ»λλ νΌλλ°±μ λ°μλ€. λ¬Όλ‘ μ²μ μ¨λ³΄λκ±°λΌμ μκ°μ΄ μ€λ κ±Έλ Έλ€. μ¬λ―Έμμκ³ μ μΈκ³μλ€ (μ λλ‘ μ΄κ²λ μλμ§λ§) μλμ κ°μ΄ μ λ€λ¦ ν΄λμ€λ₯Ό μμ±νκ³ issue (ν ν°λ°ν) μ μ€ννμ λ μ λ€λ¦ νμ μΌλ‘ μμ± νμλ€ @Data @AllArgsConstructor public class TokenPayload { private T tokenPayload; public T getTokenPayload() { return ..

κ°λ¨ν κΈ°λ³Έ λ±λ‘ νμ΄μ§λΌμ λ€λ₯Έμ½λμ λκ°μ΄ νλ€κ° μ½κ° λ³νλ₯Ό μ£Όμλ€. html μμ ajaxλ‘ μλ²μκ² μμ²ν λ success μ¦ ν΅μ μ μ±κ³΅νκ³ java μμ return μΌλ‘ ok (boolean) μ λ΄λ €μ£Όλ©΄ message λ₯Ό λμ΄μ€λ€. const updateDriver = function () { if (confirm("λ±λ‘νμκ² μ΅λκΉ?")) { $.ajax({ type: "POST", url: "/create", data: $("#createForm").serialize(), dataType: 'json', success: function (r) { alert(r.message); if (r.OK) { location.href = '/list'; } }, error: function (xh..
μμ¦ μ·¨λ―Έκ° λ§μ΄ μκΈ΄κ² κ°λ€.(λ±μ°, μΊ ν, νν λ±..) λ€μ΄λ² λΈλ‘κ·Έλ μμμ μ°μ΄ μ¬λ¦΄κΉ μκ°μ€μΈλ° λ μμνλ €λ©΄ κ°μ‘κ³ ... ν΄μΌ νκΈ° λλ¬Έμ μκ°ν μκ°μ΄ νμνλ€. μκ°ν μκ°λμ μ½νλ¦° 곡λΆλ₯Ό μμν΄λ³΄λ €κ³ μ½νλ¦° + spring μΌλ‘ λΈλ‘κ·Έλ₯Ό λ§λ€ μκ°μ΄λ€. μ λΆ μμ°κ³ λͺ»μ°λ κΈ°μ μ μ°Ύμμ μ½μ§ν μμ . μ°μ νμ₯λμ΄ μΆμ²ν΄μ£Όμ 1. CI/CD μ μ© + ν μ€νΈ μ½λ μμ± 2. ECS μλ² (λ₯Ό μν΄ +Docker) 3. Spring Webflux νλ μμν¬ (Coroutine) 4. μΊμμλ² (redis) λΈλ‘κ·Έμμ μ¬μ©νκΈ°μ κ³Όνλ€κ³ μκ°ν μ μμ§λ§ 곡λΆμ©μΌλ‘...λͺ¨λ μ μ©ν μμ μ΄λ€ κΈ΄ μΈμμ΄ μμλλ€ ^^...

μ½νλ¦° 곡λΆλ₯Ό μμνλ €κ³ SpringBoot - kotlin νλ‘μ νΈλ₯Ό μΈν νλ κ³Όμ μ λλ€ κ³΅μλ¬Έμ μ°Έκ³ νμλ©΄ λμμ΄ λ κ² κ°μ΅λλ€ https://spring.io/guides/tutorials/spring-boot-kotlin/ 1. νλ‘μ νΈ μμ± μμ κ°μ΄ μΈν νλλ° μ€νλ§λΆνΈ λ²μ μ΄ λ§μμ κ±Έλ Έλ€. μΈν 리μ μ΄μμ μ¬μ©κ°λ₯ν λ²μ μΌλ‘ μλ μΈν ν΄μ€κ² κ°μ§λ§ μμ¬μ€λ¬μ΄ λ§μμ 곡μννμ΄μ§μ λ€μ΄κ° νμΈνλ€. https://spring.io/projects/spring-boot#support μλλ‘ μ€ν¬λ‘€μ λ΄λ¦¬λ©΄ μκΉμ μλ―Έλ₯Ό νμΈν μ μλ€. μ°μ νΉλ³ν μ΄λ€ νλ¬κ·ΈμΈμ μ¬μ©ν μ§ μκ°ν΄λκ² μκΈ° λλ¬Έμ νλ‘μ νΈ μμ±μ μ€μ λμ΄μλ 3.0.4 λ‘ νλ‘μ νΈλ₯Ό μΈν νλ€. Incompatible beca..

μΆκ°λλκ²λ μμ ν κ²λ λ§μ λλμ§ μμκ² κ°λ νλ‘μ νΈκ° λ§λ¬΄λ¦¬λμ΄ κ°λ€. μ€κ°μ€κ° κ°μ΄ κ°λ°νλ κ°λ°μλΆμ΄ λ€λ₯Έ νλ‘μ νΈμ λμμ΄ νμν΄ νΌμ κ°λ°μ ν΄μΌ νλ κΈ°κ°μ΄ μμλ€. κΈ°κ°μμ λλ΄μ§ λͺ»ν κΉλ΄ λ무 λΆμνλ€. (κ·Έλ§νΌ λ무 μμ§νλ €κ³ νμλ€λκ±Έ κΉ¨λ¬μλ€ π) μ΄λλ―Ό νμ΄μ§μΈλ§νΌ λ³΄ν΅ API κ°λ°λ³΄λ€ ν¨μ¬ 볡μ‘νκ³ μ€λκ±Έλ Έλλ° μ€μν΄μ λ€μ μ볡νλ λΆλΆλ€λ λ§μλ€.(κΈ°νμ μΌλ‘) λ§€λμ λκ»μ μ€κ°μ€κ° νΌλλ°±κ³Ό νμΈμ ν΄μ£Όμ μ λ무 ν° λμμ΄ λμ΄μ λ€νμ΄μ§λ§(λ νΌμνμΌλ©΄ μ λ§ μ’μ νμκ² κ°λ€...) μνλ³νμ λν μ ν¨μ± κ²μ¬ νκΈ° state machine μ μλ €μ£Όμ μ κ²μνμ¬ μμ΄ν¨λλ‘ λΉμ·νκ² μμ±νλ€. μ£Όλ¬Έμνμ λ°λ₯Έ λ³νκ° λ³΅μ‘νκ² λμ΄μμ΄μ μ΄ν΄νλλ° λ§μ μκ°μ΄ κ±Έλ Έλ€. μ΄λ―Έ μ‘΄..
ν λ΄ μκ°.... No property xxxx found for type xxx κΈ°μ‘΄μ μλ repository μμ μΆκ°μ μΌλ‘ querydsl μ μ¬μ©νλ €κ³ custom interface μ impl class λ₯Ό μμ±νλ€ κ³μν΄μ μ€νλ§μ΄ λΉμ λͺ»μ°Ύμμ ꡬκΈλ§ ν΄λ³΄κ³ λ©μλ μ΄λ¦λ λ°κΎΈλ©° μ¬λ¬κ°μ§ μλνλ€κ° λ€μ λΈλ‘κ·ΈκΈμ λ°κ²¬νλ€. https://www.skyer9.pe.kr/wordpress/?p=6507 QueryDSL No property λ©μλλͺ found for type μν°ν°λͺ ! β μꡬ리μ κΈ°μ λΈλ‘κ·Έ QueryDSL No property λ©μλλͺ found for type μν°ν°λͺ ! ν΄λμ€λͺ xxxRepository xxxRepositoryCustom xxxRepositoryImp..

κ°λ°μλ‘ μ·¨μ νμ¬ 2λ μ΄λΌλ μκ°μ΄ μ§λ¬λ€. μ΄λ€ νλ‘μ νΈλ₯Ό νκ³ λ νκ³ λ₯Ό μ°μ§λ λͺ»ν κ² κ°λ€. λ΄κ° λ ν μ μκ³ νλμ§ κΈ°μ΅μ΄ μλλ€... μμΌλ‘ κΎΈμ€νκ² κΈ°λ‘μ΄λ νκ³ λ₯Ό ν΄μΌ ν κ² κ°μ λ¬λ§λ€ νκ³ λ₯Ό μ°κΈ°λ‘ νλ€. κ°λ°μλ‘μμ μ±μ₯ κ°μ ν΄μΌν μ μ‘°κΈν¨: κ°λ°μ μμνμ λμ λΉκ΅νμ λ λ§μ΄ μ±μ₯νμ§λ§ μμ μΈμμλ μμ²λ μ¬λμ΄ λ무 λ§λ€ μ‘°κΈν΄νμ§ μλλ‘ λ Έλ ₯νμ ν΄μ: ν΄μν λλ μΌ μκ°μ νμ§ λ§μ λΉκ΅: μλκ° λλ¦°κ±°μ§ λ©μΆ°μλ€κ³ μκ°ν μ μ μμΌλκΉ λΉκ΅νμ§ μλλ‘ λ Έλ ₯νμ μ½μ: μΌμ μ λ§μΆκΈ°κ° λ무 μ΄λ ΅λ€ 곡λΆ: μκΎΈ νκ³λλ©΄μ μνκ² λλ€. μ§κΈ νλ κ±° λΌλ λ§λ¬΄λ¦¬ν΄λ³΄μ μνλ μ μμ§ ν¬κΈ°νμ§ μμλ€ μ¬μ€ λ΄κ° κ°λ°μ μ 리ν μ±κ²©μ μλλ€. λ Όλ¦¬μ μΈ λΆλΆμμ μ½νκ³ μ½..
Hibernate κ° λμ§? νμ΄λ²λ€μ΄νΈ ORMμ μλ° μΈμ΄λ₯Ό μν κ°μ²΄ κ΄κ³ λ§€ν νλ μμν¬μ΄λ€. κ°μ²΄ μ§ν₯ λλ©μΈ λͺ¨λΈμ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ‘ λ§€ννκΈ° μν νλ μμν¬λ₯Ό μ 곡νλ€. JPAμ ꡬν체μ ν μ’ λ₯λ‘, JPA μΈν°νμ΄μ€λ₯Ό ꡬννλ©° λ΄λΆμ μΌλ‘ JDBC API λ₯Ό μ¬μ©νλ€. Hibernate λ SQL μ μ§μ μ¬μ©νμ§ μκ³ λ©μλ νΈμΆλ§μΌλ‘ 쿼리λ₯Ό μνν©λλ€. ( SQL λ°λ³΅μμ μ νμ§ μμλ λλ€ ) 컬λΌμ΄ λ³κ²½λμμ λ, ν μ΄λΈκ³Ό κ΄λ ¨λ DAO μ νλΌλ―Έν°, 쿼리 ,SQL λ±μ λμ μνν΄μ£ΌκΈ° λλ¬Έμ νΉμ λ²€λμ¬μ μ’ μμ μ΄μ§ μμ΅λλ€. μ΄λ¬ν νΉμ§μ μ μ§λ³΄μ μΈ‘λ©΄μμλ ν° μ₯μ μ λλ€. μλ₯Ό λ€μ΄ Mysql μ μ¬μ©νλ€κ° ORCLE λ‘ λ³κ²½νλλΌλ Hibernate λ λ³κ²½ν ORCLE λ‘ ..
κ°λ° νλ©΄μ λΉμ°ν λΆλΆμ΄μμ§λ§ λμκ² μλ‘κ² λ€κ°μλ μμΈμ²λ¦¬ ... γ 리뷰 ν΄μ£Όμλ λ§€λμ λμ΄ λ무 μ μλ €μ£Όμ μ μ 리 ν΄λ΄ λλ€ ( 격ν κ°μ¬ π₯Ή ) μμ λͺ©μ΄ μ°κ΄λμ΄ μ΄μ΄μ§μ§λ μκ³ μν©λ§λ€ μμΈμ²λ¦¬ νλ λΆλΆμ λ©λͺ¨νμ΅λλ€. μμΈ λ°μ μ μ‘°μΉλ₯Ό λͺ»νλ κ²½μ° & κ΄λ¦¬νμ§ λͺ»νλ κ²½μ° POINT * λ°μν λ§ κ³³ μμ catch ν λ©μμ§λ₯Ό μ λλ€. (μμΈμν©μ μ νν μμ νλ€) * μΈμ²΄ν¬μμΈλ‘ λ³κ²½νλ€. μμΈλ₯Ό μ‘μ§ λͺ»νλ©΄ μλ°μμλ ν΄λΉ μ 보λ₯Ό μλμΌλ‘ μΆλ ₯ν©λλ€. νμ§λ§ μ€ν¨μμΈμ λΆμν λ λ³Ό μ μλ μ 보λ μ€νμ λ³΄μΌ κ²½μ°κ° λ§κΈ° λλ¬Έμ log λ‘ μμΈλ₯Ό κ΄λ¦¬νκ³ μλ€λ©΄ μ€ν¨ μμΈμ κ΄ν μ 보λ₯Ό κ°λ₯ν λ§μ΄ λ΄μ λ°ννμ¬ μΆμ νκΈ° μ½λλ‘ νλκ² μ€μν©λλ€! 1. λ°μν μμΈμ λν λͺ¨λ κ°..