인텔리 J 는 설치하고!!!
자바 환경 세팅이후,,,
스프링 부트 시작!(2012년에 등장!)
스프링 부트는 웹 어플리케이션을 보다 가볍고(spring 보다), 쉽고 빠르게 만들 수 있도록 도와주는
자바 웹 프레임워크이다.
웹 프레임 워크
: 쿠키처리, 로그인 아웃처리, DB 핸들링 등을 지원
컨트롤러 예시
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class OrderController {
@GetMapping("/goodslist")
@ResponseBody
public String[] gooodslist() {
String[] goodsList = {"Apple", "Samsung", "LG"};
return goodsList;
}
}
스프링 부트 보안처리
: sql injection(sql 코드를 주입하여 공격), XSS(Cross site scription, 스크립트 언어를 삽입해 공격),
CSRF(Cross site Request Forgery, 위조된 요청을 보내는 공격), Clickjacking(사용자가 의도하지 않은
이벤트를 클릭하는 것을 유도하는 공격) 등의 공격을 막아 줌
Spring 처럼 WAS 를 따로 구축할 필요가 없다.
: 툼캣, 네티, Undertow WAS 내장
Spring Boot 애플리케이션을 실행할 때, application.properties 또는 application.yml 파일에서 내장
서버의 포트나 다른 설정을 조정할 수 있다.
server.port=8080
ORM
SQL 쿼리문을 사용하지 않고 DB를 관리할 수 있는 도구, DBMS 가 달라져도 동일한 자바코드 사용 가능
JPA(Java Persistance API)
: 스프링 부트의 ORM 표준, JPA 는 interface 의 집합이므로, 실제 구현체가 필요(Hibernate)
엔티티(Entity)
: DB table 과 매핑되는 자바 클래스이며, 모델 또는 도메인 모델이라고 함
Entity Class 예시
package com.sample.order;
import java.time.LocalDateTime;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Entity
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(length = 300)
private String customerName;
@Column(length = 500)
private String product;
@Column
private Integer quantity;
@Column(columnDefinition = "DECIMAL(10,2)")
private Double price;
private LocalDateTime orderDate;
}
리포지터리
: 엔티티를 이용하여 생성된 DB table의 data를 조작(CRUD, 생성, 조회, 수정, 삭제)하는 메소드를 제공
package com.sample.order;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface OrderRepository extends JpaRepository<Order, Integer> {
// 기본 CRUD 메소드들은 JpaRepository에서 제공됩니다.
// 예를 들어, 고객 이름으로 주문을 찾는 메소드
List<Order> findByCustomerName(String customerName);
// 예를 들어, 제품 이름으로 주문을 찾는 메소드
List<Order> findByProduct(String product);
}
커스톰 리포지터리
1. 리포 인터페이스
package com.sample.order;
import java.util.List;
public interface CustomOrderRepository {
List<Order> findOrdersByCustomCriteria(String criteria);
}
2. 리포 구현체
package com.sample.order;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import java.util.List;
@Repository
public class CustomOrderRepositoryImpl implements CustomOrderRepository {
@PersistenceContext
private EntityManager entityManager;
@Override
public List<Order> findOrdersByCustomCriteria(String criteria) {
// 예시로, 특정 조건에 맞는 주문을 찾는 쿼리 작성
String jpql = "SELECT o FROM Order o WHERE o.product LIKE :criteria";
TypedQuery<Order> query = entityManager.createQuery(jpql, Order.class);
query.setParameter("criteria", "%" + criteria + "%");
return query.getResultList();
}
}
서비스
: 컨트롤러과 리포지터리를 연결하여 비지니스 로직을 수행
'Java Spring' 카테고리의 다른 글
단위테스트 (unit test) - Spring Boot Test !! (0) | 2024.09.17 |
---|---|
영속성 이란? (Java Spring Boot 완전기초) (1) | 2024.09.16 |
Spring Boot 기본 (1) | 2024.09.15 |
Java 완전 기초 (1) | 2024.09.13 |
POJO 란 무엇인가? (0) | 2024.09.13 |