미니 프로젝트 - 소방서알림 #1

#틀릴 수 있음

 

build.gradle

dependencies {
	implementation 'org.projectlombok:lombok'	
}

Dependencies에 lombok을 추가했다.

Lombok을 사용하면 Getter, Setter을 구현하기 편리하다는 장점이 있지만 내부 수정이 필요한 경우 불편할 수 있다.

 

Lombok

@NoArgsConstructor
    Class의 기본 생성자 자동 추가     
@AllArgsConstructor
    Class의 모든 필드 값을 받는 생성자 추가, Bean을 주입받는 방식으로도 쓰인다.     
@Data
    @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode 추가  
@Builder
    모델 객체 생성시 get, set 메서드를 만들어준다.

 

JPA (Java Persistence API)

 - ORM (Object-Relational Mapping)  클래스와 관계형 DB를 매핑한다. (자동 영속화)

SQL 문이 아닌 Method로 DB조작 가능하다는 장점이 존재한다.

public interface MemberRepository extends JpaRepository<Member, Integer> {

}

 

import lombok.*;

import javax.persistence.*;

@NoArgsConstructor
@AllArgsConstructor
@Data // getter setter
@Builder
@Entity
public class Member {

    @Id
    @GeneratedValue(strategy =  GenerationType.IDENTITY)
    private int id;

    @Column(nullable = false,length = 30)
    private String apartname;

    @Column(nullable = false, length = 30)
    private String building; // 동

    @Column(nullable = false, length = 30)
    private String unit; // 호

    @Column(nullable = false, length = 15)
    private String phonenumber;

    @Column(nullable = false, length = 30)
    private String nearestStation;

    @Enumerated(EnumType.STRING)
    private RoleType roleType;

}

JPA Annotation

@Entity
    DB 테이블과 1:1 매칭되는 객체 단위. 인스턴스 하나가 하나의 레코드     
@Id
    객체의 인스턴스를 구분하기 위한 유일한 키값, primary Key (PK)     
@Column
    Entity 클래스안의 내부변수로 정의.     
@Enumerated
    java의 enum 타입을 사용하고자 할 때 사용.

 

Annotation

@ Component 

    클래스를 Bean 으로 등록

 

@ Service

    서비스를 담당하는 class 명시

@Service
public class MemberService {
    /** 내용 */
}

@ Repository

    DAO (Data Access Object) class에 쓰임, DB 접근 메서드를 가진 class에서 사용

@ Configuration, @Bean

    클래스에 @Confiugration 을 달고 메서드에 @Bean 어노테이션을 사용한다. 그렇다면 Autowired로 Bean 호출 가능

@Autowired

    Type에 따라 Bean 주입

@ Controller

    SPRING MVC에서 Controller 클래스에 사용, view return 이 주목적

@Controller
public class MemberController {
	/** 내용 */
}

@ RestController (@Controller + @ResponseBody)

    view return 이 아닌 data return을 주로 한다. 

@RestController
public class MemberApiController {
	/** 내용 */
}

 

@RequestBody

    POST, PUT 등의 JSON 형식의 data를 객체 안에 담고 매핑한다.

@PostMapping("/auth/joinProc")
public ResponseDto<Integer> userJoin(@RequestBody Member member) {
    memberService.memberJoin(member);
    return new ResponseDto<Integer>(HttpStatus.OK.value(), 1);
 }