728x90

All 193

JPA GenerationType 속성

작성 계기 JPA를 공부 하면서 코드를 작성하던중 GenerationType.AUTO를 사용 하였습니다. 뭔가 auto_increments 가 적용 될거 같아서 사용하였지만 DB에 "hibernate_sequence" 테이블이 생성 되었습니다. (Mysql을 사용 하였습니다.) 그래서 뭐지 하다가 GenerationType 속성에 대해서 알아 보게 되었고 간단 하게 나마 정리 한 내용을 작성 하게 되었습니다. GenerationType이란? GenerationType은 JPA에서 엔티티의 주키(primary key)를 생성하는 방법을 지정하는 열거형(Enum)입니다. AUTO DB 에 따라 설정 변경됩니다. 예를 들면 Mysql은 AUTO_INCREMENTS, ORACLE : SEQUENCE 등으로 설정..

BackEnd/Spring Boot 2023.06.09

JPA의 ddl-auto 속성과 그 특징

ddl-auto 옵션 JPA를 사용할 때, ddl-auto라는 속성을 설정하여 데이터베이스의 스키마(DATABASE SCHEMA)와 JPA 엔티티 클래스의 매핑을 자동으로 처리할 수 있습니다. 설정 방법 application.yml OR appliaction.properties 에 "spring.jpa.hibernate.ddl-auto : 옵션" 을 작성하여 사용한다. 옵션 내용 create-drop 운영 환경 : DEV 동작 시점 : 애플리케이션 실행 시 및 종료 시 동작 내용 : 실행 : 기존의 동일한 이름의 테이블이 존재하면 테이블 삭제 후 생성 종료 : 스키마 삭제 update 운영 환경 : QA 동작 시점: 애플리케이션 실행 시 동작 내용: 데이터베이스 스키마 업데이트 (변경된 부분만 반영) c..

BackEnd/Spring Boot 2023.06.09

JPA 적응기_1

개요 이 글은 JPA를 테스트 하기 위하여 E-commerce 컨셉으로진행하며 JPA(Java Persistence API)를 여러 상황에서 사용한 경험을 공유 할려고 합니다. 목표 JPA JPA를 Spring Boot에 적용 하며 가독성 높은 코드 구성 엔티티 매핑 조회와 검색 트랜잭션 관리 성능 최적화 데이터베이스 설계 최대한 RDS에서 여러 상황이 나올수 있도록 구성 테이블 구조, 관계 설정, 인덱싱 등을 포함 구성 GIT 현재 셋팅 중이니 추후 코드를 참고해 주시면 감사하겠습니다. GITHUB : jpa-e-commerce Mysql sql문은 실시간으로 변경 될수 있으며 계속 해서 변경할 예정입니다. 최근 SQL 및 RDS구조는 ERD _CLOUD_ECOMMERCE 를 참고 해주시면 감사하겠습니..

BackEnd/Spring Boot 2023.05.21

JPA란?

JPA 란? 자바 언어를 위한 ORM (Object-Relational Mapping) 표준 스펙입니다 JPA 특징 Entity 객체에 특정 어노테이션을 선언하면 DB에 자동으로 맵핑 된다. ORM 제공 DB간의 변환, 영속성 관리, 쿼리 작성을 ORM으로 제공된다.] 영속성 : 객체를 메모리에서 DB에 저장 하거나 DB에서 메모리로 로드 하여 객체로 변환 Transaction 관리 애플리케이션의 데이터 변경 작업을 트랜잭션 단위로 묶어서 일관성과 안정성을 유지 할수 있따. 커밋, 롤백을 사용하여 DB상태를 유지 할수있다. 객체 그래프 탐색 연관된 객체들을 탐색 하고 접근 하는 과정 지연 로딩(Lazy Loading) : 연관된 엔티티를 실제로 사용 할때 까지 로딩을 지연 시킨다. 필요한 엔티티만 로딩 ..

BackEnd/Spring Boot 2023.05.21

영속성 이란?

작성 계기 JPA에서 영속성이라는 개념이 중요 하다고 생각한다. 그래서 영속성에 관한 내용만 따로 간단하게 나마 정리를 한다. 영속성 이란? 내가 이해한 영속성은 이러하다. 객체를 메모리에서 DB에 저장 하거나 DB에서 메모리로 로드 하는 과정 메모리 메모리는 JVM Heap Memory에 저장이 된다. 1차 캐쉬 Request 가 종료되면 삭제 된다. 2차 캐쉬 Request가 종료 되면 삭제 되지 않는다. 종료 시점을 설정할수있다. DB에서 데이터를 가져올때 캐쉬에 저장 되며 로직 실행중에 같은 데이터가 필요하면 DB에 접근이 아니라 캐쉬에서 먼저 가져와 데이터를 변경한다. 1차 캐쉬 & 2차 캐쉬 장단점 1차 캐쉬 장점 JVM Heap 메모리에 위치 하여 접근 속도가 빠르다. 동일한 Transact..

