[ Spring Boot ] N:1 (다대일) 연관관계 part2
·
Spring Boot
@ManyToOne 과 Eager/Lazy Loading@ManyToOne을 사용시 FK쪽의 엔티티를 가져올때 PK쪽의 엔티티도 같이 가져온다.실제로 쿼리를 실행하면, 내부적으로 left outer join처리가 되어 데이터를 가져온다.하지만 매번 이렇게 여러 테이블을 조인하여 가져온다면 효율이 떨어질 것이다. fetch는 Lazy loading을 권장한다.위와 같이 연관관계를 가진 모든 엔티티를 같이 로딩하는 것을 'Eager loading'이라고 한다.(즉시 로딩이라고도 한다.)즉시 로딩은 성능 저하를 피할 수 없는데, JPA에서는 연관관계 데이터를 어떻게 가져올 것인가 를 fetch(패치) 라고 한다. 그리고, 즉시 로딩의 반대 개념을 'Lazy loading'(지연 로딩)이라고 한다.Board.j..
[ Spring Boot ] N:1 (다대일) 연관관계 part1
·
Spring Boot
연관관계와 관계형 DB 설계관계형 DB 는 entity간의 relation이 중요👉1:1 1:N N:1 M:N이를 표현하기 위해 PK와 FK사용 @EnableJpaAuditing자동으로 시간을 처리해주는 어노테이션Application 클래스위에 작성 @ManyToOneN:1 관계ex) board : member  관계 (멤버 한명당 여러개의 글을 작성할 수 있다)@Entity@Builder@AllArgsConstructor@NoArgsConstructor@Getter@ToString(exclude = "writer")public class Board extends BaseEntity{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) ..
[ Spring Boot ] 스프링MVC & Thymeleaf part.3
·
Spring Boot
Thymeleaf 레이아웃1. include방식SampleController //include방식 처리 @GetMapping("/exLayout1") public void exLayout1() { log.info("exLayout---------"); } fragment1.html Part 1 Part 2 Part 3 exLayout1.htmlFragment TestLayout 1 - 1Layout 1 - 2Layout 1 - 3 exLayout1.html이 fragment1.html의 조각들을 가져와서 사용한다.th:replace: 기존의 내용 완전히 대체th:insert : 기존의 내용의 바깥쪽 태그 유지하고 내용 추가하기 2. 레이아웃 템플릿 만들기..
[ Spring Boot ] 스프링MVC & Thymeleaf part.2
·
Spring Boot
타임리프는 계속 된다..... 반복문에 state (index) 처리 [[${state.index}]] --- [[${dto}]]  제어문th:if ~ unless문 [[${state.index}]] --- [[${dto}]]  inline 속성SampleController일부 @GetMapping("/exInline") public String exInline(RedirectAttributes redirectAttributes) { log.info("exInline......"); SampleDTO dto = SampleDTO.builder() .sno(1..
[ Spring Boot ] 스프링MVC & Thymeleaf part.1
·
Spring Boot
Thymeleaf란?JSP를 대신하는 화면처리 기술 thymeleaf의 장점Model에 담긴 객체를 화면에서 js로 처리하기 편리JSP와 유사하게 ${ }를 별도 처리 없이 이용 가능연산, 포맷과 관련된 기능을 추가적인 개발 없이 지원개발도구를 이용할때 .html파일로 생성하는데 문제가 없고, 별도의 확장자를 이용하지 않는다라고는 하는데 아직 모르겠음프로젝트 설정기본 3개랑, thymeleaf dependencies에 추가 포트 8090 설정 Edit Configuration 에서  프로젝트 생성 SampleDTOpackage org.zerock.ex3.dto;import lombok.Builder;import lombok.Data;import java.time.LocalDate;@Data@Builder..
[ Spring Boot ] @Query 어노테이션, Querydsl
·
Spring Boot
@Query 어노테이션 사용 이유JPA에서는쿼리메서드를 제공하는데, 이는 검색같은 간단한 기능을 작성할때는 편함.But, 조인이나 복잡한 조건을 처리할때는 And,Or이 들어가서 불편함따라서, 간단한 처리는 쿼리메서드를, 복잡한 처리는 @Query를 사용한다. ex) JPQL & Native SQL //JPQL @Query("select m from Memo m where m.memoText like %:memo% order by m.mno desc") List findByMemoTextLike(String memo); //Native SQL @Query(value = "select * from tbl_memo where memo_text like concat('%',?1,'%..
[ Spring Boot ] JPA & MySql
·
Spring Boot
요약JPA, MySql 기본 설정을 하고 JPA에서 제공하는 CRUD 메서드를 구경해보자 JPA ( Java Persistence API)JPA는 MyBatis처럼 SQL과 프로젝트를 연동하는 놈 JPA vs MyBatisJPA는 JPA만의 고유한 메모리 공간 (콘텍스트 context)가 존재한다.MyBatis는 SQL이 실행되고 나면 객체가 어떻게 되든 상관이 없는 반면에,JPA에서 사용하는 객체들은 콘텍스트 내부에서 관리된다. 그래서 객체들이 변경이 되면 DB에 이를 반영하는 방식이다. JPA는 객체가 계속 유지되고, 필요할때 꺼내서 재사용하는 방식인데, 이때 리스너(Listener)가 객체의 변화를 감지하여 DB에 반영하던가 한다. 사용 기준은 복잡한 쿼리나 제어가 필요할때는 MyBatis, 간단한..
[ Spring Boot ] 프로젝트 생성, 테스트
·
Spring Boot
Spring Boot  - Spring을 더 간단하고 빠르게 개발할 수 있는 도구 - Tomcat이 내장되어 있어 따로 설정 필요가 없음개발도구 - IntelliJ - JPA   : MyBatis 처럼 SQL 연동 - MySql - JDK 17 - Spring Boot 3.3.2 프로젝트 생성하기 - https://start.spring.io/ 에 있는대로 프로젝트를 인텔리제이에서 생성 - Add DependenciesLombokSpring Boot DevToolsSpring Web src > main > java > Ex1Application프로젝트 생성시 자동 생성얘가 메인메서드src > resources > templateThymeleaf로 만든 템플릿 여기에 저장build.gradle 아까 추가한..
hanjuCoding
'Spring Boot' 카테고리의 글 목록