분류 전체보기 145

[ JPA ] 사이드 프로젝트 중 만난 문제 (연관관계)

연관관계 개념은 공부를 한 상태지만 실전에서 사용하려고 하니 여전히 어려운 것 같다ㅠㅠ 댓글 구현을 끝내고 남은 api 파트를 맡게 되어 구현하는 도중 만나게 된 문제이다. 기본적인 것처럼 보이지만 jpa를 공부하고 있는 중이다보니 이런 기본적인 문제도 해결하고, 원인을 찾는것에 시간을 소비하게 되는 것 같다. 상황 설명 Post와 Image 테이블은 양방향 연관관계를 맺고 있다. 이해를 위해 Post, Image 테이블에서 간단하게 필요한 컬럼들만 남겨보았다. Post public abstract class Post extends TimeAuditingEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "post..

JPA 2023.02.03

[ DevOps ] github actions를 통해 EC2에 Spring Boot 배포

졸업작품을 진행할 때 우리가 만든 공동구매 서비스를 ec2에 배포했었다. 그러나 그때는 ec2에 jar파일을 업데이트하고, 기존 프로세스를 중단시키고 새로운 프로세스를 실행하는 모든 작업을 수동으로 했었다. 그 작업은 내가 담당했었는데 코드가 수정될때마다 서버에 들어가서 위의 작업을 반복하는 것이 굉장히 귀찮고 번거로웠다. 그때는 나도 처음 스프링부트를 통해 프로젝트를 진행하던 때였고, 배포도 처음 해보는 거라 주어진 과제를 해결하는 것에 급급했던 시기이기에 이렇게 번거로운 작업을 이어나갈 수 밖에 없었다. 좀 더 규모가 큰 프로젝트를 하며, 배포를 어떻게 쉽게 할 수 있을 까를 찾아보다 쉘스크립트를 통해 서버에서 명령어 치는 행위를 한번에 할 수 있다는 사실을 알게되었고, 나아가 github actio..

DevOps 2023.01.27

[ Java ] 불변객체

불변 객체 (Immutable Object) 가변 객체는 Java에서 Class의 인스턴스가 생성된 이후에 내부 상태가 변경 가능한 객체이다.(ex ArrayList, HashMap, StringBuilder, StringBuffer ) 그 반대로, 불변 객체는 Java에서 Class의 인스턴스가 생성된 이후에 내부 상태를 변경할 수 없는 객체이다. 불변 객체는 멀티 스레드 환경에서도 안전하게 사용할 수 있다는 신뢰성을 보장하며, 대표적인 불변 객체로 String 등이 존재한다. 이외에도 프로그래머가 커스텀 객체를 생성하여 내부 상태가 변경되지 않게 만들면, 그것도 불변 객체가 된다. 불변 객체 사용시 장점 1. 쓰레드에 안전하여 멀티 쓰레드 환경에서 동기화를 고려하지 않아도 된다. 2. 불변객체를 필드..

Java 2023.01.20

Security Filter

