전체 글 103

JPA의 영속성 기본 개념 & 엔티티 매니저

영속성 ( Persistence ) 영속성이란 사전의 단어대로 영원히 존재하는 속성이다. 보통 데이터베이스(DB)를 접해봤다면 한번 쯤은 들어봤을 말이다. JPA에서는 영속성 컨텍스트라는 개념이 중요하다. 앞에서 영속성의 의의는 말했으니 컨텍스트만 알면 영속성 컨텍스트가 무슨 역할을 하는지 알 수 있다. 컨텍스트(Context)는 사전적으로는 문맥의 뜻이지만, IT 쪽에서는 '환경 정보, 환경' 정도의 뜻이 있다. 합쳐서 말하면 영속성 컨텍스트( Persistence Context )는 영구적으로 저장하는 환경이다. JPA에서 영속성 컨텍스트는 엔티티 매니저를 하나 생성할 때 생성 된다. 엔티티 매니저 팩토리 ? 매니저 ? 간단하게 엔티티 매니저를 설명하자면 공장에 고용된 Entity를 관리하는 사람이다..

JPA 2022.06.23

[에러] Failed to evaluate Jacson - InvalidDefinitionException: Cannot handle managed/back reference

더보기 2022-05-19 17:50:04.904 WARN 21880 --- [nio-8080-exec-3] .c.j.MappingJackson2HttpMessageConverter : Failed to evaluate Jackson deserialization for type [[simple type, class com.kyu.test.domain.reservation.Reservation]]: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot handle managed/back reference 'member-reservations': no back reference property found from type `java.ut..

Spring/error 2022.05.19

Spring Boot - Execution failed for task ':bootRun'.

Execution failed for task ':bootRun'. > Process 'command 'C:\Program Files\Java\jdk1.8.0_261\bin\java.exe'' finished with non-zero exit value 1 새로 맞이하는 에러는 java.exe가 비정상적으로 종료되었다는거다. 원래 IntelliJ 에서 이 에러는 Settings -> Build Execution, Deployment의 Build Tools로 가면 여기서 Build and run using , run tests using 설정이 기본값인 Gradle로 되어있는 기본적인 오류이다. 근데 나는 의존성 주입을 잘 못해서 난 것 같다. 비밀번호를 암호화 하려고 쓰는 BCryptPasswordEnc..

Spring/error 2022.05.16

Spring boot - 멀티 모듈에서 gradle dependencies 오류(해결 안 됨)

문제점 : Root Project에서 member-api-server라는 모듈에 datastore를 implementation을 해야함. 왜냐면 datastore에 spring-data-jpa 의존성을 가져와야하기 때문에 이렇게 루트 프로젝트의 build.gradle에 project를 설정하고 core 폴더의 datastore를 implementation을 하는데 member-api-server로 테스트 로직을 돌리면 MemberServiceImple에서 사용하는 JPA의 save 메소드를 찾을 수 없다고 뜬다. 비슷한 에러를 찾다가 일단 시도해보면서 하기로 하자 https://velog.io/@ganymede/GradleDependencies-%EB%AA%BB-%EB%B6%88%EB%9F%AC%EC%9..

Spring/error 2022.04.26

Spring Reactive Data Persistence - 리액트 데이터 퍼시스턴스

Spring WebFlux를 이용해서 Reactive를 구현했지만, DB가 Reactive하지 않고 막혀버린다면 Reactive하다고 할 수 없다. 스프링 데이터 리액티브 스프링 데이터는 몽고DB(MongoDB), 카산드라(Cassandra), 레디스(Redis), 카우치베이스(Couchbase)로 데이터를 저장할 때 Reactive 프로그래밍 모델을 지원한다. RDBMS, JPA는 리액티브 Repository가 지원되지 않는데, JDBC 드라이버도 블로킹 되지 않아야 하는데 그게 안 되기 때문이다. 하지만! DB가 리액티브가 아니어도 데이터를 가져와 리액티브 타입으로 변환하는 식으로 사용할 수 있다. 1. // 데이터를 가져와서 리액티브로 변환 List members = repo.findByGender..

Spring 2022.04.09

Spring에서 REST

스프링에서 REST 방식의 통신을 할 때는 간단하다. @Controller 를 @RestController로 바꿔주기만 하면 된다. @Controller 와 @RestController의 차이가 뭘까 기본적으로 Spring MVC에서는 Controller에서 할 일을 찾은 후 그 결과를 Model에 담고 호출할 View를 찾는다. @Controller //@RestController @RequestMapping("/member") public class MemberController { private final IngredientRepository ingredientRepo; private TacoRepository tacoRepo; @GetMapping("/") public String showInde..

Spring 2022.04.02

JPA(Java Persistence Api) 사용하기

JPA(Java Persistence Api) 란 무엇인가?? 말 그대로 자바 영속성 API이다. 프로그래밍에서 영속성이란 데이터를 생성한 프로그램이 종료되어도 남아있는 데이터의 특성을 얘기한다. 우리가 네이버 회원가입을 한 번만 하고 다음부터는 가입 시의 아이디와 비밀번호만 입력하면 로그인이 되는 것처럼 데이터를 파일 또는 데이터베이스에 저장시키는 것이다. JPA는 자바 ORM(Object Relation Mapping : 객체-관계 매핑) 기술의 표준 명세로 Java에서 제공하는 API이다. 기존 EJB (Enterprise Java Bean)에서 제공되던 Entity Bean을 대체하는 기술이다. JPA의 등장배경? 관계형 DB는 성능이 좋고, 기능이 많지만, 객체지향언어인 Java에서 접근하려면 ..

Spring 2022.03.26

Spring Boot JdbcTemplate 이용해서 데이터 읽고 쓰기

JdbcTemplate란?? JdbcTemplate은 JDBC Core 패키지의 중심 클래스다. JDBC 사용을 단순화하고 일반적인 오류를 방지하는 데 도움을 주고, SQL을 제공하고 결과를 추출하는 애플리케이션 코드를 남긴다. JdbcTemplate는 SQL 쿼리 또는 업데이트를 실행하여 ResultSets에 대한 반복을 시작하고 JDBC 예외를 포착하고 org.springframework.dao패키지에 정의된 일반적이고 보다 유익한 예외 계층으로 변환해준다. 공식 문서 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html 말 그대로 Jdbc Templat..

Spring/error2 2022.03.26

Spring Boot 뷰 컨트롤러 ( View Controller )

일반적으로 보여줄 페이지(View)를 정의할 때에는 스프링 컴포넌트 스캔으로 Controller를 자동으로 찾기 위해 @Controller 어노테이션을 붙인다. @Controller는 요청을 처리할 URL ( ex : www.naver.com/webtoon 에서의 webtoon )을 하나씩만 가져야 하기 때문에 @RequestMapping 또는 Get, Post,Put 등의 @~~Mapping ( ~~은 앞에서 말한 Get 등)을 붙이고 요청 받을 주소를 적는다. 아래 코드 참고 위의 방식으로 정의한다. 하지만, 위와 다르게 요청받을 주소와 보여줄 View만 적어놓는 방식이 있는데 뷰 컨트롤러라고 한다. import org.springframework.context.annotation.Configurat..

카테고리 없음 2022.03.24

Spring Boot 폼 입력 유효성 검사(Form Validation )

유효성 검사(Validation)이란? 회원 가입할 때를 예를 들어보자. 아이디 : 7-15자 비밀번호 : 12-20자 사이의 영문+숫자 주소 등등 보통 이렇게 필요하다고 치면 사용자가 입력한 데이터를 서버에 보낼 때, 서버는 회원이 잘 입력했나 확인을 해봐야한다. 값이 올바른지 아닌지 확인하는 것을 유효성 검사라고 한다. 아래는 Member라는 form이 전송 되었다고 가정했을 때 if문으로 유효성 검사를 해 본 것이다. @PostMapping public String processJoin(Member member, Errors errors) { // if(!(member.getId().length() >= 7 && member.getId().length() = 12 && member.getPw().l..

Spring 2022.03.24