본문 바로가기

study

(126)
엉터리 정리 - 메이븐과 그래들 참고자료 : 책 [스프링 부트 시작하기] 메이븐과 그래들은 빌드 툴, 프로젝트 관리 도구이다. 메이븐은 XML을 기반으로 의존성 및 디렉터리 구조 관리 등의 기능을 제공한다. 하지만 라이브러리가 추가되거나 각각의 라이브러리가 서로 다른 버전의 라이브러리를 참조하는 종속성을 가지고 있을 경우에는 관리가 어려워지는 문제가 있다. 또한 XML의 특징인 구조화는 사람이 알아보기에는 쉽지만 XML문서의 양이 방대해지는 단점이 있다. 이에 대한 대안으로 그래들이 주목받는다. 그래들은 JVM기반의 빌드 도구, Groovy를 이용한 빌드 자동화 시스템이고, 메이븐과 호환된다. 설정이 간편하고, 프로젝트 별로 유연하게 설정할 수 있는 장점이 있다. 최근 들어서는 그래들이 더 많이 사용되고 있다.
엉터리 정리 - 테스트 코드 정확한 내용정리 아니고, 사용법만 적은 것임. JpaRepository를 사용할 때 직접 메인 코드를 통해 DB 테스트를 할 수 있지만, 테스트 코드를 사용해서 테스트할 수 있다. 스프링 부트 프로젝트에는 src 아래 main과 test 폴더가 있는데 test 폴더 밑에 코드를 작성해 테스트를 할 수 있다. 프로젝트를 시작할 때 제공되는 기본 Test코드를 상속받아 테스트 클래스를 작성한다. 메소드에는 @Test라는 어노테이션을 붙인다. 테스트할 때, 메소드 별로 코드를 실행할 수 있다. 테스트 코드에서 실행한 쿼리도 실제 DB에 반영된다. DB 반영을 원하지 않는다면, 메소드 위에 @Transactional을 붙이면 된다. 쿼리는 실행되지만, 전 상태로 Rollback해준다.
REST API 만들기 간단히 설명 REST API는 정보를 주고받는 형식이다. 소프트웨어와 소프트웨어(소프트웨어가 아닌 것들도)가 지정된 형식으로 정보를 요청, 응답하는 수단을 API라고 한다. 요즘은 REST란 형식의 API를 사용한다. 과거의 soap를 대체한 것이다. REST의 특성은 각 요청이 어떤 동작이나 정보를 위한 것인지 요청의 모습 자체로 추론이 가능하다. REST API 요청할 때, HTTP의 메소드로 요청한다. 참고 자료: www.youtube.com/watch?v=iOueE9AXDQQ&t=126s 스프링 부트에서 JPA를 사용해 REST API를 만들 수 있다. 1. 요청, 응답에 사용하는 메시지 클래스를 만든다. 스프링에선 객체를 그냥 리턴해도 JSON으로 반환하기 때문에 주고받을 정보의 필드를 갖는 클..
엉터리 정리 - 엔티티 필드에 기본 값 설정해서 넣기 엔티티마다 공통된 값이 들어가는 필드에 대해 자동으로 설정하도록 할 수 있다. 먼저 config파일을 만든다 @Configuration - 설정 파일임을 선언 @EnableJpaAuditing - 감시를 활성화 시킨다. public class JpaConfig { } 그 다음 컴포넌트를 만든다. AuditorAware 인터페이스를 구현한다. @Component public class LoginUserAuditorAware implements AuditorAware { @Override public Optional getCurrentAuditor() { return Optional.of("AdminServer"); } } 그리고 설정된 값이 들어갈 엔티티의 필드 위에 어노테이션을 붙인다. @CreatedB..
엉터리 정리 - java.util.Optional<T> Optional 클래스는 T 타입의 객체를 포장하는 Wrapper class다. 모든 타입의 객체가 들어갈 수 있다. Optional 객체를 사용하면 NullPointerException 예외 피할 수 있다. 널 값으로 인해 발생하는 예외를 처리할 수 있게 된다. 스프링부트에서 JPA를 사용할 때, JpaRepository를 통해 데이터를 받아올 때 null 값인 경우를 대비해 Optional 타입으로 값을 받아온다. Optional item = itemRepository.findById(id); Optional 메소드 static Optional empty() 아무런 값도 가지지 않는 비어있는 Optional 객체를 반환함. T get() Optional 객체에 저장된 값을 반환함. boolean is..
JPA 연관관계 설정하기 데이터끼리는 관계를 갖는다. 그래서 DB 테이블끼리 관계를 설정하기 위해 ForeignKey를 사용한다. 예를 들어 작성자 테이블과 게시글 테이블이 있다면 작성자는 여러 게시글을 작성할 수 있기 때문에 게시글은 작성자 FK를 갖고 있도록 설계해야 한다. JPA는 이런 연관관계를 Entity에 어노테이션을 붙여 설정할 수 있다. 전자가 자신이고 후자가 상대다. @OneToOne - 일대일 @OneToMany - 일대다 @ManyToOne - 다대일 @ManyToMany - 다대다 JPA를 통해 데이터들을 처리하려면 먼저 DB Table과 Java Entity를 만들어야 한다. 2021.03.24 - [study/Spring boot] - JPA와 Entity 기본 2021.03.25 - [study/Spr..
JPA와 Repository(간단히 CRUD) JPA : JAVA Persistence API. ORM(Object Relational Mapping)으로 RDB의 정보를 객체지향으로 활용할 수 있도록 도와주는 도구. JSP의 DAO(Data Access Object)와 같다. JPA는 Object와 RDB를 매핑시켜 데이터를 쉽게 다루는 기술을 제공한다. 쿼리보다 객체를 더 다루기 때문에 프로그래밍에 더 집중할 수 있게 해주는 라이브러리다. JPA는 JpaRepository 인터페이스를 제공한다. Entity에 대해서 기본적인 CRUD를 사용할 수 있게 해준다. 간단히 만들 수 있다. repository 인터페이스를 만들고 JpaRepository 인터페이스를 상속받는다. T는 저장할 객체의 타입이고, U는 PK의 타입이다. 따로 구현해야 하는 코..
JPA와 Entity 기본 JPA : JAVA Persistence API. ORM(Object Relational Mapping)으로 RDB의 정보를 객체지향으로 활용할 수 있도록 도와주는 도구 JPA는 Object와 RDB를 매핑시켜 데이터를 쉽게 다루는 기술을 제공한다. 쿼리보다 객체를 더 다루기 때문에 프로그래밍에 더 집중할 수 있게 해주는 라이브러리다. JPA를 사용하기 위해 먼저 표기법을 알아야 한다. Camel Case : 첫문자는 소문자, 띄어쓰기 대신 대문자로 표기 - 자바의 변수를 선언할 때 사용 - userId Snake Case : 모두 소문자로 표기, 띄어쓰기는 언더바로 - DB칼럼에 사용 - user_id 표기법을 지켜야 JPA가 매핑시킬 수 있다. Entity : DB의 테이블과 대응되는 JPA의 클래스..