💡 게시물 기능 요구사항 PostMan API Docs 작성 https://documenter.getpostman.com/view/23682055/2s8ZDU6jkR Open-Session-in-view 옵션: false (트랜잭션 내부의 프록시객체 초기화 필요) 연관관계 : Member 1 Post N @ManyToOne 단방향 매핑으로 진행 FetchType : Lazy 1. 게시물 생성 2. 게시물 수정 3. 게시물 단건조회 4. 게시물 전체조회(Pagenation) 5. 게시물 삭제 6. 조회수 카운트(Update Query) 게시물 생성 게시물 생성 시, HttpServletRequest를 파라미터로 받아 유저의 Role (Admin, User, Counselor)을 검증 후 게시글에..
💡 회원 기능 요구사항 Open-Session-in-view 옵션: false (트랜잭션 내부의 프록시객체 초기화 필요) @ManyToOne 단방향 매핑으로 진행 FetchType : Lazy 1. 회원 등록 (카카오 로그인 & 사이트 자체 회원가입) 2. 로그인 (사이트 자체 로그인) 3. 로그인한 회원 목록 조회 4. 로그인한 회원 Role 조회 5. 회원 삭제 6. 비밀번호 암호화 7. 비밀번호 복호화 💡 소스코드 Entity @Entity @Getter @Setter @NoArgsConstructor public class Member extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long m..
💡 API 명세서 - 상담프로그램 & 결제 & 예약 상담프로그램 & 결제 & 예약 API 명세서 (관리자) 프로그램 등록 POST 프로그램 등록 /api/programs/post 프로그램 등록 시 사용하는 엔드포인트 입니다 Header Authorization Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJBQ0NFU1MiLCJpYXQiOjE2NzQ2NTIzMTgsImV4cCI6MTY3NDY1MzIxOCwibWVtYmVySWQiOjMsInJvbGUiOiJBRE1JTiJ9.icBFQbDz1dZQ7zFf2tvYvfWaRQwEaI1ZcB24wePwF31sBNxD31uWIi_1vP3RuT3Mxso1X4R9KGPfXndDIoHPSg ExampleRequest c..
💡 API 명세서 - 상담사 & 게시물 & 공지사항 상담사 & 게시물 & 공지사항 API 명세서 상담사 등록 (회원가입) POST 상담사 회원가입 /api/counselors/new 상담사 등록 시 사용되는 엔드포인트입니다. 화면 정의서 기준 37번에서 사용됩니다. Authorization에서 관리자 토큰을 사용하셔야 합니다. Header Authorization Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJBQ0NFU1MiLCJpYXQiOjE2NzQ2NTIzMTgsImV4cCI6MTY3NDY1MzIxOCwibWVtYmVySWQiOjMsInJvbGUiOiJBRE1JTiJ9.icBFQbDz1dZQ7zFf2tvYvfWaRQwEaI1ZcB24wePwF31s..
💡 API 명세서 - 로그아웃, 토큰 재발급 회원 & 로그인 & 로그아웃 API 명세서 공통 (로그아웃, 토큰재발급) POST logout /api/logout 로그아웃 시 사용하는 엔드포인트 입니다 Header Authorization Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJBQ0NFU1MiLCJpYXQiOjE2NzQ2NTIzMTgsImV4cCI6MTY3NDY1MzIxOCwibWVtYmVySWQiOjMsInJvbGUiOiJBRE1JTiJ9.icBFQbDz1dZQ7zFf2tvYvfWaRQwEaI1ZcB24wePwF31sBNxD31uWIi_1vP3RuT3Mxso1X4R9KGPfXndDIoHPSg ExampleRequest curl --locatio..
💡 발생이유 JPA가 JPQL을 분석해서 SQL을 생성할 때 글로벌 Fetch 전략을 참고하지 않고 JPQL 자체만 사용한다. findAll()이 수행되면 해당 엔티티만을 기준으로 조회 쿼리가 생성되고, FetchType으로 지정한 객체를 불러오는 시점에 별도외 조회 메서드를 호출하게 됨으로써 발생한다. 예시 1. Fetch 전략을 Eager(즉시 로딩)으로 한 경우 발생 2. Fetch 전략을 Lazy(지연 로딩)으로 한 경우, 객체 그래프 탐색 시 발생 예시 1의 경우 1. findAll()을 하면 JPQL구문이 생성되고 그 구문을 북석한 SQL이 생성 & 실행됨 2. DB의 결과를 받아 엔티티의 인스턴스를 생성 3. 영속성 컨텍스트에 검색하려는 엔티티와 연관된 엔티티가 있는지 확인 4. 없다면 2번..

💡 Memory Swaping 보통 Swap의 용량은 ram의 2배라고 알려져있고 t2.micro의 ram은 1gb, 스와핑용량 +2gb를 더해서, 총 3gb의 메모리로 증설이 가능하다 EC2 인스턴스 내부 # 스왑 파일 생성 $ sudo dd if=/dev/zero of=/swapfile bs=128M count=16 # bs는 블록 크기이며, count는 블록 수이므로 128mb x 16 = 2048mb 크기의 스왑 파일을 생성한다는 뜻이다. # 스왑 파일에 대한 권한 변경 $ sudo chmod 600 /swapfile # Linux 스왑 영역 설정 $ sudo mkswap /swapfile # 스왑 파일을 즉시 사용하도록 변경 $ sudo swapon /swapfile # 성공 확인 $ sudo ..