전체 κΈ€

Spring/Spring & Spring Boot

[Spring] Example<T> μΈν„°νŽ˜μ΄μŠ€

μ½”λ“œλ₯Ό 보닀가 Example μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν™œμš©ν•œ κ²½μš°κ°€ μžˆμ—ˆλ‹€. Exampleλ₯Ό μ–Έμ œ μ‚¬μš©ν•˜κ³ , μ™œ μ‚¬μš©ν•˜λŠ”μ§€ μ•Œμ•„λ³΄μž.  Example μΈν„°νŽ˜μ΄μŠ€λž€ ?Spring Data Coreμ—μ„œ μ œκ³΅ν•˜λŠ” κ²ƒμœΌλ‘œ, QBE(Query By Example)을 μ§€μ›ν•˜λŠ” κΈ°λŠ₯이닀. κ°μ²΄ 자체λ₯Ό 쿼리 쑰건으둜 ν™œμš©ν•˜μ—¬ κ°„λ‹¨ν•œ 검색을 μˆ˜ν–‰ν•  수 μžˆλ‹€.    μ£Όμš” κ°œλ…λ„λ©”μΈ 객체(μ—”ν‹°ν‹°) 자체λ₯Ό 검색 쑰건으둜 ν™œμš©Null 값은 λ¬΄μ‹œ (ν•„λ“œ 값이 μžˆλŠ” κ²ƒλ§Œ 검색 쑰건으둜 μ‚¬μš©)동적 쿼리 생성 κ°€λŠ₯λ³„λ„μ˜ JPQLμ΄λ‚˜ SQL을 μž‘μ„±ν•  ν•„μš” μ—†μŒπŸ‘‰ κ°„λ‹¨ν•œ κ²€μƒ‰μ—μ„œλŠ” μœ μš©ν•˜κ² μœΌλ‚˜.. μ‹€λ¬΄μ—μ„œλŠ” λ³΅μž‘ν•œ 검색이 더 많이 λ•Œλ¬Έμ— κ·Έλƒ₯ μ €λŸ° κΈ°λŠ₯이 μžˆκ΅¬λ‚˜ μ •λ„λ§Œ μ•Œμ•„λ„ 될 것 κ°™λ‹€.    μ‚¬μš© μ˜ˆμ‹œUser probe = new User();..

Java

[Java] 직렬화 Serializable

Serializable μΈν„°νŽ˜μ΄μŠ€DTOλ₯Ό μ‚¬μš©ν•  λ•Œ Serializable μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜κ³  μžˆλŠ”λ°, κ·Έ 이유λ₯Ό μ•Œμ•„λ³΄μž.  Serializable μΈν„°νŽ˜μ΄μŠ€μ˜ API에 μ„ μ–Έλœ λ³€μˆ˜λ‚˜ λ©”μ„œλ“œκ°€ μ—†λ‹€.κ΅¬ν˜„ν•΄μ•Όν•  λ©”μ„œλ“œκ°€ 아무것도 μ—†λŠ”λ° μ™œ μžˆμ„κΉŒ. πŸŒŸ μžλ°”μ—μ„œ μ§λ ¬ν™”λž€ ? πŸ‘‰ μžλ°” μ‹œμŠ€ν…œ λ‚΄λΆ€μ—μ„œ μ‚¬μš©λ˜λŠ” 객체 λ˜λŠ” 데이터(JVM의 λ©”λͺ¨λ¦¬μ— 상주)λ₯Ό μ™ΈλΆ€μ˜ μžλ°” μ‹œμŠ€ν…œμ—μ„œλ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ byte ν˜•νƒœλ‘œ 데이터 λ³€ν™˜ν•˜λŠ” 기술(직렬화)κ³Ό byte둜 λ³€ν™˜λœ 데이터λ₯Ό λ‹€μ‹œ 객체둜 λ³€ν™˜ν•˜λŠ” 기술(역직렬화)이닀.   Serializable이 ν•„μš”ν•œ λ•ŒλŠ” λ‹€μŒκ³Ό κ°™λ‹€.μƒμ„±ν•œ 객체λ₯Ό 파일둜 μ €μž₯ν•  λ•Œμ €μž₯ν•œ 객체λ₯Ό 읽을 λ•Œκ°μ²΄λ₯Ό λ‹€λ₯Έ μ„œλ²„λ‘œ 보낼 λ•Œλ‹€λ₯Έ μ„œλ²„μ—μ„œ μƒμ„±ν•œ 객체λ₯Ό 받을 λ•ŒπŸ‘‰ 즉, λ§Œλ“  ν΄λž˜μŠ€κ°€ ..

