전체 글 (88) 썸네일형 리스트형 [Spring Boot] Swagger 사용하기 개요프론트엔드와 백엔드간 협업을 하기 위해 백엔드에서 구축한 API 스펙을 문서화 하여 프론트엔드에게 보여줘야한다.이때 API 문서를 효과적으로 만들기 위해 사용할 수 있는 라이브러리를 찾아 보았고, swagger 라는 라이브러리를 알게 되었다. Swagger 란?- Swagger는 API를 문서화하고 테스트할 수 있는 오픈 소스 프레임워크이다. - 어노테이션을 통해 간편하게 API 문서를 자동으로 만들 수 있다. - 자체적으로 사용자 친화적인 UI도 제공해주고 있기 때문에 문서를 쉽게 읽고 테스트할 수 있다. 문서화에 사용되는 어노테이션이 프로덕션 코드에 존재하기에 가독성을 떨어뜨리는 단점도 존재한다. API 스펙이 변했을 때 어노테이션 메타 데이터를 적절하게 바꿔주지 않으면 잘못된 정보를 전달.. 개인 도메인 구입해서 연결하기 개요 네이버 아이피를 직접 입력하여 접속하는 사람들은 한명도 없을 것입니다. 왜냐하면 외우기도 힘들 뿐더러 아이피를 알아야할 이유도 없기 때문입니다. 이러한 행위는 마치 전화번호와 같습니다. 전화번호를 특정 이름에 매칭하여 저장하고 전화를 걸고 싶을때 특정 이름으로 거는 행위와 같기 때문입니다. 이처럼 전화번호의 특정한 이름으로 저장하기 위해서는 도메인 네임이 필요합니다. naver.com 과 같은 이름을 말하는 것입니다. 이번 글에서는 도메인 네임을 얻어서 아이피에 매칭하는 방벙을 다루어볼것입니다. 도메인 네임 구매 및 주소 매핑 저는 도메인 네임을 가비아 라는 사이트에서 구매하였습니다. 구매대행 사이트는 여러개가 있으며 그중 마음에 드시는거 하시면 됩니다. https://www.gabia.com/ 웹.. Error creating bean with name 'entityManagerFactory' defined in class path resource 에러 해결방법: Gradle 클린후 라이브러리 새로 받기 Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: net/bytebuddy/NamingStrategy$SuffixingRandom$BaseNameResolver 갑자기 잘되던 프로젝트에서 이러한 에러가 등장하였다. 보통 entityManagerFactory 에러는 어디부분에서 어떤 에러가 나왔다 정도로는 알려줬던거 같은데 이번 에러는 이름을 만드는데 실패했나? 무튼 도통 감이 잡히질 않았다. 그래서 chat g.. [Javascript] 자바스크립트 URL 인코딩, 디코딩 인코딩 인코딩은 특정 데이터를 다른 형식으로 변환하는 과정이다. URL 에서는 특수문자나 공백과 같은 문자를 전송하게되면 오작동을 일으킬 수 있으므로 특정한 형식으로 변환해야한다. 디코딩 인코딩된 데이터를 원래 데이터로 되돌리는 것이다. 인코딩 / 디코딩 함수 설명 escape() / unescape() - 영문 알파벳과 숫자, 일부 특수문자를 제외하고 모두 인코딩. 특수문자(@, *, -, _, +, ... /) - 1바이트 문자는 %XX의 형태로, 2바이트 문자는 %uXXXX 형태로 변환 encodeURI() / decodeURI() - escape() 함수에서 인터넷 주소에 사용되는 일부 특수문자는 변환하지 않음. 일부 특수문자(ex. https:// , https://와 같은 :, ;, /, =,.. Springboot 3.x.x 에 Querydsl 설정 build.gradle.kts 파일 plugins { id("org.springframework.boot") version "3.2.2" id("io.spring.dependency-management") version "1.1.4" kotlin("jvm") version "1.8.21" kotlin("plugin.spring") version "1.8.21" kotlin("plugin.jpa") version "1.8.21" kotlin("plugin.allopen") version "1.8.21" kotlin("kapt") version "1.8.21" idea } allOpen { // Spring Boot 3.0.0 annotation("jakarta.persistence.Entity") anno.. JPA 임베디드 타입 ( @Embeddable, @Embedded ) 임베디드 타입이란? 임베디드 타입이란 JPA 에서 엔티티에 사용하는 기본 값 타입을 모아 만든 복합적인 값 타입 입니다. 임베디드 타입을 통해 새로운 값 타입을 직접 정의 할 수 있습니다. 사용방법 @Embeddable: 값 타입을 정의하는 곳 @Embedded: 값 타입을 사용하는 곳 기본생성자 필수 (전 기본생성자를 등록하지 않았는데 정상적으로 작동되었습니다.) 임베디드 타입으로 만들 클래스를 만들고 @Embeddable 어노테이션을 적어줍니다. @Embeddable public class Address { private String city; private String street; private String zipcode; } 엔티티에 임베디드 타입을 필드에 추가하고 @Embedded 어노테이션을.. JPA 데이터베이스 스키마 자동 생성 JPA 를 사용하면 애플리케이션 실행 시점에 DDL 을 실행하여 데이터베이스를 정의 할 수 있다. 따라서 애플리케이션 실행 전 클래스를 통해 엔티티를 생성하거나 수정하게 되었을 때, 애플리케이션을 다시 실행하게 되면 테이블이 생성 또는 수정 되게 된다. 이를 통해 테이블 중심 개발에서 -> 객체 중심 개발을 할 수 있게 된다. 또한 데이터베이스 방언을 활용하여 H2, Oracle, Postgresql 등 데이터베이스에 적절한 DDL 을 생성할 수 있습니다. 적용하는 방법 스프링 application.yml spring: jpa: hibernate: ddl-auto: none 자바 persistance.xml 속성 옵션 설명 create 기존테이블 삭제 후 다시 생성 (DROP -> CREATE) crea.. JPA 객체와 테이블 매핑 @Entity @Entity 가 붙은 클래스는 엔티티라 부르며 JPA 가 관리 엔티티로 등록하게 되면 데이터 베이스에 테이블로 생성 - 기본 생성자 필수 - final 클래스, enum, interface, inner 클래스 사용이 제한 - 저장할 필드에 final 사용할 수 없음 속성 @Documented @Target(TYPE) @Retention(RUNTIME) public @interface Entity { String name() default ""; } name: - JPA 에서 사용할 엔티티 이름을 지정할 수 있음. - 기본값은 클래스 이름 (예: Member) - 같은 이름의 엔티티가 없으면 가급적 기본값을 사용 @Table @Table은 엔티티와 매핑할 테이블 지정 속성 @Target(T.. 이전 1 2 3 4 5 ··· 11 다음 목록 더보기