@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을 반환하게 된다.
하지만 모든 요청이 view를 요청하는 것은 아니다. 데이터를 JSON형태로 받아야 할 경우에는
@ResponseBody annotation을 붙여준다. Controller이긴 하지만, view가 아닌 데이터를 반환하는 메서드임을 알려준다.
@RestController 는 @Controller와 @ResponseBody를 합쳐놓은 것.
==> RESTful한 설계(백엔드에서는 데이터만 전송)에서는 @RestController를 주로 사용
============================================================================================
@Autowired : 빈으로 등록된 클래스를 자동 주입(인스턴스화 하지 않아도 사용 가능)
@Service : 빈으로 등록함
@Transactional : Transactional이 붙은 연산들을 같이 관리하며, 서로간의 간섭이 없게 한다. Transaction이 끝날 때까지 외부에서 연산결과를 볼 수 없으며, 충돌 없이 Transaction들이 끝난 후에 데이터베이스에 반영된다. 그렇지 않으면 롤백된다. @Transaction시 데이터 업데이트 할 때, 엔티티만 업데이트 해주면 반영됨 - 추가공부하기()
@EnableJpaAuditing : @SpringBootApplication 있는곳에 붙여주면, Timestemp 사용가능↓↓↓
@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 |