타임리프(Thymeleaf)
- 타임리프에서는 쿼리스트링이 아닌 URI 방식으로 파라미터를 전달하도록 권장
- jsp의 포지션을 담당할 것임
URL 방식으로 파라미터 넘기기
@{'서비스명'/+${넘길 파라미터 값} }"
타임리프 사용을 위한 세팅
<html xmlns:th="http://www.thymeleaf.org">
Thymeleaf 문법 설명
- 타임리프에서 상태 유지 값은 '태그 안에 속성'으로 들어감
- JSP 와 마찬가지로 ${} 표현식 을 사용한다
xmlns:th
- 타임리프의 th속성을 사용하기 위해 선언된 네임스페이스
th:text
- span태그의 경우 text에 값이 들어간다
th:text="${상태 유지된 변수}"
<span th:text="${name}"></span><br>
th:value
- 보내줘야 할 값
th:each
- JSTL의 foreach와 비슷한 기능
th:each="변수명:${상태 유지된 list변수}"
<tr th:each="f:${list}">
<td th:text="${f.bookid}"></td>
<td th:text="${f.bookname}"></td>
<td th:text="${f.publisher}"></td>
<td th:text="${f.price}"></td>
</tr>
th:name
- input 태그는th:name 으로 객체 변수 이름과 맵핑 (무조건 사용한다고 생각)
타임리프는 template 폴더 밑에 있어야함(스프링 기준)
Spring Data JPA
- mybatis 대신 JPA를 사용
- JPA에서 VO는 Entity라고 표현
Spring Data JPA 기본 구성 요소
1. Project 생성 시 Spring Data JPA 선택하여 생성
2. JPA에서 필요한 디펜던시 설정 (pom.xml)
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
3. application.properties
- mybatis설정과 동일한데 jps관련 설정이 들어감
주의할 설정 (spring.jpa.hibernate.ddl-auto = '옵션 입력')
create
- 해당 속성에 의해 VO에 해당하는 Table이 자동으로 DB에 생성 됨
- 해당 테이블이 있으면 DROP하고 새로 생성
create-drop
- create와 동일하지만 종료 시점에 DROP이 됨
update
- 변경 된 것만 DB에 반영
validate
- 엔티티와 테이블이 정상적으로 맵핑되었는지 여부 확인
none
- 사용하지 않음
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
spring.datasource.username=DB 아이디
spring.datasource.password=DB비밀번호
server.port=8088
server.servlet.session.timeout=36000
spring.jpa.hibernate.ddl-auto=create
spring.jpa.properties.show_sql:true
spring.jpa.properties.format_sql:true
logging.level.org.hibernaate.SQL:debug
4. VO
VO에서 사용되는 어노테이션
import javax.persistence.Entity
@Data
- setter/getter/tostring()
@Entity
- VO 랑 매치되는 테이블을 생성
@Table(name="goods")
- 해당 이름의 테이블만들어줌
@Id
- PK 속성 정하기
@Data
@Entity
@Table(name = "goods")
public class GoodsVO {
@Id
private int 'pk로 설정할 컬럼';
private String 일반 컬럼;
}
5. DAO
public interface DAO명 extends JpaRepository<VO명, PK의 자료형> { }
public interface GoodsDAO extends JpaRepository<GoodsVO, Integer> {
}
6. Controller
- 특이사항 없음, mybatis에서 처럼 Controller만들면 됨
7. Service
- 특정 비즈니스 로직을 위한 Service
- 여러 dao의 함수를 필요로 할 경우 따로 service 로 만듦
예를 들어 ) 입금/출금에 해당하는 각각의 메소드를 하나의 Service로 묶는 개념 - 기존 DAO 만들 듯이 만들고 @Service 어노테이션 붙이기
8. 결과화면
- 자동으로 'goods' 라는 테이블이 생성되었음
JpaRepository(공통 인터페이스)
- CRUD 처리를 위한 공통 인터페이스
save()
- Insert/update 함수이다
- 주 식별자가 이미 있으면 update, 없으면 insert 한다
반응형
'개발 > 교육' 카테고리의 다른 글
(JPA) 59일차 (0) | 2022.06.24 |
---|---|
(Spring) 57일차 (0) | 2022.06.22 |
(Spring) 41일차 (0) | 2022.05.27 |
(JSP)36일차 (0) | 2022.05.20 |
(JSP)35일차 (0) | 2022.05.19 |
댓글