JAVA/[개인프로젝트] GooGoo

JAVA/[개인프로젝트] GooGoo

JDBC, JPA, Spring Data JPA 차이 그리고 Hibernate와 ORM

Spring을 인강을 통해서 배웠기에 무지성으로 Spring Data JPA를 사용했어요. 강의에서도 JDBC를 다루긴 했지만 차이에 대해서는 명확히 다루질 않았기에 JPA에 어떠한 점이 JDBC보다 좋은지 그리고 JPA와 Spring Data JPA는 무슨 차이가 있는지 한번 알아보려 합니다! 0. 그림으로 한 눈에 확인하기 1. JDBC Java Database Connectivity JDBC는 인터페이스라고 생각하면 된다. DBMS 종류에 무관하게 DB 관련 코드를 작성할 수 있게 도와주는 자바 표준 인터페이스이다. JDBC로 데이터를 삽입하는 코드의 예시이다. 출처) [10분 테크톡] 올레의 JPA와 JDBC public class ChessBoardDAO{ private Connection co..

JAVA/[개인프로젝트] GooGoo

CSR VS SSR

개인 프로젝트에서 Controller 반환값을 페이지 반환에서 JSON 반환으로 바꾸면서 그럼 페이지 반환은 어떻게 해줘야 할까 고민이 생겼어요😥 ViewResolver, ModelAndView, ResponseEntity에 대한 개념을 확립하고 ResponseEntity와 ModelAndView를 함께 사용하려 했는데 이게 맞는지 확신이 안들었어요 더 알아보다보니 CSR과 SSR 방식에 대해 알게 되었고 이참에 확실히 개념을 정리하고 싶어 포스팅하게 되었습니다 :) CSR 방식 Client Side Rendering 초기 로드 시 빈 HTML과 모든 로직이 담겨있는 Javascript를 다운로드한다. 그 후 빈 HTML에 Javascript를 이용하여 Dom을 동적으로 생성하여 그려낸다. 위와 같이 클..

JAVA/[개인프로젝트] GooGoo

[Spring Security] 일반 로그인과 소셜 로그인 (oauth2) 그리고 JWT

완성된 프로젝트를 돌아보면 든 생각이 있어요. 구현은 했는데.. 내가 다 이해하고 사용한게 맞나? 그래서 주요 개념들에 대해 학습하고 그 내용들을 포스팅하며 정리하는 시간을 가지려 해요. 정리 후에는 리팩토링하는 시간도 가지고요! 첫 번째 공부 주제는 로그인입니다! 로그인은 사용자의 주요 정보를 다루는 기능이기 때문에 보안이 굉장히 중요해요. spring에서는 보안이 튼튼한 로그인 구현을 위해 여러 가지 기능들을 제공합니다. 한번 살펴볼까요? 1. 인증과 인가 먼저 인증(Authentication)가 인가(Authorization)에 대해서 알고 넘어가야 한다. 1) 인증 사용자의 신원을 확인하는 과정이 인증이다. 비행기 티켓을 구매하려면 여권을 보여줘야 하는 것처럼 어떠한 사이트에 접속하기 위해서는 아..

JAVA/[개인프로젝트] GooGoo

[외부 API 호출] RestTemplate, WebFlux (WebClient) 그리고 WebSocket

개인 프로젝트를 진행하면서 Flask 서버와 Spring 서버가 통신해야했어요 즉, 외부 API와 소통해야했습니다! 어떻게 코드를 작성해야할지 전혀 감이 잡히지 않아서 많은 삽질을 한 결과 연결을 성공했습니다!🤩 그 과정에서 알게 된 여러 통신 방법들에 대해 정리하면서 어떤 상황에서 어떤 통신 방법을 사용해야 하는지 작성해서 또 삽질하지 않으려 합니다ㅎㅎ 1) RestTemplate Spring 3부터 지원된다. REST API를 호출할 수 있는 내장 클래스이며 JSON, XML 응답을 모두 받을 수 있다. Spring 5부터는 WebClient가 도입되어 WebClient 사용을 강력 권고하고 있다. Blocking VS Non-Blocking Blocking : 호출되는 함수가 호출하는 함수에게 제어..

JAVA/[개인프로젝트] GooGoo

[Spring Boot] 최고의 프로젝트 구조는 무엇일까?

Spring Boot를 활용한 첫 프로젝트를 완성했습니다. 아직 부족한 부분이 많지만 고치다 보면 완성이 계속 미뤄질 거 같더라고요😥 추후 리팩토링을 위해 프로젝트를 다시 보며 든 궁금증이 생겼습니다. 어떠한 구조가 최고의 프로젝트 구조일까? controller, service, dto, dao, repository 등 spring boot 프로젝트를 위해 필요한 요소들은 꽤 다양합니다. 이 요소들에 대해 살펴보고 최고의 프로젝트 구조란 무엇일지 포스팅해보려 합니다🤩 MVC 패턴을 전제로 합니다. 잘못된 정보가 있다면 댓글로 꼭 알려주세요! 1. 필요한 요소들 1) Entity (Domain) 실제 DB 테이블과 매핑되는 요소이다. 하나의 객체가 DB의 하나의 Column처럼 작용한다. // Entity..

JAVA/[개인프로젝트] GooGoo

[JAVA] Selenium으로 구글 로그인 자동화 만들기

구글 로그인을 자동화시키기 위해 접근하면 보안상 구글은 자동화를 막아요ㅠ Python의 경우 undetected_chromedriver 기능을 제공하지만 JAVA는 없습니다.. 검색을 해봐도 Python보다는 정보가 적어서 포스팅하게 됐습니다! 마지막의 최종 코드를 첨부해두었으니 급하신 분들은 제일 아래로 내려가주세요! 1. 크롬 디버깅 모드 보통은 아래 코드로 원하는 페이지에 접속하실 거에요. 적용 이전 코드 @SpringBootApplication public class SeleniumApplication { public static void main(String[] args) { SpringApplication.run(SeleniumApplication.class, args).getBean(Sele..

eune7
'JAVA/[개인프로젝트] GooGoo' 카테고리의 글 목록