Java

[Java] μ œλ„€λ¦­

μ œλ„€λ¦­μ΄λž€ ?νƒ€μž… ν˜• λ³€ν™˜μ—μ„œ λ°œμƒν•  수 μžˆλŠ” λ¬Έμ œμ μ„ 사전에 μ—†μ• μ€Œ  public class CastingDto implements Serializable { private Object object; public void setObject(Object object) { this.object = object; } public Object getObject() { return object; }} βœ³οΈ μœ„μ˜ μ½”λ“œμ—μ„œ μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜λ©΄public class CastingGenericDto implements Serializable { private T object; public void setObject(T obj) { this.object..

Database/SQL

[πŸ“• Real MySQL 8.0 (2)] 쿼리 μž‘μ„± 및 μ΅œμ ν™” SELECT - ν‚€μ›Œλ“œ 및 ν•¨μˆ˜ 2

4. GROUP BYνŠΉμ • 컬럼의 κ°’μœΌλ‘œ λ ˆμ½”λ“œλ₯Ό κ·Έλ£¨ν•‘ν•˜κ³ , κ·Έλ£Ήλ³„λ‘œ μ§‘κ³„λœ κ²°κ³Όλ₯Ό ν•˜λ‚˜μ˜ λ ˆμ½”λ“œλ‘œ 쑰회 GROUP BYλ₯Ό μ‚¬μš©ν•  λ•Œ ν•¨κ»˜ μ‚¬μš©ν•  수 μžˆλŠ” μœ μš©ν•œ κΈ°λŠ₯✳️ WITH ROLLUPκ·Έλ£¨ν•‘λœ κ·Έλ£Ήλ³„λ‘œ μ†Œκ³„λ₯Ό κ°€μ Έμ˜΄βœ³οΈ λ ˆμ½”λ“œλ₯Ό 컬럼으둜 λ³€ν™˜ λͺ©μ μ΄λ‚˜ μš©λ„μ— 맞게 SUM, COUNT, MIN, MAX, AVG λ“±μ˜ 집합 ν•¨μˆ˜ μ‚¬μš©   5. ORDER BYκ²€μƒ‰λœ λ ˆμ½”λ“œλ₯Ό μ–΄λ–€ μˆœμ„œλ‘œ 정렬할지 κ²°μ •ORDER BY 절이 λͺ…μ‹œλ˜μ§€ μ•Šμ€ 쿼리에 λŒ€ν•΄μ„œ 정렬에 λŒ€ν•œ 보μž₯ X  βœ³οΈ ORDER BY μ‚¬μš©λ²• 및 μ£Όμ˜μ‚¬ν•­1개 λ˜λŠ” κ·Έ 이상 μ—¬λŸ¬ 개의 컬럼으둜 μ •λ ¬ μˆ˜ν–‰ κ°€λŠ₯ πŸ‘‰ μ»¬λŸΌλ³„λ‘œ μ •λ ¬ μˆœμ„œ λ‹€λ₯΄κ²Œ λͺ…μ‹œ κ°€λŠ₯μ •λ ¬ν•  λŒ€μƒμ€ 컬럼λͺ…μ΄λ‚˜ ν‘œν˜„μ‹μœΌλ‘œ λͺ…μ‹œν•˜μ§€λ§Œ, SELECTλ˜λŠ” 컬럼 순번 λͺ…μ‹œ κ°€λŠ₯SELECT f..

Spring/πŸ“› μ—λŸ¬ 기둝

[πŸ“› Error] Objectλ₯Ό List<XXXDto>둜 μΊμŠ€νŒ…ν•˜λ‹ˆ νƒ€μž… 뢈일치 μ—λŸ¬ λ°œμƒ

πŸ“› μ—λŸ¬ μ„€λͺ…class java.util.LinkedHashMap cannot be cast to class com.XXXX. XXXX.app.interfaces.devices.service.dto.StatusDto πŸ‘‰ java.util.LinkedHashMap을 StatusDto 객체둜 κ°•μ œλ‘œ μΊμŠ€νŒ…ν•˜λ € ν•  λ•Œ λ°œμƒν•˜λŠ” ClassException이닀.Javaμ—μ„œ νƒ€μž… 뢈일치둜 인해 λ°œμƒν•˜λŠ”κ±΄λ°, μ™œ μ΄λŸ¬ν•œ 상황이 λ°œμƒν•˜λŠ”μ§€ μ•Œμ•„λ³΄μž... μ—λŸ¬κ°€ λ°œμƒν•˜λŠ” μƒν™©πŸ”Ά μˆ˜μ • μ „ μ½”λ“œ @Override public Flux getAll() { return deviceRepository.findByXXXX() .switchIfEmpty(Mono.error(n..

AWS

[AWS] Cognito둜 μ‚¬μš©μž μΈμ¦ν•˜κΈ° (νšŒμ›κ°€μž…λΆ€ν„° νƒˆν‡΄κΉŒμ§€)

μ‚¬μš©μžκ°€ νšŒμ›κ°€μž…μ„ ν•  λ•Œ username(userId)κ³Ό κ°„λ‹¨ν•œ μ •λ³΄λ§Œ DB에 μ €μž₯ν•˜κ³ , λΉ„λ°€λ²ˆν˜ΈλŠ” AWS Cognito에 μ €μž₯ν•˜λ„λ‘ ν•  것이닀. AWS Cognito λž€ ? μ΄ 뢀뢄에 λŒ€ν•΄ μ •λ¦¬ν•œ 글이 있기 λ•Œλ¬Έμ— μžμ„Έν•œ μ„€λͺ…은 μƒλž΅ν•˜κ³ ,μ‚¬μš©μž 풀을 μ‚¬μš©ν•΄ μΈμ¦ν•˜κ³  μžˆλŠ” ꡬ쑰λ₯Ό ν™œμš©ν•œλ‹€ ! λΌλŠ” κ²ƒλ§Œ ν™•μΈν•˜κ³  λ„˜μ–΄κ°€μž.  βœ³οΈ μ‚¬μš©μž 풀을 μ‚¬μš©ν•œ 인증 πŸ”· 인증 흐름 μ‚¬μš©μž 등둝 (Sign Up)μ‚¬μš©μžκ°€ μ‚¬μš©μž 풀에 λ“±λ‘μ‚¬μš©μž 이름, λΉ„λ°€λ²ˆν˜Έ, 이메일/μ „ν™”λ²ˆν˜Έ λ“±μ˜ μ‚¬μš©μž 속성 μž…λ ₯이메일 λ˜λŠ” μ „ν™”λ²ˆν˜Έλ₯Ό 톡해 verification codeλ₯Ό λ°›μ•„ 등둝 μ™„λ£Œμ‚¬μš©μž 인증 (Sign In)λ“±λ‘λœ μ‚¬μš©μžκ°€ μ‚¬μš©μž 이름과 λΉ„λ°€λ²ˆν˜Έλ‘œ 인증인증 성곡 μ‹œ, ID 토큰, accessToken, refreshToke..

Database/SQL

[πŸ“• Real MySQL 8.0 (2)] 쿼리 μž‘μ„± 및 μ΅œμ ν™” SELECT - ν‚€μ›Œλ“œ 및 ν•¨μˆ˜ 1

1. LIMIT nμΏΌλ¦¬μ—μ„œ μ§€μ •λœ μˆœμ„œμ— μœ„μΉ˜ν•œ λ ˆμ½”λ“œλ§Œ κ°€μ Έμ˜€κ³ μž ν•¨πŸ‘‰ LIMITμ—μ„œ ν•„μš”ν•œ λ ˆμ½”λ“œ 건수만 μ€€λΉ„λ˜λ©΄ μ¦‰μ‹œ 쿼리 μ’…λ£Œ  SELECT * FROM salaries ORDER BY salary LIMIT n, m;n, m에 μ£Όμ–΄μ§€λŠ” μˆ˜μΉ˜κ°€ 맀우 컀지면 쿼리 싀행에 였랜 μ‹œκ°„ κ±Έλ¦ΌLIMIT 쑰건의 νŽ˜μ΄μ§•μ΄ 처음 λͺ‡ 개 νŽ˜μ΄μ§€ 쑰회둜 λλ‚˜μ§€ μ•Šμ„ κ°€λŠ₯성이 λ†’μœΌλ©΄ WHERE 쑰건절둜 읽어야 ν•  μœ„μΉ˜λ₯Ό μ°Ύκ³  κ·Έ μœ„μΉ˜μ—μ„œ m개만 μ½λŠ” ν˜•νƒœμ˜ 쿼리 μ‚¬μš© -- // 두 번째 νŽ˜μ΄μ§€ 쑰회용 쿼리(첫 νŽ˜μ΄μ§€μ˜ λ§ˆμ§€λ§‰ salary κ°’κ³Ό emp_no κ°’ 이용)SELECT * FROM salariesWHERE salary>=38864 AND NOT (salary=38864 AND emp_noNOT (salary..

μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

[OAuth2.0] Client Credentials Grant (ν΄λΌμ΄μ–ΈνŠΈ 자격 증λͺ… 방식)

OAuth 2.0은 κΆŒν•œ λΆ€μ—¬(Authorization) ν”„λ ˆμž„μ›Œν¬λ‘œ, μ‚¬μš©μžκ°€ λ‹€λ₯Έ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ— μžμ‹ μ˜ μžμ›μ„ μ•ˆμ „ν•˜κ²Œ μ œκ³΅ν•  수 μžˆλ„λ‘ ν•˜λŠ” 방법을 μ œκ³΅ν•œλ‹€. μ£Όλ‘œ access_token을 μ‚¬μš©ν•˜μ—¬ μžμ›μ— λŒ€ν•œ μ ‘κ·Ό κΆŒν•œμ„ λΆ€μ—¬ν•˜λŠ”λ°, 이 방식은 μžμ‹ μ˜ 아이디와 λΉ„λ°€λ²ˆν˜Έλ₯Ό 직접 μ œκ³΅ν•˜μ§€ μ•Šκ³ λ„ 제3의 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ•ˆμ „ν•˜κ²Œ μ‚¬μš©μžμ˜ 데이터λ₯Ό μ ‘κ·Όν•˜κ±°λ‚˜ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ„λ‘ ν•œλ‹€. OAuth 2.0λŠ” λ‹€μ–‘ν•œ 인증방식을 μ œκ³΅ν•œλ‹€.Authorization Code Grant (인증 μ½”λ“œ 방식)Implicit Grant (μ•”μ‹œμ  승인 방식)Resource Owner Password Credentials Grant (λΉ„λ°€λ²ˆν˜Έ 자격 증λͺ… 방식)Client Credentials Grant (ν΄λΌμ΄μ–ΈνŠΈ 자격 ..

soogoori
πŸƒπŸ»‍β™€οΈμŠ€ν…λ°”μ΄μŠ€ν…