본문 바로가기

분류 전체보기49

스프링 게시판 만들기 - 3 (화면 생성 / HTML , CSS with BootStrap 사용법) 파일 경로 ※ static 아래 index.html(파일명 동일) 을 두는 경우 , spring boot 에서는 자동으로 welcomePage 로 인식해서 localhost:8080 을 띄우는 경우 , 첫 화면으로 생성된다. static 하위에 정적 리소스들인 css , js 폴더를 생성하고 , templates 하위에는 동적 리소스들(HTML 에서 Thymeleaf 를 쓴다거나.. 로직이 들어가서 화면이 렌더링 되는 부분) 을 넣는다. 이왕 만드는 프로젝트 , css 도 없이 그냥 하는 것보다는 이쁜 UI 로 꾸며서 하는게 좋지만 프론트에 많은 힘을 들이고 싶지 않으신 분들은 저처럼 부트스트랩을 이용하는 것을 추천드립니다. (힘들이지 않으려 했는데 혼자 몇 시간을 삽질했는지는 비밀.....) ※ 초심자.. 2022. 1. 14.
스프링 게시판 만들기 - 2 (도메인 생성 , Member 테스트) DB 생성 코드 Member package toyproject.board.domain; import lombok.Builder; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Pattern; import java.util.ArrayList; import java.util.List; @Entity @Table(name = "member") @Setter @Getter public class Member { @Id @GeneratedValue @Column(name = "member.. 2022. 1. 12.
스프링 게시판 만들기 - 1 (초기 설정) 회원 가입, 로그인 , 기본적인 게시판 CRUD 를 구현 해보는 간단한 토이 프로젝트를 구현해보고자 한다. (추가적으로 페이징 처리, 댓글, spring-validation , spring-security 도 구현&사용해 보고자 하나 천천히 수정해나가는걸로..) 기본 설정 사용 언어 : Java Spring , JPA , Thymeleaf DB : H2 https://start.spring.io/ 에서 기본 세팅. Spring 을 사용할 예정이기에 Spring Web 추가 , 사용의 편리를 위한 Lombok DB 를 위해 H2 Database 를 추가 , JPA 추가 템플릿 엔진으로는 Thymeleaf 추가 Lombok 사용을 위해 설정 -> Annotation Processors 검색 -> Enable.. 2022. 1. 11.
Domain Driven Design Domain 이란 ? 유사한 업무의 집합 -> 비즈니스 도메인 어플리케이션은 비즈니스 도메인 별로 나누어 설계 및 개발 될 수 있다. 마이크로서비스 아키텍처와 연관지어서 자주 나오는 디자인이다. Domain Driven Design DDD(Domain Driven Design)는 커뮤니케이션 코스트를 최소화하고 , 변경사항이 생기는 경우 변화의 사이클을 작게 가져가는 장점이 있다. 도메인 전문가는 IT 용어를 잘 모르고 , 개발자는 도메인에 관련된 용어를 잘 모른다. 이를 하나의 방법을 통해 아이디어를 쉐어하면 훨씬 더 효율적으로 진행이 가능하다. DDD 를 가장 쉽게 할 수 있는 방법은 Event Storming 이다. 심플한 툴로 , 많은 사람이 모여서 가능하다. 큰 벽을 세워놓고 옆에는 스티커를 붙.. 2022. 1. 2.
JPA Basic - 6 프록시 타입 체크 시 , 같은 객체를 조회해도 em.find 와 em.Reference(Proxy) 객체 값이 차이가 있기 때문에 값은 같더라도 다르다고 나오게 된다. -> instanceof 로 비교. 하지만 하나의 트랜잭션 안에서는 find 와 Reference 비교를 하게 되면 == 으로 비교해도 똑같다. -> proxy 가 아닌 실제 엔티티 반환 영속성 컨텍스트를 꺼버리면(em.close , em.detach) -> exception 이 터지게 된다. 초기화 여부는 EntityManagerFactory 를 통해서 조회. ※ 프록시는 실제로 사용하는 경우는 많지 않지만 즉시 로딩과 지연 로딩을 이해하기 위해서 필요한 과정. 즉시 로딩 & 지연 로딩 지연 로딩 @ManyToOne(fetch = Fet.. 2021. 12. 30.
JPA Basic - 5 관계별 연관관계 매핑 다대일 (N:1) : 가장 기본적인 관계 , 가장 많이 , 주로 사용하는 관계. 단방향 매핑으로 설계하고 필요시에 양방향 매핑한다. 연관관계의 주인은 언제나 N. 일대다 (1:N) : 일대다로 매핑하는 것보다 다대일로 매핑. (사용 X) 일대일 (1:1) : 어느 테이블에나 외래 키를 넣을 수 있다. 외래 키에 DB 유니크 제약조건이 추가. 다대다 (N:N) : 실무에서 사용 ( X ) , 연결 테이블을 생성해서 다대다 -> 다대일 , 일대다 관계로 변경 편리해 보이지만 실무에서 사용 X , 연결 테이블이 연결만 하고 끝나지 않고 주문시간 , 수량 같은 데이터가 들어옴 -> 연결테이블용 엔티티를 새로 추가. @ManyToMany 를 @ManyToOne & @OneToMany 로 변경.. 2021. 12. 29.