Thymeleaf
https://june-17.tistory.com/189
예제 프로젝트)
초기 설정할때의 디펜던시
Spring DevTools
Lombok
Spring Web
Thymeleaf
Spring Data JPA
프로젝트 생성 후 먼저 Controller 클래스 생성
GuestBookController
@Controller
@RequestMapping("/guestBook")
@Log4j2
public class GuestBookController {
@GetMapping({"/","/list"})
public String list(){
return"/guestBook/list";
}
}
@Controller => 컨트롤러로 인식시키기 위한 어노테이션
@RequestMapping("/guestBook")
=> URL로 /guestBook 의 값이 넘어오면 해당 컨트롤러 실행
@Log4j2 => 테스트 어노테이션 log메서드를 활용하여 콘솔로 찍어볼 수 있다.
아래 list 메서드
/ 또는 /list 의 값이 요청되면 guestBook 디렉토리 안에 있는 list.html을 반환 한다.
따라서 llist.html로 이동
스프링 부터 생성하면 Application 클래스가 하나 있다.
GuestBookPrjApplication
@SpringBootApplication
@EnableJpaAuditing // 새로 추가된 어노테이션
public class GuestBookPrjApplication {
public static void main(String[] args) {
SpringApplication.run(GuestBookPrjApplication.class, args);
}
}
BaseEntity 클래스
@MappedSuperclass //해당 클래스는 실제 테이블 생성 방지
@EntityListeners(value ={AuditingEntityListener.class}) // 이벤트 감지 value ={AuditingEntityListener.class
//JPA 내부에서 엔티티 객체가 생성 / 변경 되는지를 감지
@Getter
abstract class BaseEntity {
@CreatedDate // JPA에서 엔티티의 생성시간을 처리하고
@Column(name ="regdate", updatable = false)
private LocalDateTime regDate;
@LastModifiedDate // 최종 수정 시간을 자동으로 처리하는 용도
@Column(name = "moddate")
private LocalDateTime modDate;
//이런 어노테이션을 감지 하기위한 GuestBookPrjApplication 쪽에다가
//@EnableJpaAuditing를 추가 해야한다.
}
아까의 application 클래스에 EnableJpaAuditing 어노테이션을 부여해야
해당 Entity~~~어노테이션이 사용 가능하다.
** 추상 클래스이다. public XXXX
실제 데이터를 이동을 하는 Entity 클래스
GuestBook 클래스
@Entity
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class GuestBook extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long gno;
@Column(length = 100, nullable = false)
private String title;
@Column(length = 1500, nullable = false)
private String content;
@Column(length = 50, nullable = false)
private String writer;
}
@NoArgsConstructor => 파라미터가 없는 기본 생성자
@AllArgsConstructor => 어노테이션은 모든 필드 값을 파라미터로 받는 생성자
JPA를 사용하므로 해당 클래스를 데이터 타입으로 갖는 인터페이스 생성
GuestBookRepository.interface
public interface GuestBookRepository extends JpaRepository<GuestBook,Long> {
}
다음 thmyleaf templates
이번 프로젝트도 부트 스트랩 사용
동적 쿼리를 위한 querydsl 설정
gradle에 플러그인 추가
상단 plugins에 추가
id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
디펜던시 추가
testImplementation ('org.springframework.boot:spring-boot-starter-test'){
exclude group: 'org.junit.vintage',module:'junit-vintage-engine'
}
implementation 'com.querydsl:querydsl-jpa'
task 작성
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
블로그 참조
https://ict-nroo.tistory.com/117
'Learn > KH정보교육원' 카테고리의 다른 글
[KH정보교육원 당산] 연습문제 11(애플리케이션 설계) (0) | 2021.07.19 |
---|---|
[정보교육원 당산] 83일( Spring boot - Security ) (0) | 2021.07.19 |
[KH정보교육원 당산] 78일 (Spring Boot - ORM과 JPA) (0) | 2021.07.07 |
[KH 정보교육원 당산] 77일 ( Spring Boot - IntelliJ IDEA / MariaDB) (0) | 2021.07.07 |
[KH정보교육원 당산] 76일( JPA ) (0) | 2021.07.05 |