๋ชฉ๋ก๐ฅ BE ๋ฐฑ์๋ (118)
Bibi's DevLog ๐ค๐
[210515] ์ํ์ฝ๋ฉ - OAuth 2.0 1. ์์ ์๊ฐ ์์ ์๊ฐ ์ฌ์ฉ์๊ฐ ๊ฐ์ ๋ ์๋น์ค์ API์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ์ฌ์ฉ์๋ก๋ถํฐ ๊ถํ์ ์์ ๋ฐ์์ผ ํฉ๋๋ค. ์ด ๋ ์ฌ์ฉ์์ ํจ์ค์๋ ์์ด๋ ๊ถํ์ ์์ ๋ฐ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค. ์ด๋ฅผ ์ํด์ ๊ณ ์๋ ๊ธฐ์ ์ด OAuth์ ๋๋ค. ์ค๋๋ ๋ง์ API๋ค์ด OAuth๋ฅผ ํตํด์ ์ํธ ์ฐ๋์ ์ง์ํ๊ณ ์์ต๋๋ค. ์์ ๋์ ๊ตฌ๊ธ, ํ์ด์ค๋ถ๊ณผ ๊ฐ์ ์๋น์ค์ API์ ์ฌ์ฉ์ ๋์ ์ ์ ๊ทผํ๊ณ ์ถ์ ๋ถ๋ค์ ์ํ ์์ ์ ๋๋ค. ๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ค๋ฅธ ์๋น์ค๋ก ๋ก๊ทธ์ธ ํ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๋๋ฐ๋ ํ์์ ์ผ๋ก ํ์ํ ๊ธฐ๋ฅ์ ๋๋ค. OAuth๋? Mine : ๋์ ์๋น์ค User : ์ฌ์ฉ์ (๋์ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋๋ค) Their : ๊ทธ๋ค์ ์๋น์ค (๊ตฌ๊ธ, ํ์ด์ค๋ถ, ํธ..
[MySQL] function does not exist ์ค๋ฅ ๋ฐ์ ์ ํด๊ฒฐ๋ฒ.. ์ถ์ฒ๐โ๏ธ https://sharehan.tistory.com/entry/MySql%EC%82%AC%EC%9A%A9-%EC%8B%9C-function-does-not-exist-%EC%98%A4%EB%A5%98%EB%B0%9C%EC%83%9D-%EC%8B%9C java sql SqlsyntaxErrorException FUNCTION ... ์ ์์ธ : ์ฟผ๋ฆฌ๋ฌธ์ ์ฌ๋ฐ๋ฅด์ง ๋ชปํ ๋์ด์ฐ๊ธฐ๊ฐ ์๋์ง ํ์ธํ๋ค. String sql = "select booking.id, room_id, user_id, check_in, check_out, number_of_people, total_price" + " from `booking` l..
[Spring] ๊ฐ์ URL์ ์ฟผ๋ฆฌ์คํธ๋ง์ ๋ฐ์ ์ ์์ ๋ ๋งตํํ๋ ๋ฒ ๊ฐ์ URL์ ์ฌ์ฉํ๋ฉด์๋, ๋ค๋ฅธ ํ URL์ ์ฟผ๋ฆฌ์คํธ๋ง์ผ๋ก ๊ฐ์ ๋ฐ์์ค๊ณ ์ถ์ ๋ @GetMapping(params = {"checkIn", "checkOut", "minPrice", "maxPrice", "numberOfPeople"}) ์ ๊ฐ์ด ์ฟผ๋ฆฌ์คํธ๋ง์ผ๋ก ๋ฐ์์ค๊ณ ์ ํ๋ ๊ฐ์ ํค๋ฅผ ๋์ดํด @GetMapping์ params = {...}์ต์ ์ผ๋ก ์ถ๊ฐํ๋ค. ์๋์ ๊ฐ์ด ๋งตํํ๋ค. @RestController @RequestMapping("/api/rooms") public class RoomController { private RoomRepository roomRepository; private WishRepository w..
[Java] DB์ LocalDate์๋ฃํ ์ ์ฅํ๊ณ ๊บผ๋ด๊ธฐ https://kouzie.github.io/jdbc/JDBC.-2%EC%9D%BC%EC%B0%A8/#javasqlstatement-%EB%A1%9C-select%ED%95%98%EA%B8%B0 DB ํ ์ด๋ธ ๋ ์ง ์๋ฃํ์ธ Date๋ก ์ ์ฅํ๋ค create table `booking` ( `id` int not null auto_increment, `room_id` int not null, `user_id` int not null, `check_in` date not null, `check_out` date not null, `number_of_people` int not null, `total_price` int not null, primary k..
Spring JdbcTemplate์ ๋ํ ๊ณต์๋ฌธ์ ๊ฐ์ด๋ (K๊ฐ ์๋ ค์ฃผ์ จ๋ค๐โ๏ธ ๊ฐ์ฌํฉ๋๋ค!) 3.1 Choosing an Approach for JDBC Database Access์์ ๊ฐ๋จํ ์ค๋ช ์ ์ฝ๊ณ 3.3.1. UsingJdbcTemplate ๋ถ๋ถ๋ถํฐ ๋ณด๋ฉด ๋ ๋ฏ! https://docs.spring.io/spring-framework/docs/current/reference/html/data-access.html#jdbc 3.1 Choosing an Approach for JDBC Database Access (JDBC ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ ๊ทผ๋ฐฉ์ ์ ํ) JdbcTemplate, SimpleJdbcInsert, SimpleJdbcCall, ๋ฑ๋ฑ์ ๋ฐฉ์๋ค์ด JDBC ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ์ ์ฝ๊ฒ ..
@Transactional, ํธ๋์ญ์ @Transactional public void create(CardDto cardDto) { Card card = new Card(cardDto); cardRepository.save(card); } @Transactional, ํธ๋์ญ์ ์ฐธ๊ณ ์ฌ๋ฌ ์ฟผ๋ฆฌ๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ํ๋์ ์์ ์ผ๋ก ๋ฌถ์ด ์ฃผ๋ ๊ฒ. ์์ (1000์ ์ก๊ธํ๊ธฐ) A ๊ณ์ข์์ -1000์, B๊ณ์ข์์ +1000์์ด ๋์ด์ผ ํ๋ค. ์คํ ์ฟผ๋ฆฌ๋ UPDATE๋ฌธ์ผ๋ก ๊ฐ๊ฐ A๊ณ์ข-1000, B๊ณ์ข +1000์์ด ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ๋ ์ฟผ๋ฆฌ๋ฌธ ์ฌ์ด์์ ์๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด? ์ถ๊ธ(-1000)์ ๋์๋๋ฐ ์ ๊ธ(+1000)์ ๋์ง ์๋ ํฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ UPDATE ์ฟผ๋ฆฌ๋ฅผ ํ ์์ ์ผ๋ก ๋ฌถ์ด..
@Query public interface CardRepository extends CrudRepository { @Query("select * from card c where not c.status = 'DELETED'") List findByStatusIsNotDeleted(); } @Query() ์ฐธ๊ณ Spring Data JPA์์ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ์ฌ์ฉํด์ผ ํ ๋ ์ฌ์ฉ. ์ธํฐํ์ด์ค์ ์ง์ ๋ฉ์๋๋ฅผ ์ ์ํด ์ฌ์ฉํ๋ค. ์ํ๋ ํ์์ ๋ฉ์๋๋ฅผ ์ ์ (ํ์ํ ํ๋ผ๋ฏธํฐ, ๋ฆฌํดํ์ ์ง์ - ํน์ ํ์ ์ธ ๊ฒฝ์ฐ ๊ทธ ํ์ ์, Collection์ผ ๊ฒฝ์ฐ Set/List/Map์ ์ฌ์ฉ) ๋ฉ์๋์ @Query ์ฌ์ฉ *@Query์ ๋ค์ด๊ฐ ํ ์ด๋ธ, ์์ฑ ๋ช ์ DB ํ ์ด๋ธ์ด ์๋ Entityํด๋์ค ๊ธฐ์ค์ผ๋ก ์์ฑ..
ResponseEntity, @RestController, @RequestBody, @ResponseBody // UPDATE @PutMapping("/cards/{id}") public ResponseEntity editCards(@PathVariable Long id, @RequestBody CardDto newCardDto) { cardService.edit(id, newCardDto); return new ResponseEntity("SUCCESS", HttpStatus.OK); } ResponseEntity HttpEntity : HTTP ์์ฒญ ๋๋ ์๋ต์ ํด๋นํ๋ HTTP Header์ HTTP Body๋ฅผ ํฌํจํ๋ Spring FrameWork์ ํด๋์ค์ด๋ค. ์ด๋ฌํ HttpEntity๋ฅผ ์์๋ฐ..