본문 바로가기

스프링부트18

[Spring Boot] 엔티티에서 Setter 사용에 대한 생각 이번 포스팅에서는 고민하고 있는 생각들을 적어보려 한다. 그래서 이번에 생각해본 주제는 데이터베이스와 바로 직결되어 있는 엔티티, 그 중에서도 엔티티의 데이터가 변경되는 Setter(세터) 메서드에 대한 고민들이다. 생각하고 고민하던 것들을 나열해 본다. 엔티티는 소중하다 엔티티는 굉장히 소중한 객체이며 클래스라 생각한다. 데이터베이스 테이블과 동일한 데이터를 담는 곳이기 때문이다. 따라서 이 데이터가 잘못되었거나 없다거나 부문별하게 변경될 수 있다 생각하면 아찔하다. 그래서 엔티티를 다룰때에는 반드시 소중하게 다뤄야 할 필요가 있다. 새로운 엔티티가 생성되는 것인지, 이미 만들어진 엔티티를 수정하는 것인지 판단해야한다. 혼자 작업을 할 때에는 이런것들은 개발자 한 사람이 다 생각하기때문에 전혀 문제가 .. 2023. 1. 8.
[Spring Boot] 앱 실행시 banner 만드는 방법 스프링부트 프로젝트를 개발하다 보면 앱을 실행할 때 톰캣이 실행되면서 상단에 배너가 뜨는 것을 보실 수 있습니다. 아무런 설정을 하지 않았다면 Spring이라는 글자와 함께 버전 정보가 나타나게 됩니다. 이번 포스팅에서는 스프링부트 애플리케이션 실행 시 등장하는 배너를 만드는 방법에 대해서 알아보겠습니다. 배너 생성 사이트 배너를 생성하기 위해서 고민하실 필요는 없습니다. 원하는 글자만 입력하는 배너를 만들어 주는 사이트가 있습니다. 배너 생성사이트: https://devops.datenkollektiv.de/banner.txt/index.html 사이트에 들어가시면 아래와 같은 화면이 나타납니다. 여기서 원하는 글자를 입력해서 배너를 만들 수 있습니다. 저는 예를들어서 Customer라는 배너 글자를 .. 2022. 6. 8.
[Spring Boot] Service 테스트 코드 작성하기 (feat. Kotlin) 지난 포스팅에서는 Entity를 생성하고 Repository를 만들어서 테스트 코드를 작성해 보았습니다. 2022.06.04 - [쿤즈 Dev/Spring Boot] - [Spring Boot] Repository 테스트 코드 작성하기(feat. Kotlin) [Spring Boot] Repository 테스트 코드 작성하기(feat. Kotlin) 스프링 부트 프로젝트를 진행하면서 이제는 선택이 아닌 필수가 되는 것 중 하나가 바로 테스트 코드의 작성입니다. 테스트 코드는 무작정 작성해도 되지만 잘 작성해 놓으면 여러 가지 오류에 koonsland.tistory.com Repository를 만들 때에는 간단하게 JpaRepository를 상속받았고 API하나를 추가하여 테스트를 진행해 보았습니다. 이번.. 2022. 6. 7.
[Spring Boot] Repository 테스트 코드 작성하기(feat. Kotlin) 스프링 부트 프로젝트를 진행하면서 이제는 선택이 아닌 필수가 되는 것 중 하나가 바로 테스트 코드의 작성입니다. 테스트 코드는 무작정 작성해도 되지만 잘 작성해 놓으면 여러 가지 오류에 대해서 대처가 가능합니다. 이번 포스팅에서는 Repository를 만들고 테스트 하는 방법에 대해서 알아볼게요. JPA를 이용해 Repository 만들기 레포 테스트를 위해서는 우선 클래스를 만들어야 합니다. JPA를 이용하면 이러한 Repository 클래스들을 손쉽게 만들고 CRUD가 가능합니다. 먼저 회원 Entity를 만들어 보겠습니다. @Entity class Member( var name: String, var age: Int, ) { @Id @GeneratedValue @Column(name = "membe.. 2022. 6. 4.
[Spring Boot] HttpMediaTypeNotAcceptableException 에러 해결 방법(트러블 슈팅) 프로그래밍을 하다보면 여러가지 로그들을 마주하게 됩니다. 특히 에러로그에 대해서는 주의 깊게 봐야할 필요가 있습니다. 이번 포스팅에서는 HttpMediaTypeNotAcceptableException 에러가 나는 이유를 알아보도록 하겠습니다. HttpMediaTypeNotAcceptableException 스프링 부트로 프로젝트를 만들고 API를 만들어서 테스트 하던 도중 아래와 같은 에러가 발생했습니다. org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation 항상 Exception이 나올때는 어떠한 이유인지 명확하게 밝혀주기 때문에 로그를 잘 보는것도 매우 중요하다 생각합니다... 2022. 4. 22.
[Spring Boot] PostgreSQL 접속하기 위한 설정 방법 스프링 부트를 이용하여 여러 가지 웹 애플리케이션을 만들거나 공부를 하실 텐데요. 웹 애플리케이션을 만들기 위해서는 반드시 따라오는 부분이 바로 데이터베이스(DB)입니다. 데이터베이스에는 대표적으로 Oracle, Mysql, MariaDB, MS-SQL과 추가적으로 PostgreSQL이 있습니다. 이번 포스팅에서는 PostgreSQL을 접속하기 위한 스프링 부트 설정을 알아볼게요. 스프링 부트 PostgreSQL 설정방법 우선 스프링 부트에서 설정하기 위해서는 아래와 같은 몇 가지 설정을 해야 합니다. pom.xml / build.gradle 라이브러리 추가 application.properties / application.yml 우선은 데이터베이스를 연결해야 하기 때문에 접속할 수 있는 라이브러리를 추.. 2022. 4. 19.
[Spring Boot] 스프링 부트 profile 설정(스프링 부트 2.4.0 이후) 스프링 부트를 사용하면서 개발하다 보면 개발서버 혹은 로컬 서버에서의 설정들과 운영서버에서의 설정들이 다를 경우가 대부분인 것 같습니다. DB 설정부터 시작해서 여러 가지 설정들이 다르기 때문에 이 부분들을 매번 변경하기는 쉽지 않습니다. 이번 포스팅에서는 profile을 이용해서 각자 다른 설정들을 손쉽게 적용하는 방법에 대해서 알아보겠습니다. 스프링 부트 2.4.0 이후 profile 설정 yml 스프링 부트 2.4.0 이후 버전부터는 이 설정을 하는 방법이 변경되었습니다. 기존 방법은 deprecated 되었기 때문에 새로운 프로젝트를 이용해서 스프링 부트 2.4.0 이후 버전을 사용하시는 분들은 아래와 같이 사용이 가능합니다. spring: profiles: active: dev —- # dev .. 2022. 4. 18.
[Spring Boot] Exception 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가) 웹 애플리케이션을 리뉴얼 하거나 기존 내용을 이용해서 새로운 기능을 넣을경우, 혹은 라이브러리가 달라질경우 다양한 경우들에서 Exception들을 마주하게 됩니다. 이번 포스팅에서는 지원되지 않는 문자 집합에 관련된 Exception이 발생했을때 해결방안에 대한 내용입니다. 지원되지 않는 문자 집합 이 Exception의 경우는 DB에 세팅된 문자 인코딩 방식이 JDBC에서 지원하지않는 인코딩 방식이기 때문에 발생되는 에어입니다. HTML에서도 그렇고 Java에서도 그렇고 DB까지 한글에 관련된 인코딩 문제로 과거 많은 고생들을 했던것 같습니다. 제가 사용하던 애플리케이션에서는 기존에 ojdbc8.jar를 사용했습니다. 그리고 DB는 KO16MSWIN949이며 이는 JDBC에서 지원하지 않는 인코딩입니다.. 2022. 3. 22.
[Java] LocalDateTime 값을 String 포멧으로 변환하는 방법 Spring Boot를 사용하여 웹 애플리케이션을 만들다 보면 마주하는 데이터 타입이 LocaDateTime입니다. 로그나 액션을 취한 시간을 DB에 기록해야 할 필요성이 있기 때문이죠. 그대로 저장하고 그대로 사용하면 좋겠지만 또 변환을 해야 할 필요성이 있는 경우도 많습니다. 이번 포스팅에서는 LocalDateTime 값을 String 포멧으로 변환하는 방법을 알아볼게요. LocalDateTime 클래스 Java8 에서 등장한 클래스가 LocaDateTime입니다. 이 클래스는 타임존의 개념이 필요 없는 날짜와 시간에 대한 정보를 저장하고 나타내기 위해서 사용하는 클래스입니다. 그래서 Dto를 이용해서 브라우저에서 서버로 시간을 넘겨주거나 Database에 저장하기 위해 Entity를 만들 때 주로 .. 2022. 3. 16.