분류 전체보기 (61) 썸네일형 리스트형 질문할 때 DB 테이블 구조를 깔끔하게 올리는 방법과 JPA 관계 매핑 정리 개발하면서 StackOverflow나 여러 커뮤니티에 질문할 때 DB 테이블 구조를 같이 올려야 하는 경우가 많다. 텍스트로 표를 만들기가 번거로운데, 마크다운 형식 테이블을 쉽게 만들어 주는 웹사이트를 찾아서 소개한다. www.tablesgenerator.com/markdown_tables 이 사이트에선 CSV 파일을 업로드하거나 직접 데이터를 입력해서 마크다운 테이블을 바로 만들 수 있다.덕분에 질문 글을 훨씬 깔끔하게 작성할 수 있어 유용했음! Markdown Tables generator - TablesGenerator.comYou can import table data by uploading file in CSV format (Comma Separated Value). Most spreadsh.. PSCP 이용하여 AWS/EC2 파일 전송 및 폴더 전송하기 로컬에서 EC2로 파일 및 폴더 전송하기 (PSCP 활용)로컬 PC에서 AWS EC2 인스턴스로 파일이나 폴더를 전송할 때, FileZilla 같은 GUI 툴을 사용해도 좋고, Putty를 설치하면 함께 제공되는 pscp.exe를 이용할 수도 있다. 특히 윈도우 환경에서 편리하게 EC2로 파일 전송을 지원해줘서 유용하다.파일 전송 명령어pscp -i [인증키.ppk] [로컬 파일 경로] [사용자명]@[퍼블릭 IPv4 DNS]:[EC2 내 저장할 경로]폴더(디렉토리) 전송 명령어pscp -r -i [인증키.ppk] [로컬 폴더 경로] [사용자명]@[퍼블릭 IPv4 DNS]:[EC2 내 저장할 경로]-r : 폴더(디렉토리) 복사할 때 반드시 붙여줘야 한다.-i : Putty에서 생성한 ppk 인증키 파일을.. JPA 양방향 매핑 시 발생한 무한 순환 참조 에러 JPA에서 엔티티 간 양방향 연관관계를 설정하던 중, Infinite recursion (StackOverflowError) 에러가 발생했다.nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError)문제 상황TestA와 TestB 클래스가 서로 @OneToOne 관계로 얽혀 있고, 양쪽에서 서로를 참조하게 되어 있었다. 이 구조는 직렬화(Jackson을 통한 JSON 변환) 과정에서 무한 루프를 유발한다.문제 코드// TestA.java@OneToOne(targetEntity = TestB.class)@JoinColumn(name = "hm_name")TestB .. JPA에서 단일 데이터 조회하기 JPA에서 단일 데이터 조회하기JPA로 쿼리를 작성할 때 한 개의 데이터만 불러와야 하는 상황이 있었다.그래서 @Query 어노테이션을 써서 이렇게 작성했는데,@Query("select h from testVo h where h.hmName = :hmName limit 1")하지만 여기서 limit 때문에 에러가 났다. 이유는 Hibernate의 HQL 문법이 SQL의 LIMIT을 지원하지 않아서였다.스택오버플로우를 찾아보니 이렇게 하면 한 개만 가져올 수 있다고 해서 시도해봤다.@Query(value = "select h from testVo h where h.hmName = :hmName")List findAllByhmName(String hmName, Pageable pageable);default.. JPA에서 @Transient 사용하기 JPA를 사용하다 보면 VO 클래스에 DB 컬럼들을 매핑해서 개발하는 경우가 많다.그런데 가끔은 DB 컬럼과 관계없이 임시로 사용하거나 계산용으로만 쓸 변수가 필요할 때가 있다.이럴 때는 @Transient 어노테이션을 붙여주면, JPA가 이 필드를 DB 컬럼으로 인식하지 않고 무시하게 된다.즉, @Transient가 붙은 필드는 데이터베이스에 저장되지도 않고, 조회할 때도 매핑되지 않는다. 주로 계산된 값이나, UI에서만 사용하는 임시 데이터 등을 저장할 때 사용한다.예를 들어, 사용자 이름과 성을 각각 DB 컬럼으로 관리하지만, 전체 이름을 조합해서 보여주고 싶을 때, 전체 이름 필드를 @Transient로 선언하면 편리하다.이렇게 하면 JPA가 해당 필드를 무시하기 때문에, DB 스키마 변경 없이 .. Elastic Beanstalk, EC2 EC2의 뜻은 Elastic Compute Cloud이다 C가 2개라서 EC2이다. EC2는 가상서버환경으로 우리가 원하는 환경에 맞게 설치하여 사용할 수 있다. EBS는 ElasticBeansTalk로 EC2보다 편리하게 제공되는 기능이 많다 로드 밸런싱(ELB), 오토 스케일링, health check 등 제공 해주고 내가 무슨 환경인지에 따라 미리 구축되서 나온다. EC2로 환경을 구성할 경우엔 우리가 따로 설치해야하는 점이 있다. aws.amazon.com/ko/elasticloadbalancing/ Elastic Beanstalk를 이용한 무중단 배포 구축 1 우리는 Elastic Beanstalk를 이용하여 로드밸런싱을 사용하기 위해 하나의 ElasticBeanstalk 안에 ec2 두개를 포.. AWS- appspec.yml root 우리 서비스는 Code pipeline을 통해 배포를 한다 pipeline의 단계는 총 소스-빌드-배포 3가지 구성으로 되어있다. 소스트리는 깃허브와 연결하여 커밋할시에 바로 변경 릴리즈를 감지하여 소스로 간다음 그다음 빌드로 넘어가게 된다. 이때 우린 build중에 환경을 구축하기 위해 프로젝트에 buildspec.yml 파일을 작성해야한다. version: 0.2 phases: install: runtime-versions: java: openjdk8 build: commands: - echo [PHASE] Entered the build phase... - gradle bootjar post_build: commands: - echo [PHASE] Entered the post_build phase.. gapi oauth2 - google Calendar GAPI란?GAPI는 구글이 브라우저 쪽 자바스크립트를 위해 제공하는 클라이언트 라이브러리다. 구글 로그인, 구글 드라이브, 구글 캘린더 등 다양한 구글 API와 쉽게 연동할 수 있도록 도와준다. 나는 React 프로젝트에서 GAPI를 이용해 Google Calendar API와 FullCalendar를 연동하여 캘린더 이벤트를 관리하는 기능을 구현했다.1. index.html에 GAPI 로드하기위 스크립트 태그를 넣어 GAPI 라이브러리를 불러온다.npm 패키지로 설치하는 방법도 있으나, 간단하게 html에서 바로 불러오는 방식을 주로 사용한다.2. GAPI 사용 준비하기var gapi = window.gapi;gapi.load('auth2', () => { var gauth = gapi.auth.. 이전 1 ··· 4 5 6 7 8 다음