Loading...
2020. 8. 7. 15:22

[Spring boot] Spring boot Security로 시작해보는 인증

Spring Framework를 이용하여 웹 서비스나 REST API 서비스를 개발하게 되면 가장 필요로 하는 것은 바로 인증일 것입니다. 여기서 말하는 인증이란, 내가 개발한 서비스를 이용하기 위해 식별하고자 하는 사용자 혹은 관리자라고 할 수 있습니다. 일반적으로 Spring을 이용해서 인증 로직을 구현하고자 한다면, JPA를 이용해 사용자 Entity를 만들고, 연동하여 아이디와 패스워드를 동기화 한 후, 권한을 부여하는 방식으로 로직을 구현할 수 있을 것입니다. 그런데, 이를 직접 구현하지 않아도 이미 잘 만들어진 모듈이 있습니다. 그것이 바로 Spring boot Security입니다. 이번 포스트에서는 Spring boot Security를 왜 사용해야 하는지, 사용하기 위해 어떤 개념들을 공..

2020. 7. 25. 23:29

[Algorithm] - 2020 Kakao InternShip for Tech Developers Coding test 문제 풀이

최근 들어 개인 프로젝트, 각종 테스트 등으로 인하여 블로그에 대한 글 포스팅이 자주 안되고 있는 점에 대해 깊이 반성하고 있습니다. 그런 계기로 하여금 오늘은 제가 내일 치루게 될 코딩테스트를 위해 오늘 하루 날을 잡고, 연습하게 되었는데요. 이번 포스트는 카카오 코딩테스트 문제 두 번째인 2020 카카오 인턴십 코딩테스트 문제 풀이와 짤막한 후기를 남겨보고자 합니다. (참고로 이번 코딩 테스트는 난이도가 꽤 어려웠습니다.) Question 01. 키패드 누르기 문제 원문: (https://programmers.co.kr/learn/courses/30/lessons/67256) 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해..

[Spring] JPA의 플러시(flush)

JPA를 사용할 때, 객체를 생성하고 이를 영속성 컨텍스트에 영속시켜 커밋하는 과정까지를 알아봤습니다. 그런데, JPA의 commit()을 호출할 때 항상 발생하는 flush()는 어떤 역할을 하는 녀석일까요? flush() 커밋 메소드를 호출하게 되면 JPA 영속성 컨텍스트에 있는 객체들이 DB로 반영되게 됩니다. 그런데 실제로 commit() 메소드를 호출했을 때 이것이 진행되는 것일까요? 사실은 commit() 메소드가 호출될 때 flush() 메소드가 호출되어지고, 실제로는 flush() 메소드에 의해서 DB에 반영되어집니다. 즉, flush는 영속성 컨텍스트의 내용을 DB에 반영하는 역할을 하는 메소드이며, 쓰기 지연 SQL 저장소에 있는 SQL 쿼리가 DB 서버로 보내지기 때문에 영속성 컨텍스..

2020. 6. 24. 20:04

[Spring] JPA 영속성 컨텍스트 구조로 보는 이점

지난 포스트에서 JPA의 영속성 컨텍스트와 생명 주기에 대해 알아봤습니다. 간단하게 영속성 컨텍스트의 생명 주기의 관계를 통해서 Java로 구현된 객체가 어떻게 DB로 적재되고 삭제되는지를 알 수 있었습니다. 그런데, 영속성 컨텍스트를 왜 사용하는 것일까요? 처음에 저는 이렇게 생각했습니다. JDBC를 사용하려면 어차피 Connection이 생성되어야 하고, 그에 따른 Statement가 만들어져야 하는데, 서버 애플리케이션 특성상 다양한 사용자의 요청을 한 번에 처리해야 하므로, Connection이 여러개 생기게 됩니다. 이 때문에 Connection Pool이라는 것이 있고, 대표적으로 HikariCP가 사용되고 있죠. 그 다음에는 쿼리문을 작성해야 하는데, 이 부분과 함께 커밋까지 해주는 녀석이 ..

2020. 6. 23. 16:23

[Spring] JPA의 영속성 컨텍스트와 생명주기

Spring Framework를 이용하여 웹 애플리케이션이나 서버 애플리케이션을 개발할 때 사용하는 DB 라이브러리가 있습니다. 보통 JDBC 드라이버를 이용하여 DB Connection을 수행하고, 여러 개의 커넥션이 연결하고 끊어지기를 반복하기 위해 재사용할 수 있도록 하는 Connection Pool(DBCP, HikariCP), 그리고 각 도메인에 대한 CRUD를 객체 지향적인 방법으로 프로그래밍 할 수 있도록 하는 ORM이 있습니다. JPA는 여기서 Java 언어의 표준 ORM에 속합니다. Spring boot를 사용하고 있는 요즘에는 Spring 프레임워크에 맞춰져 있는 Spring Data JPA를 사용하는데요. 그런데, Spring Data JPA를 사용하면서 객체에 있는 데이터들이 스스로..