Spring

Spring/Spring 개발 상식

즉시 로딩과 지연 로딩(+프록시), Fetch Join, Join

FetchType 연관된 객체를 언제 가져올 것인지를 정한다. 즉시(Eager)와 지연(Lazy)가 있다. FetchType.EAGER : @XXToOne에서 FetchType의 기본 값이다. FetchType.LAZY : @XXToMany에서 FetchType의 기본 값이다. 즉시 로딩 @ManyToOne(fetch =FetchType.EAGER) //@ManyToOne은 기본 fetch가 Eager이므로 () 생략가능 private Product product; FetchType.EAGER 연관관계에 있는 모든 개체를 join하여 가져온다. JPQL : 즉시 가져오므로 연관관계의 객체 수가 N개일때 N+1 조회(select) (EntityManager.find()는 최적화 되므로 N+1 문제 발생 ..

Spring/Spring 개발 상식

JDBC, MyBatis, JPA

JDBC(Java Database Connectivity) Java 애플리케이션과 데이터베이스간의 연결과 데이터베이스 작업을 수행하는데 사용된다. JAVA 표준 API이다. JDBC 드라이버 Java에서 날린 SQL 쿼리에 프로토콜을 적용시킨 후 DB에 쿼리를 날리고, 그 응답을 프로토콜에 맞춰 파싱하여 Java로 전달한다. ✅ DBMS 별로 알맞은 드라이버가 필요하다. Object Mapping => JDBC를 사용하면 개발자는 직접 SQL 쿼리를 작성하고 실행하며, 결과로 얻은 ResultSet을 필요한 객체에 직접 매핑(Object Mapping) 해야한다. JDBC 코드 public class UserDAO { private final DataSource dataSource; public User..

Spring/Spring 개발 상식

@Builder와 @Getter, @Setter

@Builder 생성자처럼 객체를 생성하지만 생성자보다 좀 더 편리하다. Builder 패턴 vs 생성자 //생성자 Person p = new Person("Kim", "Female", 25); //빌더 패턴 Person p = Person.builder() .name("Kim") .gender("Female") .age(25) .build(); ✅ 생성자보다 파라미터를 파악하기 쉽다 (가독성이 뛰어나다). ✅ 생성자는 정해진 파라미터 순서대로 값을 넣어야하지만, 빌더 패턴은 순서와 상관없이 필드 이름으로 값이 설정된다. Builder 사용 방법 직접 Builder를 구현하는 방법도 있으나, Lombok의 @Builder 어노테이션을 사용하면 편리하다. 직접 Builder 구현하는 방법 import ja..

Spring/Spring 개발 상식

DTO 생성 방법

DTO(Data Transfer Object) - 데이터 전송 객체 비지니스 계층과 프레젠테이션 계층간 데이터 교환을 하기 위해 사용하는 객체이다. 비지니스 계층 : 데이터베이스나 외부 시스템과 상호 작용하여 데이터를 검색하거나 수정하는 작업 수행 프레젠테이션 계층 : 웹 클라이언트의 요청 및 응답 처리 DTO는 Domain model의 복사본으로, 다양한 표현 계층의 Logic(표현 방식)을 추가하여 사용된다. 더 자세한 내용은 ⬇️ https://shout-to-my-mae.tistory.com/303 DAO vs DTO vs VO DAO(Data Access Object) 데이터베이스의 data에 접근하여 CRUD 기능을 수행하는 객체 DB와 연결할 Connection까지 설정되어 제공되는 경우(e..

Spring/Spring 개발 상식

DAO vs DTO vs VO

DAO(Data Access Object) 데이터베이스의 data에 접근하여 CRUD 기능을 수행하는 객체 DB와 연결할 Connection까지 설정되어 제공되는 경우(ex) MyBatis) 는 필요 없다. 서비스와 DB를 연결하는 Repostitory package가 DAO의 예시이다. DTO(Data Transfer Object) - 데이터 전송 객체 비지니스 계층과 프레젠테이션 계층간 데이터 교환을 하기 위해 사용하는 객체이다. 비지니스 계층 : 데이터베이스나 외부 시스템과 상호 작용하여 데이터를 검색하거나 수정하는 작업 수행 프레젠테이션 계층 : 웹 클라이언트의 요청 및 응답 처리 DTO는 Domain model의 복사본으로, 다양한 표현 계층 Logic을 추가하여 사용된다. (Model은 Per..

Spring/카테캠 - TIL

TIL[0712] : 3주차 강의 (DTO, 스트림, HTTP, JDBC, JPA)

DTO DTO 정리본 ⬇️ https://shout-to-my-mae.tistory.com/313 DTO 생성 방법 DTO(Data Transfer Object) - 데이터 전송 객체 비지니스 계층과 프레젠테이션 계층간 데이터 교환을 하기 위해 사용하는 객체이다. 비지니스 계층 : 데이터베이스나 외부 시스템과 상호 작용하여 데이 shout-to-my-mae.tistory.com 스트림 초기 데이터 : [농어, 농어, 광어, 광어, 연어] 1. stream : 타입 제거 - 농어, 농어, 광어, 광어, 연어 2. filtering & 가공 : 원하는 것만 걸러내고 처리 filter : 걸러내기 - 농어, 농어 map : 가공하기 - 농어회뜨기, 농어 회뜨기, 광어 회뜨기, 광어 회뜨기, 연어 회뜨기 3. ..

Spring/Spring 개발 상식

Spring Security Test

스프링 시큐리티 테스트 로그인 테스트 코드 @Transactional //테스트 후 rollback @AutoConfigureMockMvc @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK) class UserRestControllerTest { @Autowired private MockMvc mvc; @Autowired private UserJPARepository userJPARepository; @Autowired PasswordEncoder passwordEncoder; @Autowired private WebApplicationContext context; //Spring Security 테스트 환경 구성 @BeforeEac..

Spring/카테캠 - TIL

TIL[0706] : 2주차 과제 - Mock Controller 3(마무리)

주문 결제하기(주문 저장하기) Controller @PostMapping("/save") // /orders/save public ResponseEntity saveOrder() { OrderRespDTO responseDTO = null; //ItemInfo 담을 리스트 생성 List itemInfoDTOList = new ArrayList(); //ItemInfo 리스트에 담기 ItemInfoDTO itemInfoDTO1 = ItemInfoDTO.builder() .id(4) .optionName("01. 슬라이딩 지퍼백 크리스마스에디션 4종") .quantity(10) .price(100000) .build(); itemInfoDTOList.add(itemInfoDTO1); ItemInfoDTO i..

mint*
'Spring' 카테고리의 글 목록 (4 Page)