본문 바로가기

SpringBoot8

[spring] 예외처리? Exception Handling? 개발자라면 누구나 한번쯤 예외처리에 대해 깊게 공부해야 할 때가 온다. 단순히 throw, try-catch로 예외처리 했던 과거와는 다르게 좀 더 깊게 알아보자. 에러는 크게 두 종류로 나뉜다. Error 해결(?) 할 수 없는 에러이다. OutOfMemoryError, AssertionError, StackOverflowError, IOError, NoClassDefFoundError 종류는 위와 같이 대표적인 것들이 있다. Exception 예방할 수 있는 에러이다. 실무에서 가장 중요한건 예외처리?.. 엄청난 성능을 가진 로직이나 기똥찬 코드도 에러 한방이면 무용지물이다.(고객의 신뢰도 하락 ..) 예외처리는 기본중에 기본이고, 최대한 여러 방면으로 방어해야 한다. 2022. 8. 17.
[JPA] 필드와 컬럼 매핑 어노테이션 정리 @Column -> 컬럼 매핑 - name -> 필드와 매핑할 테이블의 컬럼 이름 - insertable,updatetable -> 등록, 변경 가능 여부 - nullable(DDL) -> null 값의 허용여부를 설정 - unique(DDL) -> @Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용 - columnDefinition(DDL) -> DB 컬럼 정보를 직접 줄 수 있다. - length(DDL) -> 문자 길이 제약조건, String 타입에만 사용 - precision, scale(DDL) -> BigDecimal 타입에서 사용한다.(Long도 사용 가능), precision은 소수점을 포함한 전체 자릿수를, scale은 소수의 자릿수다... 2022. 8. 1.
[JPA] ddl-auto 주의 및 실무 적용 ddl-auto 종류 hibernate.ddl-auto : 1. create -> 기존테이블 삭제 후 다시 생성(DROP + CREATE) 2. create-drop -> create와 같지만 종료시점에 테이블 DROP 3. update -> 변경된 부분만 반영(운영DB 적용 x) 4. validate -> Entity와 Table이 정상 매핑되었는지만 확인 5. none -> 사용하지 않음(사실상 없는 값이지만 관례상 none이라고 한다.) 주의사항 -> 운영 장비에는 절대 create, create-drop, update 사용 X -> 개발 초기 단계는 create 또는 update -> 테스트 서버는 update 또는 validate -> 스테이징과 운영 서버는 validate 또는 none -> .. 2022. 8. 1.
[spring boot] @Query 어노테이션 @Query란? JPA에서 조인이나 복잡한 조건을 처리해야 하는 경우에 사용한다. 간단한 처리만 쿼리 메소드를 이용하고, 보통은 @Query를 이용하는 경우가 많다. 메소드의 이름과 상관없이 메소드에 추가한 어노테이션을 통해 원하는 처리가 가능하다. @Query의 value는 JPQL로 작성하는데 흔히 객체지향 쿼리라고 불리우는 구문들이다. @Query 장점 필요한 데이터만 선별적으로 추출하는 기능 DB에 맞는 순수한 SQL을 사용하는 기능 select가 아닌 DML(insert, update, delete)등을 처리하는 기능(@Modifiying과 함께 사용) @Query 파라미터 바인딩 ?1. ?2' 와 1부터 시작하는 파라미터의 순서를 이용하는 방식 ':xxx' 와 같이 : 파라미터 이름을 활용하는.. 2022. 6. 14.
[spring boot] JPA 페이징/정렬 처리 JPA의 페이징 처리 JPA는 개발자들이 SQL이 아닌 API의 객체와 메서드를 사용하는 형태로 페이징 처리를 할 수 있다. 페이징 처리할때 사용하는 메소드는 findAll() 이다. findAll()메소드는 ]paRepository 인터페이스의 상위인 PagingAndSortRepository의 메서드로 파라미터로 전달되는 Pageable이라는 타입의 객체에 의해서 실행되는 쿼리를 결정하게 된다. Pageable 인터페이스 Pageable 인터페이스는 페이지 처리에 필요한 정보를 전달하는 용도의 타입으로 인터페이스이기 때문에 실제 객체를 생성할 때는 구현체인 PageRequest라는 클래스를 사용한다. PageRequest 클래스의 생성자는 protected로 선언되어 new를 사용할수 없고, 객체를 .. 2022. 6. 14.
[spring boot] JPA로 CRUD 테스트 JpaRepository 인터페이스 package org.zeorck.ex2.repository; import org.zerock.ex2.entity.Memo; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository // JPA를 사용할 때는 엔티티의 타입정보(Memo)와 @Id 타입(Long)을 지정한다 // JPA는 인터페이스 선언만으로도 자동으로 스프링의 빈(Bean)으로 등록된다 public interface MemoRepository extends JpaRepository { // crud 사용가능 ! } insert 작업 : sa.. 2022. 6. 10.