전체 글335 10) 스프링 트랜잭션 이해 스프링 트랜잭션 소개 우리는 앞서 DB1편 스프링과 문제 해결 - 트랜잭션을 통해 스프링이 제공하는 트랜잭션 기능이 왜 필요하고, 어떻게 동작하는지 내부 원리를 알아보았다. 이번 시간에는 스프링 트랜잭션을 더 깊이있게 학습하고, 또 스프링 트랜잭션이 제공하는 다양한 기능들을 자세히 알아보자. 먼저 본격적인 기능 설명에 앞서 지금까지 학습한 스프링 트랜잭션을 간략히 복습하면서 정리해보자. 스프링 트랜잭션 추상화 각각의 데이터 접근 기술들은 트랜잭션을 처리하는 방식에 차이가 있다. 예를 들어 JDBC 기술과 JPA 기술은 트랜잭션을 사용하는 코드 자체가 다르다. JDBC 트랜잭션 코드 예시 public void accountTransfer(String fromId, String toId, int money).. 인프런/스프링 DB 2편 2024. 2. 15. 9) 데이터 접근 기술 - 활용 방안 스프링 데이터 JPA 예제와 트레이드 오프 중간에서 JpaItemRepositoryV2 가 어댑터 역할을 해준 덕분에 ItemService 가 사용하는 ItemRepository 인터페이스를 그대로 유지할 수 있고 클라이언트인 ItemService 의 코드를 변경하지 않아도 되는 장점이 있다. 고민 구조를 맞추기 위해서, 중간에 어댑터가 들어가면서 전체 구조가 너무 복잡해지고 사용하는 클래스도 많아지는 단점이 생겼다. 실제 이 코드를 구현해야하는 개발자 입장에서 보면 중간에 어댑터도 만들고, 실제 코드까지 만들어야 하는 불편함이 생긴다. 유지보수 관점에서 ItemService 를 변경하지 않고, ItemRepository 의 구현체를 변경할 수 있는 장점이 있다. 그러니까 DI, OCP 원칙을 지킬 수 .. 인프런/스프링 DB 2편 2024. 2. 15. 7) 데이터 접근 기술 - 스프링 데이터 JPA 스프링 데이터는 기본적인 crud 등 공통적인 부분을 만들어줘서 쉽게 데이터를 처리할 수 있는 걸 도와준다. 스프링 데이터 jpa, 스프링 데이터 redis같이 특정 기술에 대해서 더 특화된 기능을 가지는 것도 있다. https://spring.io/projects/spring-data 스프링 데이터 JPA 주요 기능 스프링 데이터 JPA는 JPA를 편리하게 사용할 수 있도록 도와주는 라이브러리이다. 수많은 편리한 기능을 제공하지만 가장 대표적인 기능은 다음과 같다. [여기서는 간단하게 알아보고, 따로 데이터 jpa 강의에서는 자세하게] - 공통 인터페이스 기능 - 쿼리 메서드 기능 공통 인터페이스 기능 JpaRepository 인터페이스를 통해서 기본적인 CRUD 기능 제공한다. 공통화 가능한 기능이 .. 인프런/스프링 DB 2편 2024. 2. 15. 8) 데이터 접근 기술 - Querydsl Querydsl 설정 build.gradle dependencies 부분에 아래 코드 추가 //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" dependencies 스코프 밖에 아래 코드 추가 //Querydsl 추가, 자.. 인프런/스프링 DB 2편 2024. 2. 15. 6) 데이터 접근기술 - JPA JPA 시작 스프링과 JPA는 자바 엔터프라이즈(기업) 시장의 주력 기술이다. 스프링이 DI 컨테이너를 포함한 애플리케이션 전반의 다양한 기능을 제공한다면, JPA는 ORM 데이터 접근 기술을 제공한다 JPA는 스프링 만큼이나 방대하고, 학습해야할 분량도 많다. 하지만 한번 배워두면 데이터 접근 기술에서 매우 큰 생산성 향상을 얻을 수 있다. 대표적으로 JdbcTemplate이나 MyBatis 같은 SQL 매퍼 기술은 SQL을 개발자가 직접 작성해야 하지만, JPA를 사용하면 SQL도 JPA가 대신 작성하고 처리해준다 실무에서는 JPA를 더욱 편리하게 사용하기 위해 스프링 데이터 JPA와 Querydsl이라는 기술을 함께 사용한다. 중요한 것은 JPA이다. 스프링 데이터 JPA, Querydsl은 JPA.. 인프런/스프링 DB 2편 2024. 2. 8. 자바 n진법 <-> 10진법 바꾸는법 n진법 -> 10진법 Integer.parseInt(값,진법) 반환값은 Int이다. String num = "01101"; // 2진법 기준 값 = 13 //해당 문자열의 숫자값을 도출 -> 1101 System.out.println(Integer.parseInt(num)); //전달 인자가 2진법으로 표현됬음을 알리고, 10진법으로 바꿔달라는 요청 // 01101을 2진수 보고 10진법으로 바꿨을시 값 -> 13 System.out.println(Integer.parseInt(num,2)); // 01101을 4진수로 보고 10진법으로 바꿨을시 값 -> 81 System.out.println(Integer.parseInt(num, 4)); // 01101을 8진수로 보고 10진법으로 바꿨을시 값 -> .. 자바/++ 2024. 1. 18. 1) 환경설정, 기본페이지 설정 [무료] 스프링부트 시큐리티 & JWT 강의 - 인프런 | 강의 스프링부트 시큐리티에 대한 개념이 잡힙니다., 스프링부트 시큐리티,제가 공부했던 걸 쉽게 설명드릴게요 🙂 스프링부트 시큐리티 github https://github.com/codingspecialist/-Springboot-Security-OAuth2.0-V3 htt www.inflearn.com 유저생성, 설정, 스키마 생성 create user 'wogusJWT'@'%' identified by 'wogus1234'; # 사용자 생성 GRANT ALL PRIVILEGES ON *.* TO 'wogusJWT'@'%'; # 생성한 사용자에 권한부여 (모든 데이터베이스의 모든권한) create database security; # 새로운 스키.. 인프런/Spring Boot JWT Tutorial 2023. 8. 3. 1) MySQL 사용자 생성, 삭제, 조회, 권한 부여,권한 확인, 사용자 생성과 동시에 권한부여 사용자 생성 create user '사용자'@'host' identified by '비밀번호'; # ex1) 내부 접근을 허용하는 사용자 추가 create user 'test'@'localhost' identified by '0000'; # ex2) 외부 접근을 허용하는 사용자 추가 create user 'test'@'%' identified by '0000'; # ex3) 특정 ip만 접근을 허용하는 사용자 추가 create user 'test'@'123.456.789.100' identified by '0000'; # ex4) 특정 ip 대역을 허용하는 사용자 추가 create user 'test'@'192.168.%' identified by '0000'; ex) create user wogusJW.. 데이터베이스/MySQL 2023. 8. 3. 프로그래머스] n으로 표현 https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. DFS DFS를 통해 +,-,*,/ 사칙연산을 하는것도 중요하지만 현재 값에다가 N,NN,NNN.... 의 값을 사칙연산해야한다. import java.util.*; class Solution { static int n,target; static int result = Integer.MAX_VALUE; public int solution(int N, int number) { n = N;.. 자바/알고리즘 문제 풀이 2023. 5. 17. repeat로 문자열 반복해서 이어붙이기 https://www.javastring.net/java/string/java-string-repeat-method Java String repeat() Method Java String repeat() method returns a new string whose value is the concatenation of this string given number of times. www.javastring.net public static void main(String[] args) throws NumberFormatException, IOException { String a = "hello"; System.out.println(a.repeat(0)); //빈값 System.out.println(a.repe.. 자바/++ 2023. 5. 17. spring security 라이브러리 추가시/ 로그인 화면 없애기 spring security 라이브러리를 추가하면 홈화면에서 이런 화면이 자연스럽게 보이고, 어떤 url request를 하든 인증에 실패했다면서 제대로 작동하지않는다. spring security 라이브러리를 추가했을때 자동으로 설정되는것인데 그걸 막기 위해 다음과 같이 설정한다. 문제해결 2023. 5. 10. 프로그래머스] 퍼즐 조각 채우기 https://school.programmers.co.kr/learn/courses/30/lessons/84021 참고 https://tmdrl5779.tistory.com/206 풀이 1. bfs를 이용하여 board 에서는 빈칸의 조각을 table에서는 퍼즐의 조각에 대한 정보를 저장한다. 각 조각의 정보는 원점을 기준(2차원배열을 사용하므로 i인덱스 0 j 인덱스0를 의미)으로 정렬한다. bfs를 이용하여 각 노드그룹을 방문하고, 각 노드그룹의 좌표값들을 저장한다고 생각하면 된다. [board, table의 정보가 2차원배열로 들어온다. xy그래프로 생각해서 원점기준 정렬을 하지만 실제로 저장된 조각의 정보 좌표는 2차원배열의 인덱스로 보면 된다.] 조각들의 좌표 정렬은 i인덱스의 오름차순, i가 .. 자바/알고리즘 문제 풀이 2023. 5. 10. 이전 1 ··· 6 7 8 9 10 11 12 ··· 28 다음