728x90

전체 글 200

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

VSCode의 VM option 설정

VM Option 설정 jasypt를 설정하면서 VM Option 값을 설정을 해야 햇습니다. 그래서 엄청난 기술은 아니지만 나중에 잊었을때 또 찾기 보다 나중에 사용하기 위해 작성하였습니다. 기본 Directory 구조 root ├─ .vscode │ └─ launch.json ├─ gradlew ├─ gradlew.bat ├─ README.md └─ src ├─ main └─ test 작성 방법 상단 구조를 봤을때 .vscode > launch.json에 작성 하면 된다. { "configurations": [ { ... "vmArgs": [ "-Djasypt.encryptor.password=1234" ] ... } ] }

Editor/VScode 2023.04.30

error: invalid source release: 20

에러코드 error: invalid source release: 20 기본 스펙 { "JDK" : "jdk-20.0.1" "Gradle" : "7.6.1" } 상황 VSCode로 개발을 진행하는데 JDK 20 과 Gradle 7.6.1을 사용 중입니다. Gradle로 bootrun을 실행하려고 하였으나, 실행되지 않았습니다. 이후 clean과 build를 시도하였으나 "error: invalid source release: 20" 이라는 에러가 발생하였습니다. 해결 하려고 했던 노력 Gradle 버전 변경 (7.6.1 -> 8.1.1) 실패 JDK 변경 (20 -> 17) 성공 하지만 JDK 20 버전을 사용할때 같은 문제가 계속 나타 날것이다.

Unresolved 2023.04.30

mysql-connector-j와 mysql-connector-java

mysql-connector-j와 mysql-connector-java 모두 MySQL과의 연결을 위한 JDBC 드라이버이지만, 약간의 차이점이 있습니다. mysql-connector-j Oracle사에서 만든 MySQL Connector/J JDBC 드라이버입니다. 이 드라이버는 MySQL 공식 홈페이지에서 다운로드가 가능하며, Maven 또는 Gradle을 통해 의존성을 추가할 수 있습니다. mysql-connector-java MySQL AB사에서 만든 MySQL JDBC 드라이버입니다. Oracle에 인수되기 전에 만들어진 드라이버로, MySQL Connector/J와 유사하지만, 오래되었기 때문에 최신 버전의 MySQL과는 호환성 문제가 있을 수 있습니다. 결과 따라서, 최신 버전의 MySQL과..

BackEnd/Spring Boot 2023.04.30
728x90