전체 글 120

JPA 에서 기본 키 매핑하기

1. 기본키매핑에는 어떤 애노테이션을 사용하는가? 기본키 매핑에는 @Id, @GeneratedValue 를 사용할 수 있다. 기본키를 생성하는 방법은 직접 값을 지정하는 방법과, auto-increment, sequence 생성들을 통해 자동으로 방법등 여러가지가 있는데 크게 직접할당과 자동 생성으로 나눌 수 있다. 1) 직접 할당 : @Id 만을 사용한다. @Id private Long id; 2) 동적 할당 : @Id 와 @GeneratedValue 를 동시에 사용한다. @Id @GeneratedValue private Long id; 여기서 자동생성 하는 방법에서 총 네가지의 strategy 를 선택할 수 있다. 2. 기본키 매핑시 @GeneratedValue 에 지정할 수 있는 strategy 종..

Dev/JPA 2023.12.26

개인프로젝트_UKmedicine_1

요구 사항 회사에서 일할때도 느꼈던거지만 사실 기능을 구현하고 만드는것 보다는 고객의 요청사항을 파악하고 그것을 구체화 하는것이 가장 중요하다. 아무리 개발 실력이 좋아도 무엇을 어떻게 구현해야할지 정의가 되어 있지 않다면 결과물 또한 모호해지기 때문이다. 간단한 게시판으로 만들겠지만 그래도 기본적인 기능은 정의하고 가면 좋을 것 같아서 게시판의 성격과 주요 기능을 정의 하고자 한다. 1. 로그인은 구현하지 않는다. 2. 주료 사용되는 재료 항목과 재료를 통해 만들 수 있는 레시피를 검색할 수 있다. 3. 재료는 등록/삭제/수정 할 수 있다. 4. 레시피는 등록된 재료를 검색하여 등록/삭제/수정할 수 있다. 5. 레시피 조합하기 버튼을 누를 경우 해당 약재에 필요한 물의 총량이 도출 되어야 한다. 6. ..

Dev/Toy Project 2023.12.11

JPA 에서 데이터베이스 스키마 자동생성 기능 사용하기

jpa 를 사용하여 개발시, 개발 환경에서 간단하게 사용할 수 있는 기능중에 데이터 베이스 스키마 자동생성 기능이 있다. 사용 방법은 persistence.xml 파일에 아래와 같이 추가한다. value 에는 create, update, validate, none 이 들어 올 수 있는데 각 옵션의 의미는 아래와 같다. create 기존테이블 삭제 후 다시 생성 (DROP + CREATE) create-drop create와 같으나 종료시점에 테이블 DROP update 변경분만 반영(운영DB에는 사용하면 안됨) validate 엔티티와 테이블이 정상 매핑되었는지만 확인 none 사용하지 않음 개발 초기 단계에는 create, update , 테스트 서버는 update 또는 validate, 스테이징과 운..

Dev/JPA 2023.12.11

JPA 에서 영속성의 의미와 사용하는 애노테이션 정리

jpa 를 강의를 들으면서 가장 기본적인 영속성의 개념에 대해 간단하게 정리해보려고 한다. 1. 영속성 컨텍스트란 무엇인가? 데이터 베이스와 객체 사이에 중간 단계가 있는 개념이라고 할 수 있다. 객체를 데이터베이스로 옮기거나, 데이터베이스에 있는 데이터를 객체에 매핑할 때 중간에 존재하는 저장 공간이다. 간단하게 코드로 나타내면 EntityManager.persist(entity) 로 표현할 수 있다. 이 때 이 영속성 컨텍스트가 존재함으로써 일종의 버퍼링 기능을 수행하게 되는데 persistence.xml 파일에 를 추가하여 버퍼 사이즈를 조율할 수 있다. 버퍼링 기능을 사용하면 쿼리를 일일히 데이터베이스에 날리는게 아니라 지정한 버퍼 크기만큼 쌓아놨다가 한번에 데이터베이스에 요청하여 커밋할 수 있다..

Dev/JPA 2023.12.11

h2 초기 연결시 JdbcSQLNonTransientConnectionException 에러 해결 방법

maven 기반의 프로젝트에 대해 jpa 사용을 위해 persistence.xml 파일을 생성하고 h2 도 다운로드 후 실행되는 것 까지 확인 했는데, main 을 실행하니 Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database "/Users/gwongahyeon/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-..

Dev/JPA 2023.12.06

h2 db 연결시 javax.xml.bind.JAXBException 오류 해결 방법

김영한 강사님의 인프런 jpa 강의 수강 중 아래와 같은 오류가 발생했다. Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ... 12 more maven 프로젝트로 기본 설정파..

Dev/JPA 2023.12.06

local 에 있는 폴더를 git 에 한번에 올리기

