스프링부트
-
[Lombok] @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor스프링부트 2023. 5. 8. 14:45
롬복 생성자 어노테이션을 사용하게되면 아래와 같은 장점이 있다. 코드 간결성: 생성자를 직접 작성하는 대신 Lombok 어노테이션을 사용해 코드양을 줄일 수 있다 유지 보수성: 클래스의 필드가 변경되거나 추가되었을 때 생성자 코드를 일일히 변경하지 않아도 됩니다. 롬복의 생성자 어노테이션에는 대표적으로 @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor 가 있지만 사용할때마다 헷갈려 구글링하기때문에 포스팅을 통해 확실히 정리해보자 NoArgsConstructor @NoArgsConstructor 는 어노테이션이 붙어있는 해당 클래스에 파라미터가 없는 기본 생성자를 자동으로 생성해준다. 기본 생성자를 자동으로 생성해 주기 때문에 코드가 간결..
-
[JPA] 관계형 데이터 베이스 매핑 (One To One)스프링부트 2023. 3. 30. 14:42
JPA를 사용하는 애플리케이션에서 테이블의 연관관계를 엔티티 간의 연관관계로 표현할 수 있습니다. 하지만 객체와 테이블의 성질이 달라 정확한 연관관계를 표현할 수 없기 때문에 이런 제약을 보완하며 연관관계를 매핑하고 사용하는 방법에 대해 알아보겠습니다. 일대일 단방향 매핑 위 그림은 일대일 관계를 만들기 위해 만든 두개의 엔티티 user 테이블과 userinfo 테이블입니다. user 에 대해서는 하나의 userinfo만 매핑되므로 일대일 관계입니다. userInfo 엔티티에 OneToOne 애노테이션을 사용해 일대일 관계를 매핑해준 뒤 테스트 코드를 작성해보겠습니다. 테스트코드의 실행결과로 위와같은 로그가 찍혔습니다. userInfo를 조회했는데 user 엔티티도 같이 조회가 된 것입니다. 엔티티를 조..
-
[JPA] 변경 감지와 병합스프링부트 2022. 12. 27. 21:05
** 개인 학습을 위해 적은 글이니 잘못된 정보 지적은 언제든 환영입니다 ** JPA 의 준영속 엔티티를 수정하기 위한 두가지 방법에 대해 알아보자 1. 변경 감지 기능 사용 2. 병합 사용 더보기 준영속 엔티티란? 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. 영속성 컨텍스트란? 엔티티를 영구 저장하는 환경이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 역할을 한다.em.persist(member) 를 실행하게 되면 member 엔티티를 영속성 컨텍스트에 저장한다는 의미이다.저장된 영속성 컨텍스트는 플러시 되는 시점에 데이터베이스로 반영된다. 변경감지 1. primary key를 이용해 영속성 컨텍스트에서 엔티티를 조회한다 2. 조회한 엔티티의 필드들을 변경하려는..
-
롬복을 이용한 리팩토링스프링부트 2022. 7. 25. 16:46
자바코드는 클래스를 만들고 생성자를 추가해줘야 하는데 이를 계속 반복하려면 상당히 귀찮고 코드가 비효율적이게 됩니다. 이를 개선하기 위해 롬복이라는 기능을 활용해 코드를 리팩토링 해보겠습니다. 롬복을 사용하지 않은 생성자 코드는 생성자를 직접 작성해야하는 불편함이 있습니다. 그러나 @AllArgsConstructor 를 이용하면 생성자 코드를 작성하지 않고 자동으로 사용할수 있습니다. ArticleForm 내부의 toString 메소드 또한 클래스 상단부에 ToString 어노테이션을 이용해 코드를 간략화 할수있습니다 이런 편리한 롬복을 사용하기 위해서는 롬복 라이브러리를 추가해줘야 합니다 롬복 라이브러리를 추가하기 위해서 프로젝트 안의 build.gradle 폴더에 들어가 아래와 같이 롬복 추가 코드를..
-
JPA를 이용한 데이터 조회스프링부트 2022. 5. 3. 00:44
JPA를 이용해 데이터 조회를 하기전 JPA에 대한 선행지식이 필요하다 우리가 DB와 대화하기 위해서는 SQL 문법을 사용해야한다. 하지만 JPA를 사용하면 SQL문이 아닌 Method를 통해 DB를조작할 수 있어 개발자는 객체 모델을 이용해 비즈니스 로직을 구성하는데만 집중할수있다는 장점이 있다. 전에 JPA를 사용하기위해 Entity 와 Repository 클래스를 선언했었다. 그때 사용한 Entity와 Repository를 이용해 데이터를 조회해보자. 위의 코드는 controller의 일부이다. 데이터를 조회하기위해 GetMapping 어노테이션을 활용해서 괄호안의 url을 받았을때 아래를 실행하게 만들어준다 이때 {}안의 id는 id라는 변수를 의미한다. articleEntity 변수 안에 Rep..
-
스프링 부트 ) JPA를 이용한 데이터 저장스프링부트 2022. 5. 3. 00:24
스프링부트에서 데이터를 저장하기 위해서는 1. DTO를 Controller에서 Entity로 전환 2. 전환된 Entity를 Repository를 통해 DB까지 저장 위의 그림은 Controller 코드의 일부이다 Article Entity를 이용한 article변수를 선언해준뒤 dto 클래스의 ArticleForm 안의 toEntity 메소드를 이용해 article에 저장하는 과정이다. toEntity코드는 id를 null값으로 반환하고 view파일중 new파일에서 입력된 title과 content를 반환함으로써 1번 과정을 실행 해준다. 2번 과정을 수행하기 위해 repository 패키지를 만들어주고 그 안에 CrudRepository를 상속받는 ArticleRepository 클래스를 선언한다. ..
-
스프링부트 3일차스프링부트 2022. 4. 6. 02:46
백엔드 개발의 기초에 대해 공부했다 예제를 통해 코드를 작성해보았는데 예제속 비즈니스 요구사항은 데이터 : 회원ID ,이름 기능 : 회원 등록,조회 데이터 저장소는 선정되지않음 이렇게 세가지의 요구사항이 있었다. 이 요구사항을 따르며 웹 애플리케이션을 만들기 위해서는 웹 애플리케이션의 계층구조에 대해 알아야 한다 컨트롤러 -> 서비스 -> 리포지토리 -> DB ㅣ | / ㅣ | / ㅡㅡ 도메인 이런 계층구조를 이용한 웹 애플리케이션 개발 순서는 1. 회원 도메인과 리포지토리 인터페이스 생성 2. 회원 리포지토리 메모리 구현체 생성 (회원 리포지토리 테스트 케이스 작성) 3. 회원 서비스 개발 (회원 서비스 테스트 케이스 작성) 4. 컨트롤러 개발이다 회원 도메인에는 GETTER SETTER를 이용해 id..
-
스프링부트 2일차스프링부트 2022. 3. 29. 21:29
환경설정을 마치고나니 모르는 언어가 많아졌다 SQL, JPA 처음듣는 생소한 단어가 남발한다. 모르는 부분들을 막 넘기지말고 천천히 알아가면서 공부하자 오늘 배운 내용은 정적 컨텐츠와 MVC,API에 대해서 간단하게 배웠다. 간단하게 설명하면 정적 컨텐츠는 유저들의 정보를 저장해 맞춤형 컨텐츠 제공이 안되고 MVC나 API는 가능하다 정적 컨텐츠는 파일을 그대로 내려주어서 모든 유저들이 같은 패턴의 행동만 할수 있다. mvc는 동적 컨텐츠의 일종으로 정보를 저장한 후 맞춤 컨텐츠 제공이 가능하다 viewResolver를 통해 랜더링된 html을 고객에게 전달해준다. api는 정적 컨텐츠와 동적 컨텐츠를 합친것으로 HttpMessageConverter를 통해서 객체를 반환한다 @ResponseBody 에 ..