진행중인 사이드 프로젝트에 스프링 시큐리티가 살짝 사용되는 것 같아서 가볍게 공부하고 있다. SecurityConfig 파일에 여러가지 처음 보는 단어와 설정들이 많았는데 이게 여러 종류의 필터들인 것 같아 Security Filter에 대해 찾아보았다. Spring Security의 동작은 사실상 Filter로 동작한다고 해도 무방하다고 한다. 다양한 필터들이 존재하고, 이 필터들은 각자 다른 기능을 하고 있다. 원하는 필터는 추가할 수 있고, 원치 않는 필터는 제외 가능하며, 동작하는 순서를 정해줘서 원하는 대로 동작시킬 수 있다. Filter들 필터의 종류는 매우 많지만, 자주 사용되는 필터는 아래와 같다. SecurityContextPersistenceFilter ( 찾아보니 현재는 사용되지 않고..

카테고리 없음 2023.01.13

[ JPA ] 프로젝트 도중 만난 에러 ( feat. 트랜잭션 )

요즘 그룹스터디에서 사이드 프로젝트를 진행중이다. 간단한 지역 모임 구하기 커뮤니티인데 나는 현재 댓글 기능을 구현하고 있다. JPA를 공부한 이후로 처음 활용해보는 프로젝트라서 그런지 시행착오로부터 배우고 느끼는게 많다... ㅎㅎ 그 중에서 기억에 남는 cascade와 트랜잭션에 대해 기록을 남겨보려고 한다. 상황 대댓글 기능을 구현하고 있었다. Comment Entity에 레벨, 그룹등의 필드를 추가하여 대댓글을 구현하는 방법이 있지만, 나는 JPA의 특성을 적극 활용하여 대댓글을 만들고 싶은 마음에 연관관계를 통해 대댓글을 구현하고자 했다. 그래서 Comment Entity에 아래와 같이 parentCommentId, childComments 컬럼을 추가했다. Comment @Column(updat..

JPA 2023.01.12

[ Jpa ] 연관관계

Jpa 공부하면서 정말 어려웠던 개념이 몇가지 있는데 그 중 하나가 연관관계 매핑이다. jdbcTemplate, mybatis를 사용한 경험이 있는 나는 fk를 이용해 테이블들의 연관된 정보를 가져오는 것에 익숙해져있었기 때문이다. 그러나 Jpa 연관관계를 익히기 위해선, 객체들 간의 관계와 테이블 간의 관계의 차이점을 잘 알아야 한다. 테이블과 객체의 차이 테이블은 외래키(fk)로 join을 사용하여 연관된 테이블을 찾는다. 객체는 참조를 사용하여 연관된 객체를 찾는다. 여기 예시를 보면 더 잘 이해가 될 것 이다. [ 객체 연관관계 ] 단방향이다. Member id Team team username ↓ Team id name [ 테이블 연관관계 ] member member_id (pk) team_id..

JPA 2023.01.06

[2023.01.04] spring boot 18일차

오늘 공부한 것 spring boot jpa 달력 스케줄 짜기 jpa 로 구현 회의실 예약하기 jpa로 구현 전략패턴 공부 구현체 공부 알고리즘 퍼즐 맞추기 다시 풀이 느낀점 회의실 예약하기 시스템을 jpa로 구현해보았다. 정말 실생활에 필요한 것을 구현해봤는데 실제 이렇게 실생활에 필요한것을 구현하는 것이 재밌고, 찾아서 구현해보고싶다는 생각이 들었다. 앞으로 일반화가 되기 힘들지만, 우리 공동체에 필요한 것을 하나하나 구현해봐야겠다.

TIL 2023.01.04

[2023.01.03] spring boot 17일차

오늘 공부한 것 spring boot jpa querydsl 공부 jpa 활용한 투두리스트 만들기 알고리즘 퍼즐조각채우기(dfs/bfs) 그룹스터디 구현할 기능 정하기 첫 환경세팅 컨벤션 정하기 느낀점 dfs/bfs 살짝 익숙해졌다고 생각했는데 문제풀면서 피눈물흘림... 왜 이렇게 어려운거지? 방향성 잡고 코드써나가긴했는데 일치하는 도형인지 비교하고 처리하는 방식에서 문제가 있어보여서.. 내일 다시 풀어야 될 것 같다. 어려운 문제일수록 섣불리 코드 쓰지말고, 어떻게 풀지 생각을 확실히 하는게 중요한 것 같다. 에라모르겠다 하고 풀다가 시간만 엄청 날리게 된다 ㅠ

카테고리 없음 2023.01.03

[2022.12.30] 자료구조 1일차

오늘 공부한 것 spring boot 코로나 줄서기 프로젝트 대부분의 틀 구현 테스트 코드 작성 뷰단 간단히 구현 jpa entity 공부 알고리즘 큰수 만들기 (다시 풀어봄) 자료구조 수업 배열 큐 스택 링크드리스트 해쉬 느낀점 자료구조 수업을 들으며 파이썬의 자료구조에 대해 다시한번 정리해볼 수 있었다. 그리고 코로나 줄서기 프로젝트 클론코딩을 진행중인데 도움이 많이 된다. 처음 사용해보는 것들도 많지만, 하면서 익숙해지니까 내가 원래 알았던것 같고..그렇다 ㅋㅋㅋㅋㅋㅋ 그리고 application properties의 사용을 다양하게 해볼 수 있어서 좋다.

TIL 2022.12.30

[2022.12.29] 네트워크

오늘 공부한 것 네트워크 TCP vs UDP IP TCP 프로토콜 TCP 연결방식 3-way handshake TCP 연결해제 4-way handshake TCP 제어 슬라이딩 윈도우 혼잡제어slow start UDP 특징, 장점 spring boot 테스트 코드 작성 validation처리 알고리즘 큰 수 만들기(그리디) 느낀점 오늘은 그리디 문제를 풀었다! 지금까지 그리디 문제를 잘 풀지 못했어서 오늘은 심혈을 기울여 풀었으나...ㅎ 일단 문제 해결 알고리즘을 구사하긴 했음...근데 시간초과가 테스트케이스 2개정도 나서ㅠㅠ. 반복문이 하나밖에 없었는데 당황스러웠다.. 최대한 내가 구현한 알고리즘에서 시간초과 날 요소들을 제거해보았으나 계속 나서 결국다른 사람들의 풀이과정을 참고해보았다. 스택을 이용하..

TIL 2022.12.29