개인 공부를 시작하면서 본격적으로 git 을 사용해보고 있다. 오늘은 공부한 샘플 코드를 local 에서 원격저장소로 업데이트시 발생한 문제애 대해 공유하고자 한다. 1. error: remote origin already exists. 에러 발생시 대응 방법 local 에 연결되어있던 원격 repo 가 있었는데, 다른 repo 로 바꾸고 연결하려고 동일하게 remote add 를 사용했더니 위 오류가 발생했다. 이전 실습 때 동일한 폴더에서 한차례 원격 레포지토리에 연결했던게 문제여서 기존 연결을 끊는 명령어를 입력후 다시 실행하니 정상적으로 연결할 수 있었다. git remote remove origin // 기존 연결 제거 git remote add origin https://github.com/g..

Dev/Git 2023.12.06

Spring Boot actuator 와 함께 프로메테우스와 그라파나 사용해보기

실습환경 - macOS 13.4 Spring Boot 1. build.gradle 파일에 prometheus 라이브러리 추가 한다. implementation 'io.micrometer:micrometer-registry-prometheus' // 추가 2. 추가 후 프로젝트를 재기동 한 뒤 http://localhost:8080/actuator/prometheus 호출하여 라이브러리가 잘 반영되었는지 확인 할 수 있다. 프로메테우스 1. 프로메테우스 다운로드 하기 https://prometheus.io/download/ 상단링크에서 다운로드 후 설치 위치에서 하단 명령어를 실행 한다. $ ./prometheus 명령어 실행 후 http://localhost:9090 으로 접속시 아래와 같이 관리자 화면..

Dev/Monitoring 2023.12.01

git online repository 연결하기

기본적인 local git 세팅 방법에 이어서 online respository 와 연결하는 방법에 대해 기록하려고 한다. 이전에 윈도우에서 git bash 명령어를 이용해서 구글링을 통해 파일을 올렸던 기억은 있었는데, 회사에서는 svn 을 사용하다보니 정말 오랜만에 다시 git 에 로그인 했다. 1. local 저장소에서 git init 명령어를 사용해서 git 을 시작한다. $ git init $ git branch -M main // 기준 브랜치를 main 으로 설정 2. git init 후 온라인에서 git 아이디 생성하여 가입 관련링크 > https://github.com GitHub: Let’s build from here GitHub is where over 100 million devel..

Dev/Git 2023.11.30

git 설치하는 방법 및 간단한 명령어

- 설치 환경 : macOS 13.4   1.  git 설치하기  1) https://brew.sh/  HomebrewThe Missing Package Manager for macOS (or Linux).brew.sh 2) 상단 링크 접속 후 아래와 같은 명령어를 복사하여 terminal 에 복사 한다   -  복사 대상 명령어 :/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"  이때 터미널에 복사해서 사용했더니 명령어 실행 권한이 없다고 떠서 ( permission denied )  chmod u+x 또는 su ./bin/bash ~ 로 입력했더니 정상적으로 실행되는 것을 확인할..

Dev/Git 2023.11.29

2023 정보보안기사 4회차 필기 합격 후기

23/10/20 오전 9시에 합격 안내 문자가 날아와서 기쁜 마음으로 사이트 확인 결과 아래와 같은 점수로 합격했다. 나중에 스스로 보기도 좋겠지만, 준비할 때 어느정도 까지 공부했는지 공유하기 위해 글을 남겨본다. 정보보안기사 사이트 링크 https://www.cq.or.kr/한국방송전파진흥원 대기열www.cq.or.kr 준비 기간 23년 9월 4일에 접수 후 2023 알기사 정보보안기사 필기 책을 구매해서 시험일인 23년 10월 07일 까지 한달 정도 준비 했다. 처음 2주간은 이론편을 한번 가볍게 읽는다는 마음으로 1회독 진행하였는데, 워낙 양이 많기도 하고 간만에 이론공부하려니 공부 습관이 안들어서 설렁설렁한 경향이 있다 ㅎㅎ; 특히 암호학 부분이 1회독 때에는 이해가 잘 안가서 이 부분만 두번정..

java.lang.ClassNotFoundException 오류 수정

실습내용 서블릿 컨테이너 초기화 후 애플리케이션 초기화가 되는 과정 확인 1) 실행했는데 spring/hello-spring 호출시 404 에러 발생 Caused by: java.lang.NoClassDefFoundError: org/springframework/web/context/WebApplicationContext > 스프링 라이브러리를 제대로 못 읽어 오는 건가 싶어서 Settings > Build, Excution, Deployment > Build Tools > Gralde 에서 'Build and run using', 'Runt tests using' 을 IntellJ IDEA 로 변경 후 NoClassDefFoundError 은 사라짐 2) java.io.IOException: java...

Dev/Springboot 2023.10.19