BackEnd/Spring Boot 2023.05.21

JPA Entity 작성_1 (공통, 같은 테이블)

1. 공통 Entity JPA를 사용하면 데이터베이스의 테이블과 자바 객체를 매핑할 수 있습니다. 때로는 여러 개의 엔티티에서 공통으로 사용되는 필드를 가지는 공통 엔티티를 만들고 싶을 수 있습니다. 이러한 상황에서는@MappedSuperclass 사용하여 공통 엔티티를 생성할 수 있습니다. @MappedSuperclass public class CommonEntity { @Column private Date registDate; @Column private Date modDate; } 2. 같은 테이블에서 ID를 설정 할때 보통 카테고리나 댓글을 만들때 대댓글, 부모 카테고리를 선언하기도 하는데 같은 테이블 내에서 선언한다. 이를 위해 아래와 같이 선언하면된다. @Entity @Table(name = ..

BackEnd/Spring Boot 2023.05.15

[Jmeter]부하 테스트_Window 기준

사용 계기 백엔드 개발을 하면서 부하 테스트는 필수적인 작업 중 하나입니다. 하지만 보통 Postman과 같은 툴로는 원하는 결과를 도출하기 어렵다는 것을 느꼈습니다. 그러던 중 우연히 알게 된 Jmeter은 DB에 접속하여 SQL문으로 바로 부하테스트를 할 수 있을 뿐만 아니라 RestAPI 테스트를 요청할 수 있는 기능들이 있었습니다. 여러 가지 데이터들로 결과를 얻을 수 있기 때문에, 좀 더 상세한 결과를 얻고자 할 때 매우 유용한 툴입니다. 이번에는 Jmeter을 처음 사용해보았지만, 기초적인 사용 방법을 정리해보고자 합니다. JMeter란? JMeter은 Apache 소프트웨어 재단에서 개발 및 유지보수하는 오픈 소스 부하 테스트 도구입니다. Java로 작성되었으며, 다양한 프로토콜 (HTTP,..

Server 2023.05.11

jasypt PBEWITHHMACSHA512ANDAES_256 설정(EncryptionOperationNotPossibleException)

에러코드 PBEWITHHMACSHA512ANDAES_256 설정시 _ EncryptionOperationNotPossibleException기본 스펙 implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5' 상황 암호화 알고리즘 기본으로 설정된 PBEWithMD5AndDES는 동작 하나 알고리즘을 PBEWITHHMACSHA512ANDAES_256 변경시 EncryptionOperationNotPossibleException이 뜬다 해결 하려고 했던 노력

Unresolved 2023.05.01

jasypt 설정 하기

jasypt 설정 기본순서 dependency 추가 config bean 코드 추가 application.yml에 jasypt 사용할 bean설정 설정 dependency 추가 implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5' config bean 코드 추가 import org.jasypt.encryption.StringEncryptor; import org.jasypt.encryption.pbe.PooledPBEStringEncryptor; import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig; import org.springframework.bea..

BackEnd/Spring Boot 2023.05.01

jasypt 란?

jasypt란? Jasypt(Java Simplified Encryption)는 자바 애플리케이션에서 쉽게 암호화 기능을 구현할 수 있도록 도와주는 라이브러리입니다. 암호화 관련 코드를 작성할 필요 없이, 간단한 설정만으로 암호화 기능을 적용할 수 있습니다. Jasypt는 대칭키 암호화와 비대칭키 암호화를 모두 지원하며, 다양한 알고리즘과 모드를 제공합니다. 또한, 프로퍼티 파일이나 환경 변수와 같은 설정 정보를 암호화하는 기능도 제공하여, 보안에 민감한 정보를 보호할 수 있습니다. Spring Framework와의 연동도 용이하며, Spring Boot에서는 jasypt-spring-boot-starter를 이용하여 설정하기 쉽게 제공됩니다. 따라서, Spring 기반의 애플리케이션에서 암호화 기능을 ..

BackEnd/Spring Boot 2023.05.01
728x90