일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java최솟값구하기
- javaJVM
- java알고리즘문제풀이
- 항해15기
- 비전공자sqld
- javaJRE
- java알고리즘
- 프로그래머스제일작은수
- java list 출력
- 격파르타장점
- java map
- 코딩부트캠프후기
- 인터프린터언어
- java 자료구조 활용
- java set 저장
- 격파르타후기
- java기본자료형
- java map 저장
- sqld자격증합격
- java참조자료형
- 항해99후기
- java map 출력
- 노베이스부트캠프
- 격파르타합격후기
- 컴파일
- 작은수제거하기
- 프로그래머스
- java list 저장
- java set 출력
- 격파르타비전공자
- Today
- Total
목록2세/Spring (33)
코딩과 결혼합니다
Controller에서 api 응답을 Entity로 하는 경우에 생기는 문제점들에 대한 이해를 하고자 한다. 1. 순환 참조 두 테이블이 양방향 관계로 맺어졌을 때 컨트롤러에서 @ResponseBody를 통해 응답할 경우 스프링 부트는 HttpMessageConverter로 Jackson 라이브러리를 이용한다. A Entity를 응답으로 내보내려 하면 Jackson의 ObjectMapper는 객체를 Json으로 변환하는데, 이때 영속성 컨텍스트가 살아있기 때문에 양방향 맵핑이 된 다른 B라는 Entity가 영속성 컨텍스트에 있다면 객체 그래프를 탐색할 것이고, 영속성 컨텍스트가 없다면 지연 로딩으로 설정된 프록시를 초기화 하여 직렬화 한다. 또한 영속 상태인 B Entity에서도 맵핑 관계인 A를 직렬화..
@Transactional @Transactional 작동 원리와 흐름 1. @Transactional이 클래스 내의 메서드에 붙을 때, Spring은 해당 메서드에 대한 프록시를 만든다. 프록시 패턴은 디자인 패턴 중 하나로, 어떤 코드를 감싸면서 추가적인 연산을 수행하도록 강제하는 방법이다. 2. 트랜잭션의 경우, 트랜잭션의 시작과 연상 종료시의 커밋 과정이 필요하므로, 프록시를 생성해 해당 메서드의 앞뒤에 트랜잭션의 시작과 끝을 추가하는 것이다. 3.스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 기본으로 사용한다. 서비스 클래스에서 @Transaction을 사용할 경우, 해당 코드 내의 메서드를 호출할 때 영속성 컨텍스트가 생긴다. 4. 영속성 컨텍스트는 트랜잭션 AOP가 트랜잭션을 시작..
Transaction Transaction 이란? 여러 작업을 진행하다가 문제가 생겼을 경우 이전 상태로 롤백하기 위해 사용된다. Transaction은 하나의 흐름으로 하나의 실행이 성공하거나 실패하면 모든 연산들을 동일하게 처리한다. 예를들어 A, B, C의 연산을 한 묶음이라고 할 때 A는 정상 작동 됐지만, B가 실패한다면 A의 작업 이력도 이전으로 돌린다. Commit - 모든 작업 성공 ▶ 완료 작업 상태를 모두 반영 Rollback - 하나라도 실패 ▶ 모든 사항을 폐기 Transaction 의 성질 ✅ 원자성 Atomicity 한 트랜잭션 내의 실행 작업은 하나의 단위로 처리 즉, 모두 성공 또는 모두 실패하는 것을 의미한다. ✅ 독립성 Isolation 동시에 실행되는 트랜잭션들이 서로 ..

// 캐시를 모두 삭제 git rm -r --cached . // .gitignore에 입력된 파일 목록을 제외한 다른 모든 파일을 다시 트래킹 git add . // 커밋 git commit -m "clear git cache" git rm -r --cached. 라고 쓰지 않고 git rm --cached 경로 를 적어줌. add 할때도 필요한 경로만

문제 : post가 잘 생성이 되는지 데이터를 넣어보는데 403 java.sql.SQLIntegrityConstraintViolationException: Column 'nickname' cannot be null 이 뜨는 것... 이유 : 주어진 코드는 Post 엔티티에서 nickname 필드가 생성되고 있지만, 직접적으로 값을 설정하는 부분이 없고 Post 엔티티의 생성자에도 nickname 필드를 설정하는 로직이 없다. 해결 : 게시물을 생성할 때 Post 엔티티의 nickname 필드를 제대로 설정해야 한다. PostServie 클래스의 createPost 메서드에서 User 엔티티의 nickname 값을 가져와 Post 엔티티에 설정해주어야 한다. 서비스 수정 전 //게시글 생성 @Transac..
오늘 한 일 백엔드 5명 프론트 3명이 한 조가 되었다! 투표로 주제도 선정하고 오전 10시부터 7시까지 함께 회의하며 ERD도 짜고 API 명세서도 작성하였다. 많이 복잡해서 생각보다 어렵고 시간도 오래걸렸지만 나중에 수정사항이 생기게 되면 프론트 분들이 힘들것 같아서 최대한 실수 없이 잘 작성하려 하였다. 그래도 미니프로젝트를 하며 프론트분과 협업의 경험을 해서 이번에 좀 더 내 의견도 말하고 다른 분들의 의견도 물으며 전보다는 많은 참여를 한 것 같아서 좋았다. 서로 배려하는 분위기 속에서 조금은 머리 아팠지만 웃으며 잘 진행하였고 한 팀원분이 초코에몽도 주셨다!! S.A를 제출한 뒤에는 인텔리제이로 기본적인 파일구성을 짜고 환경 구성을 하였다. 마지막으로 "Github Actions로 CI/CD ..

이 오류를 다시 보게 되다니... https://coding-s2-chaewon.tistory.com/106 230711 - Spring : passwordEncoder 오토와이어링 오류 필요한 어노테이션들도 다 들어가 있고 주입도 잘 했는데 계속 오토와이어링 오류가 떠서 구글에 검색을 해보았다. 나와 비슷한 상활을 겪었던 분의 글의 댓글에 서비스 빈을 생성할 떄 BCryptPass coding-s2-chaewon.tistory.com 이번에는 다른 이유로 제대로 동작하지 않았는데, 이를 해결하기 위해서 일단 오타부터 있는지 잘 찾아보고 1. build.gradle에서 security 의존성이 제대로 설정이 되어있는지✔️ 2. PasswordEncoder 빈 등록이 제대로 이루어졌는지✔️ 3. 사용하는 ..
오늘 한 일 Spring Master 4주차 강의 과정을 따라해 보았다. 브라우저로부터 요청을 받는 서버의 입장에서 개발을 진행하던 때와 달리 우리의 서버가 클라이언트의 입장이 되어 KaKao 나 Naver 와 같은 서버에 요청을 진행하여 기능을 구현을 해보았다. 서비스 개발을 진행하다보면 라이브러리 사용만으로는 구현이 힘든 기능들이 많이 존재하는데, 이럴 때 다른 서버의 Open Api를 요청하게 되면 기능들을 간편하게 구현할 수 있다. RestTemplate은 서버에서 다른 서버로 가편하게 요청할 수 있도록 하는 Spring의 기능이다. 처음에는 프로젝트를 두 개를 만들어서 클라이언트 입장의 서버와 , 서버 입장의 서버로 서로 어떻게 데이터를 주고 받는지를 알아보았는데... 한 번으로는 이해가 어렵다..