분류 전체보기 212

OAuth2, SpringSecurity를 활용한 로그인,회원가입 구현 프로젝트[Kakao, Google, Naver]

카카오, 구글, 네이버 계정을 통해 회원으로 등록하여 로그인기능을 구현하는 웹 프로젝트를 진행 하였다.  🎯 프로젝트 구현 목표1. 구글, 카카오, 네이버 계정으로 회원정보 DB에 등록2. 일반 로그인, 회원가입(아이디,비밀번호 사용)구현3. JWT와 쿠키를 활용한 로그인 유지  https://github.com/yangwoohyeon/Oauth_Practice GitHub - yangwoohyeon/Oauth_Practice: 구글,네이버,카카오,클라이언트 로그인 연습 토이 프로젝트구글,네이버,카카오,클라이언트 로그인 연습 토이 프로젝트. Contribute to yangwoohyeon/Oauth_Practice development by creating an account on GitHub.gith..

프로젝트 2025.02.21

프로그래머스 - 무인도 여행[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   아직 실력이 부족하여 풀이가 아주그냥 엉망진창이다. 하지만 구현 하고자 하는 의도는 명확했다;;dfs를 이용하여 순회순회하다가 더이상 나아갈 곳이 없으면 돌아오면서 누적합을 구한다.이렇게 구한 누적합을 큐에 저장한다.큐에 있는 값들을 정수 배열에 넣고 정렬 후 반환개인적으로 이 문제에서 가장 중요하면서 어려웠던 부분은 돌아오면서 누적합을 구하는 과정이라고 생각한다. import java.util.*;class Solution { pu..

프로그래머스 - 멀리 뛰기[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음에는 재귀호출을 이용해서 가능한 모든 경우의 수를 구해줬더니 시간초과가 발생했다. class Solution { public static long answer = 0; public long solution(int n) { dp(0,n); return answer; } public void dp(int sum, int n){ //총 뛴 칸,n if(sum ..

알고리즘/DP 2025.02.14

스프링 트랜잭션 전파

스프링에서 트랜잭션을 사용중일때 추가로 트랜잭션을 수행하는 경우 어떻게 동작할지를 결정하는 것을 트랜잭션 전파(Propagation)이라고 한다. 트랜잭션  전파에 대한 개념을 알기 전에 외부 트랜잭션과 내부 트랜잭션에 대한 개념을 알아야 한다.  외부 트랜잭션이 수행중이고 아직 끝나지 않았는데 트랜잭션이 추가로 수행되면 이 트랜잭션을 내부 트랜잭션이라고 한다.내부 트랜잭션은 외부에 트랜잭션이 수행되고 있는 도중에 호출되기 때문에 마치 내부에 있는 것 처럼 보여 내부 트랜잭션이라 한다. 스프링에서는 외부 트랜잭션과 내부 트랜잭션을 아래 그림과 같이 하나의 트랜잭션으로 묶어서 만들어준다.   이러한 개념을 바탕으로 스프링은 논리 트랜잭션과 물리 트랜잭션이라는 개념을 사용한다.  이러한 개념을 도입했을때 지..

BackEnd/Database 2025.02.14

프로그래머스 - 땅따먹기[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이 문제에서 가장 중요한점은 dp배열을 이용하여 각 위치에서 내려갈때 최대값을 저장하고 그 값들을 이용하여 중복 계산을 방지하는 것이다.   import java.util.*;class Solution { public static int answer = 0; public static int[][] dp; int solution(int[][] land) { dp=new int[land.length][la..

알고리즘/DP 2025.02.13

프로그래머스 - 여행경로[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/43164# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음 작성한 코드는 테스트케이스 1번 2번에서 실패했다.  그 이유는 위 케이스에서 ICN에서 출발하여 알파벳순으로 더 먼저오는 AAA로 가는 경로만 구했기 때문에 모든 경로를 탐사하는 루트를 구하지 못했다. 따라서 모든 경로를 구하기 위해서 백트래킹을 해야된다는 것을 알게 되었다. import java.util.*;class Solution { public static boolean[] visit; public static Li..

Spring 트랜잭션[@Transactional]

스프링에서 트랜잭션을 관리할 때 @Transactional이 거의 필수적으로 사용된다. 따라서 @Transactional에 대해 정확히 알고 사용하는 것이 매우 중요하다! @Transaction은 사용하면 핵심 비즈니스 로직과 공통기능 (로깅, 트랜잭션, 보안 등)을 분리하여 코드 재사용성과 유지보수성을 높이는 AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍)를 활용하여 트랜잭션을 자동으로 관리해주는 선언적 트랜잭션 관리 방법이다. @Servicepublic class OrderService { private final EntityManager entityManager; public OrderService(EntityManager entityManager) {..

BackEnd/Database 2025.02.12

SpringBean

스프링 빈이란 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트이다.즉, 스프링 컨테이너가 관리하는 자바 객체를 뜻하며, 하나 이상의 빈(Bean)을 관리한다.  스프링 빈(Bean)의 필요성 스프링빈을 사용하는 이유는 크게 객체 관리의 효율성, 의존성 주입(DI), 객체의 생명주기 관리, 애플리케이션의 유지보수성 향상 때문이다. 1. 객체 생성을 자동으로 관리해준다. 스프링을 사용하지 않은 경우public class Main { public static void main(String[] args) { MyService myService = new MyService(); System.out.println(myService.getMessage()); }}..

BackEnd/spring 2025.02.11

QueryDSL

QueryDSL 이란 하이버네이트 쿼리 언어의 쿼리를 타입에 안전하게 생성 및 관리해주는 프레임워크이다. QueryDSL 장점기존의 MyBatis, JPQL 등의 문자열 형태로 쿼리문을 작성했을때는 쿼리문의 오류를 발견하는게 힘들지만 QueryDSL을 사용하면 자바 코드로 쿼리를 작성할 수 있어서 컴파일 오류를 통해 잘못된 쿼리가 실행되는 것을 방지할 수 있다.동적 쿼리를 매우 깔끔하게 사용할 수 있다.  QueryDSL 설정  스프링 부트 2.X 설정// Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManage..

BackEnd/Database 2025.02.10

Spring Data JPA

스프링 데이터 JPA란 JPA를 편리하게 사용할 수 있도록 도와주는 라이브러리 이다.스프링 JPA의 주요 특징인터페이스( JpaRepository )상속을 통한 기본적 CRUD 지원, 구현 클래스 자동 생성 Spring Data JPA에서 프록시 기술을 사용하여 구현 클래스를 자동으로 생성해주므로개발자는 인터페이스만 생성하고 의존성을 주입받아 편하게 사용하면 된다.  쿼리 메서드 기능 : 스프링 데이터 JPA가 메서드 이름을 분석하여 필요한 JPQL을 자동 생성해주어 복잡한 쿼리문을 생략할 수 있다.단,  아무 이름이나 사용하는 것은 안되고 규칙이 따로 존재한다.  조회: find…By, read…By, query…By, get…By예) findHelloBy처럼 …에 식별하기 위한 내용(설명)이 들어가도..

BackEnd/Database 2025.02.10