JPA가 어떻게 변경된 엔티티 객체를 찾는지 명확하게 이해하려면 영속성 컨텍스트라는 JPA 내부 원리를 이해해 야 한다. 이 부분은 JPA 기본편에서 자세히 다룬다. 지금은 트랜잭션 커밋 시점에 JPA가 변경된 엔티티 객체를 찾아서 UPDATE SQL을 수행한다고 이해하면 된다. '스프링 DB 2편 - 데이터 접근 활용 기술' 강의의 JPA 파트에 위와 같이 '영속성 컨텍스트'가 언급되었다. JPA 사용 시, entity 객체의 값을 수정하면 자동으로 db에 update된다. 어떤 원리로 작동되는건지 계속 궁금해하고 있었는데 이번 기회에 다뤄보고자 한다! 영속성 컨텍스트란?영속성 컨텍스트는 JPA가 엔티티를 기반으로 데이터를 처리하는데 핵심 역할을 하는 객체로,EntityManager가 제공하는 메..
위와 같이 작동한다. 위 플로우에서 SqlSession이 언제 생성되는지, 누구에 의해 생성되는지 궁금해 졌다.SqlSession은 스프링 MyBatis 통합 설정에 의해 관리된다고 한다.스프링은 SqlSession을 자동으로 생성하고 매퍼 메소드 호출 시 만들어져 있던 SqlSession을 사용한다. 그럼 SqlSession은 JDBC 커넥션과 같은 것일까?SqlSession이 JDBC 커넥션을 사용하는 관계이다.SqlSessionFactory는 SqlSeesion을 생성할 때 커넥션 풀에서 커넥션을 가져와 사용한다.
(인프런/김영한) 스프링 DB 2편 강의에서 가져온 코드 중 일부입니다. JDBC Template을 이용해 DB에서 값 조회 시, 람다식을 활용할 경우 코드를 효율적으로 작성할 수 있다. 아직 람다식 사용이 익숙치 않아 코드를 분석해보고자 글을 작성한다. 단건 조회: 객체 조회Actor actor = jdbcTemplate.queryForObject( "select first_name, last_name from t_actor where id = ?", (resultSet, rowNum) -> { Actor newActor = new Actor(); newActor.setFirstName(resultSet.getString("first_name")); newActor.setLastName..
같이 플젝하고 있는 친구를 위해, 그리고 겸사겸사 복습해보기 위해내가 아는 선에서의 Spring Data JPA에 대해서 정리를 해보려고 한다!(틀린 내용이 있을 수 있다... 혹시 있다면 알려주세요...) 기술에 대한 개요나 설정 등은 건너 뛰고'사용 방법'에 대해서만 간단히 정리를 해보겠다. 1. Entity우선 Spring Data JPA는 ORM 기술이다. 객체와 DB의 테이블을 자동으로 Mapping해준다.Spring Data JPA 사용 시, 테이블을 직접 생성하지 않아도 된다. 설정 파일에서 ddl-auto를 상황에 맞게 변경해주면 테이블이 자동으로 생성된다! 그럼 테이블을 어떤 클래스와 Mapping 되는 것일까? 아래와 같이 @Entity 어노테이션이 붙은 클래스는 테이블로 매핑된다. ..
Stream이란?자바 8부터 추가된 기능으로 컬렉션을 다루는 데 사용된다. 컬렉션을 스트림으로 변환하면 데이터를 처리하고 조작하기 편리하다. Stream 구조객체집합.스트림생성().중간연산().최종연산() Stream 생성 주로 컬렉션으로부터 생성된다. List myList = Arrays.asList("apple", "banana", "orange");Stream stream = myList.stream(); Stream 중간 연산스트림의 요소를 변환하거나 필터링하는 등의 작업을 수행한다.매핑, 필터링, 정렬 및 그룹화와 같은 연산을 통해 데이터를 가공할 수 있다. filter(): 요소를 필터링하여 조건에 맞는 요소만 유지map(): 요소를 다른 형태로 변환sorted(): 요소를 정렬distinct..
Matrix Computation: 덧셈 1. Format A 3 4 1 3 003 -> (0,0)에 3 014 101 113 2. 두 Matrix에 대해 pair rdd 만들기 mapTopair transformation 사용 3. 두 RDD 합치기 union 사용 (중복 허용) 4. 같은 key를 가지는 element 더하기 ReduceByKey Matrix Computation: 곱셈 *A행렬의 열의 개수와 B행렬의 행의 개수가 같아야 함 *A행렬의 어떤 숫자는 B행렬의 열의 개수만큼 곱해짐, B 행렬의 어떤 숫자는 A행렬의 행의 개수만큼 곱해짐 *결과 행렬은 A의 행의 개수와 B행렬의 열의 개수로 결정됨 1. 개별 곱 구하기: Format a(ix) b(xj)를 처리할 때 key를 (i,j,x)로..
1. 스프링부트 시작하기스프링부트 프로젝트 시작하기gradle과 java를 선택했고 아래와 같은 의존성들을 추가하였다. 2. DB 연결하기교수님이 참고하라고 올려주신 예제를 보니 db 설정이 두 곳에 되어있다. properties 파일이나 yml 파일이나 담는 정보의 결이 항상 비슷했던거 같아서 찾아보았다.yml은 계층구조와 key:value 형태yml 형식이 properties의 개선된 버전properties 파일이 우선 순위로 일부 설정 덮어씌어질 수 있으니 하나만 사용 권장 참고 오류가 뜬다... 라이브러리를 jar파일로 넣어주면 된다는데 jar 파일을 찾을 수 없어 다운로드 먼저 진행했다.넣어주니 해결 완료! /src/main/resources/application.yml 에 다음과 같이 작성..
해결해야 할 요구사항 회원 A가 회원 B와 채팅하기 버튼을 누른 상황이다. 이때 기존 A, B간의 채팅룸이 존재한다면 ture를 반환하고 존재하지 않는다면 false를 반환하는 api를 작성해야 한다. 해결 방법 채팅 참여 테이블에서 A가 참여한 roomId 리스트와 B가 참여한 roomId의 교집합을 구한다. 교집합의 원소가 있으면 true, 없으면 false를 반환한다. 코드 ChatRoomController.java @GetMapping("/check") public ResponseEntity hasChatRoom(@AuthUser User user, @RequestParam("receiverId") Long receiverId) { if(user == null) throw new CustomExc..
- Total
- Today
- Yesterday
- 백준
- 동덕여대 컴퓨터학과
- 프로그래밍
- 코틀린
- 자바 1004번
- 컴공
- 웹
- BFS
- 안드로이드
- 인프런 김영한 강의
- 스프링 강의
- 백준 2108
- 스파크
- 스프링부트
- 생활코딩
- 동덕여대
- 백준 1004
- 아이엘츠
- 백준9375번
- 스프링부터
- RDD
- 자바 9375
- 개발
- 컴퓨터학과
- 알고리즘
- 컴과
- 코딩
- 13305 자바
- 자바
- 그리디 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |