목록Spring (38)
Hansel

앞선 글과 같이 상품에 대해서도 Controller를 작성한다. laptopForm은 등록 아이템에 따라 다른 폼을 보낼 수 있도록 동적으로 해보는 도전이 필요해 보인다. 조회를 위한 html도 함께 작성한다. 결과 정상적으로 DB에 등록되는지 확인해야 한다. OrderController 폼을 받고 보내는 것은 이전에 봤던 방식과 똑같다. @RequestParam만 잘 이해하면 된다. @RequestParam 간단한 파라미터 요청 방식이다. 넘어오는 매개변수의 name 값을 적어서 거기에 필요한 값을 value로 받는다. URL 과 같이 보면 이해가 쉽다. @RequestParam은 required 옵션을 같이 쓰는데 기본값은 true다. 따라서 false가 아닐 때 받아온 data가 없다면 400 에러..

Thymeleaf 의 include 방식 https://www.thymeleaf.org/doc/articles/layouts.html Thymeleaf Page Layouts - Thymeleaf Summary In this article, we described many ways of achieving the same: layouts. You can build layouts using Thymeleaf Standard Layout System that is based on include-style approach. You also have powerful Layout Dialect, that uses decorator pattern for wor www.thymeleaf.org 각 태그마다 th:rep..

Order 엔티티 개발 @Entity @Getter @Setter @Table(name = "ORDERS") @NoArgsConstructor(access = AccessLevel.PROTECTED) //생성자 차단 public class Order { @Id @GeneratedValue @Column(name = "ORDER_ID") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "MEMBER_ID") //join하는 FK의 이름을 적어준다. 연관관계의 주인 private Member member; @OneToMany(mappedBy = "order",cascade = CascadeType.ALL) private List ..

Repository 객체를 작성했다면 그 객체에 알맞게 작성, 조회, 수정, 삭제 등을 하는 계층이 필요하다. 이러한 것들을 위한 로직이 모여있는 계층이 Repository이다. 위 리포지토리에선 엔티티매니저를 이용해 객체를 persist 하고 찾는 로직이 작성되어 있다. @PersistenceContext 는 스프링 컨테이너에 등록된 빈을 찾아 주입해준다. 최신 스프링 부트에선 @Autowired로도 가능하다고 한다. 그 아래 findByName 메서드는 매개변수로 name을 받는다. name이 일치한 member를 찾아 반환해주는 쿼리문이 담겨있는데 파라미터가 필요한 쿼리문의 경우 사진과 같이 작성을 해줘야 한다. 필드명 =: 매개변수 그 후 바로 getResultList를 호출해 받아오는게 아니라 ..

우선 DB 모델을 작성한 후에 그에 맞는 객체지향 스타일의 도메인 모델 작성이 필요하다. 1. 엔티티 작성 필드는 더 있지만 우선 생략하고 멤버와 오더는 1:M 관계를 가진다. 이를 엔티티 클래스로 작성할 때는 고려할 점이 양방향 관계로 설정할지와 누가 FK를 관리할지 필요하다. M쪽이 FK를 관리해야 하니 MappedBy는 Member에 작성해야 하고 Orders는 JoinColumn으로 매핑해준다 오더와 딜리버리 (1:1) 1대1 관계의 경우 신경 쓸 점은 누가 FK를 가지는지이다. 사용할 일이 더 많은 곳에 두면 편하다. 배송보다는 Orders가 더 사용할 일이 많으니 Orders가 Fk를 가지게 하자. Order & Order_Item & Item Order와 Item은 m:m 관계이다. 하나의 ..

인프런의 김영한 강사님의 수업을 듣고 해당 수업에서 받아 적고 배운 것들을 위주로 정리한 글 입니다. 기본 환경 설정 1. 스프링 스타터 https://start.spring.io/ 스프링 이니셜라이저 페이지에 들어가 필요한 라이브러리와 기본적인 설정들을 해준다. 빨간 박스 안에 내용들은 개인이 설정하는 이름이라 편한대로 작성해주면 된다. 디펜던시에 포함된 내용들은 아래와 같다. Spring Web = 스프링 사용을 위한 기본적인 세팅 Thymeleaf = 템플릿 엔진으로 서버와 연동하여 데이터를 받아와 프론트쪽에서 사용한다. 장고의 템플릿 사용법과 유사하다. Spring Data JPA = JPA를 사용하기 위해 포함한다. H2 Database = 가볍고 사용하기 쉬운 DB로 연습용으로 사용하기 좋다...
스프링의 기본 빈 등록 방식은 싱글톤으로 작동한다. public class MemberApp { public static void main(String[] args) { // AppConfig appConfig = new AppConfig(); // MemberService memberService = appConfig.memberService(); // MemberService memberService = new MemberServiceImpl(); ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberService = applicationConte..
클래스 인스턴스가 딱 1개만 생성하는것을 보장하는 디자인 패턴 package hello.core.singleton; public class SingletonService { private static final SingletonService instance = new SingletonService(); //자기 자신을 가진다. 스태틱으로 => 단 1개만 존재하게 된다. //스태틱 영역에서 미리 생성해둔다. //조회시 사용 public static SingletonService getInstance(){ return instance; //항상 같은 인스턴스 반환함 } //프라이빗 생성자 //외부에서 생성을 막는다. 프라이빗 생성자 private SingletonService(){ } public void ..