@Entity

-JPA에 해당 클래스가 DB의 테이블 역할이라는 것을 알려줌

-@Id  : Id

-@GeneratedValue(strategy = GenerationType.AUTO) : 자동생성 및 증가

-@Column : 컬럼임을 알려줌 (nullable, unique 옵션 boolean으로 줄 수 있음) 

 

 

<TimeStamp>

★SpringBootApplication 있는 class에 @EnableJpaAuditing 추가해주기

@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class) 
public class Timestamped {

    @CreatedDate
    @Column(updatable = false)
    private LocalDateTime createdAt;

    @LastModifiedDate
    @Column
    private LocalDateTime modifiedAt;
}

==> Entity에 extend 받아서 사용하면, createdAt 컬럼과 modifiedAt 컬럼이 생김

 

============================================================================================

@RequestMapping("/resonse") ==>  response로 들어온 request를 해당 애노테이션이 붙은 곳으로 매핑해줌

@GetMapping("URL") ==> Get Method로 들어온 요청을 해당 메소드로 매핑해줌

@PostMapping   @PutMapping   @DeleteMapping  이하동문

★RequestMapping은 클래스와 메소드에 쓸 수 있고, 나머지는 메소드에만 쓸 수 있다.

==> RequestMapping("/response") 클래스 안에 있는 @GetMapping("/test")의 요청 URL은 /response/test 가 된다.

 

@Controller ==> 해당 클래스 / 메소드가 MVC 패턴의 Controller에 해당한다는 것을 알려줌

-기본적으로 @Controller는 view를 반환하게 되어있다. 따라서, return "hello"는 String 타입의 hello를 반환하는 것이 아니라, view로서 hello.html을 반환하게 된다.

bye.html은 없고 hello.html만 있을 때, @Controller인 함수가 view 형태의 bye.html을 찾을 수 없다고 알려줌.

하지만 모든 요청이 view를 요청하는 것은 아니다. 데이터를 JSON형태로 받아야 할 경우에는 

@ResponseBody  annotation을 붙여준다. Controller이긴 하지만, view가 아닌 데이터를 반환하는 메서드임을 알려준다.

JSON처럼 생긴 String으로 반환된 모습.

@RestController 는 @Controller와 @ResponseBody를 합쳐놓은 것.

==> RESTful한 설계(백엔드에서는 데이터만 전송)에서는 @RestController를 주로 사용

 

============================================================================================

@Autowired : 빈으로 등록된 클래스를 자동 주입(인스턴스화 하지 않아도 사용 가능)

@Service : 빈으로 등록함

 

 

@Transactional : Transactional이 붙은 연산들을 같이 관리하며, 서로간의 간섭이 없게 한다. Transaction이 끝날 때까지 외부에서 연산결과를 볼 수 없으며, 충돌 없이 Transaction들이 끝난 후에 데이터베이스에 반영된다. 그렇지 않으면 롤백된다. @Transaction시 데이터 업데이트 할 때, 엔티티만 업데이트 해주면 반영됨 - 추가공부하기()

 

 

@EnableJpaAuditing : @SpringBootApplication 있는곳에 붙여주면, Timestemp 사용가능↓↓↓

@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class Timestamped {

@CreatedDate
private LocalDateTime createdAt;

@LastModifiedDate
private LocalDateTime modifiedAt;
}

 

 

@Configuration --> 아래에 @Bean  : Bean을 생성하고, 등록가능

 

@RequiredArgsConstructor : final변수에 bean 자동주입 (@Autowired 안써도됨)

 

@NoArgsConstructor : 기본생성자 만들어줌 (@Entity는 이게 있어야함)

 

JpaRepository.saveAndFlush(~~~~) : 영속성컨텍스트에 저장하지 않고, 바로 DB에 반영

 

@Scheduled(cron = " 0 0 1 * * *")  // 초 분 시 일 월 주

==> 지정된 시간마다 메서드 호출

 

 

JWT dependency :

build.gradle에

compileOnly group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.2'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.2'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.2'

Application properties에 jwt.secret.key = asdfasdfasdfasfasdf

'공부 > 잡다' 카테고리의 다른 글

QueryDSL 사용법  (0) 2023.05.03
IntelliJ 콘솔창 한글 깨질때  (0) 2023.04.15
웹 동작 간략개괄  (0) 2023.04.14
IntelliJ 디버거 활용 - Exception 조건설정  (0) 2023.04.10
Twitter recommendation system code revealed  (0) 2023.04.06

+ Recent posts