@ExceptionHandler
를 메소드나 클래스 위에 써주면, 알아서 try-catch
해준다. @ExceptionHandler({직접 만든 예외 클래스명}.class)
로 쓸 수도 있다.
jsp의 RequestDispatcher
와 비슷한 것이 @RequestMapping
의 return문이다.
web.xml
은 웹 관련 설정, server.xml
은 서버 관련 설정, tomcat-users.xml
은 톰캣 관련 설정이다. 한번만 설정하는 설정은 context.xml
이다. (부트에는 없다)
부트에서는 상기 xml 파일 설정들이 다 application.properties에 들어가게 된다.
@Table(name="MEMBER_JPA")
쓰고, application.properties에 spring.jpa.hibernate.ddl-auto=create
를 써주면, 테이블이 없을 시 클래스 정보를 가져와서 만들어준다.@Entity
: 이게 있어야 테이블 만들기가 잘 수행된다.@Data
: lombok 통해 설정한 것. getter, setter 등 다 알아서 있다고 쳐준다.// application.properties
spring.jpa.hibernate.ddl-auto=create
//MemberVO_JPA.java
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name="MEMBER_JPA")
public class MemberVO_JPA {
//thymeleaf 기본타입들은 wrapclass type(Integer,Long,,)
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="num")
private Integer num;
@Column(name="user_id")
private String id;
@Column(name="user_pw")
private String pw;
@Column(name="user_name")
private String name;
@Column(name="user_tel")
private String tel;
// @Column(name="regdate",insertable = false,updatable = false)
// @Column(name="regdate",insertable = false)
// @ColumnDefault(value="CURRENT_TIMESTAMP")
// private Date regdate;
}
JPA에는 Mapper
가 없다 대신 Repository
가 있다.
JPA에서 Service의 save()
함수는 실제로 선언되지 않아도 작동한다. 테이블을 반환한다.
IOC: 객체를 프로그램 로딩시간에 만들어두고, '느슨한 사용'을 한다면, IOC
DI: Dependency Injection
AOP: 공통 로직을 사용하는 관점 지향 프로그래밍
CrudRepository
에 있는 내장함수들은 유용한 것들이 많다. count()
는 쓰면 row 갯수 반환해준다.
JPQL : Entity객체를 테이블로 보고 쿼리를 정의
@Query("select t from MemberVO_JPA t where t.num >= 1 and t.num < 1 + ?1")
JPQL은 이렇게 쓰고, AS 필수에 *을 쓰지 않음에 주의한다.