[복습] SpringBoot - Controller / JPA / Entity / Repository

5w31892p·2023년 1월 9일
0

:: Controller

  • @Controller : 해당 클래스 스프링부트 컨트롤러 됨
  • @ResponseBody : URL 요청에 대한 응답으로 문자열을 리턴하라는 의미
  • @RestController : Controller + ResponseBody

:: JPA

  • ORM : 쿼리를 직접 작성하지 않아도 데이터베이스의 데이터 처리 가능
  • JPA(Java Persistence API) : Java 진영에서의 ORM / interface

:: Entity

  • @Entity : JPA가 Entity로 인식
  • @Id : 기본 키로 지정 ( primary key )
    • 동일 값 저장 X
  • @GeneratedValue : 값을 따로 세팅하지 않아도 1씩 자동으로 증가하여 저장
    • strategy : 고유번호 생성 옵션
    • GenerationType.IDENTITY : 해당 컬럼만의 독립적인 시퀀스 생성 후 번호 증가시킬 때 사용
  • @Column : 컬럼의 세부 설정을 위해 사용
    • length : 컬럼 길이 설정
    • columnDefinition : 컬럼 속성 정의할 때 사용
      • columnDefinition = "TEXT" : 내용처럼 글자 수 제한할 수 없는 경우 사용
  • @ManyToOne : N : 1
    • 부모 자식 관계를 갖는 구조에서 사용
  • @OneToMany : 1 : N
    • mappedBy : 참조 Entity의 속성명
    • CascadeType.REMOVE : 부모 삭제시 자식도 모두 삭제

:: Repository

  • 실제 데이터와 연동
  • Entity에 의해 생성된 DB 테이블에 접근하는 메서드 사용하기 위한 인터페이스
  • @SpringBootTest : 테스트 클래스임을 의미
  • @Autowired : 스프링의 DI(의존성주입) 기능
    • 순환참조와 같은 이유로 생성자를 통한 방식을 권장함
  • @Test : 해당 메서드가 테스트 메서드임을 나타냄
  • assertEquals (기대값, 실제값) : 기대값과 실제값이 동일한지 조사, 동일하지 않다면 테스트 실패
  • Optional은 null 처리 유연하게 하기 위해 사용된다.
    • isPresent로 null이 아닌지 확인 후 get으로 실객체 값 얻는다.
  • count() : 해당 리포지터리 총 데이터 건수 리턴;
  • fetch=FetchType.LAZY : 필요한 시점에 데이터 가져오는 방식
  • fetch=FetchType.EAGER : 조회할 때 한번에 다 조회
  • LAZY 와 EAGER는 @OneToMany, @ManyToOne의 옵션
  • @Transactional : 메서드 종료될 때까지 DB세선 유지
    • TEST코드에서 이와 같은 이유로 사용
항목설명
findAll모든데이터 조회
findByIdEntity의 id값으로 데이터 조회
findBy + Entity속성명
ex) findBySubject
해당 속성 값으로 데이터 조회
findBy + 속성명 + 속성명
ex) findBySubjectAndContent
두개의 속성 값으로 데이터 조회

AND , OR , Between ,
LessThan : 작은 항목 검색 ,
GreaterThanEqual : 크거나 같은 항목 검색 ,
Like , In , OrderBy

build.gradle

항목설명
developmentOnly개발 환경에만 적용
runtimeOnly런타임시에만 필요
compileOnly컴파일시에만 필요
annotationProcessor컴파일 단계에서 어노테이션 분석하고 처리하기 위해 사용
implementation일반적으로 사용하는 설정,
해당 라이브러리 변경되더라도, 연관된 모든 모듈 컴파일 하지 않고,
직접 관련 있는 모듈만 컴파일
-> rebuild 속도 빠름

application.properties

  • DATABASE
항목설명
spring.h2.console.enabled=trueH2 콘솔의 접속 허용 여부,
true로 설정
spring.h2.console.path=/h2-console콘솔 접속을 위한 URL
spring.datasource.url=jdbc:h2:~/local데이터베이스 접속 위한 경로
spring.datasource.driverClassName=org.h2.Driver데이터베이스 접속시 사용하는 드라이버
spring.datasource.username=sa데이터베이스 사용자명,
default = sa
spring.datasource.password=데이터베이스의 패스워드
  • JPA
항목설명
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect데이터베이스 엔진 종류 설명
spring.jpa.hibernate.ddl-autoEntity 기준으로 테이블 생성하는 규칙 정의,
개발환경에서는 주로 update
운영환경에서는 주로 none 또는 validate
spring.jpa.hibernate.ddl-auto=noneEntity 변경되도 DB 변경되지 않음
spring.jpa.hibernate.ddl-auto=updateEntity 변경된 부분만 적용
spring.jpa.hibernate.ddl-auto=validate변경 사항 있는지 검사만
spring.jpa.hibernate.ddl-auto=create서버 시작될 때 모두 drop하고 다시 생성
spring.jpa.hibernate.ddl-auto=create-dropcreate와 동일하지만, 종료시에도 모두 drop

점프 투 스프링부트

0개의 댓글