웹(Web)/백엔드(Backend) 42

Spring JPA 쿼리메소드

메소드 이름 안에서 지원되는 키워드 출처:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation Spring에서 JPA가 지원해주는 쿼리 메소드는 아래와 같이 사용한다. interface상에서 이름으로만 정의해주면 메소드가 알아서 쿼리를 생성하여 활용 할 수 있다. * Intellij Ultimate버전에서만 위 기능 자동완성을 지원해준다. KeywordSampleJPQL snippet Distinct findDistinctByLastnameAndFirstname select distinct …​ where x.lastname = ?1 and x.firstname = ?2 And ..

Spring 공통속성 JPA Auditing, EntityListener, MappedSupperclass

MappedSuperclass : 공통된 속성 표현하기 위해서 사용 ex) Id, 생성일자, 수정일자 JPA Auditing : 엔티티 별로 누가, 언제 접근했는지 기록하여 감시체계를 꾸리는것. -> Spring Data JPA에서 이 기능 사용하기 위해서는 @EnableJpaAuditing 사용 @CretatedDate : 생성 시점 자동 주입 @CreatedBy : 생성 주체 @LastModifiedDate : 수정 시점 자동 주입 @LastModifiedBy : 수정 주체 +) @EntityListener : 엔티티 객체를 데이터베이스에 적용하기 전/후에 콜백 요청

스프링MVC패턴 Controller / Model(DAO,DTO,Service) / View

단, DTO(=VO)로 혼용해서 많이 사용한다. 상세 비교 : 2022.02.13 - [웹(Web)/백엔드(Backend)] - DTO vs VO 비교 (+Entity) 코드 동작은 아래와 같다. 요약방식으로 적겠다. 상세 내용은 따로 검색해보면서 공부하는 것이 맞는듯하다. 1. Controller(컨트롤러) : 클라이언트 요청 받아서 객체지향방식으로 가공해서 Service에 던져줌 2. Service(서비스) : 적절한 Service에 전달받음 Service : DAO를 묶어 합친 것 -> DAO(Data Access Object)로 DB에 접근 DAO => @Repository DAO는 DB를 사용해 데이터 조회/조작하는 기능 역할을 하는 객체 DAO 사용 이유 : 커넥션 관리 및 보안성 Q1. in..

DTO vs VO 비교 (+Entity)

先 요약 DTO VO Entity 용도 레이어 간 데이터 전달 값 자체 표현 DB 테이블과 매핑되는 클래스 동등 결정 속성값이 모두 같다고 해서 같은 객체 X 속성값이 모두 같으면 같은 객체 O 가변/불변 setter - 존재시:가변 / 비존재시:불변 불변 가변 객체 생성 후 상태 변경 O 로직 getter/setter 외의 로직을 갖지 않음 getter/setter외에도 다른 로직을 가질 수 있다. 로직 포함O 출처 : 우아한테크코스 인비 크루( https://www.youtube.com/watch?v=z5fUkck_RZM ) DTO(Data Transfer Oject) : 데이터를 전달하기 위해 사용하는 객체 : 데이터를 담아서 전달하는 '바구니' getter/setter 메서드만을 갖는다! 다른 로..

JPA와 SpringData JPA(Repository)

영상 참고 ORM VS SQL Mapper 가) ORM DB Data ← 매핑 → Object 필드 객체를 통해 간접적으로 DB Data를 다룹니다. 객체와 DB의 데이터를 자동으로 매핑해줍니다. SQL 쿼리가 아닌 메서드로 데이터를 조작할 수 있습니다. 객체간 관계를 바탕으로 SQL을 자동으로 생성 합니다. Persistant API라고 할 수 있습니다. JPA, Hibernate 나) SQL Mapper SQL ← 매핑 → Object 필드 SQL 문으로 직접 DB를 조작합니다. 예) Mybatis, jdbcTemplate 위 내용 출처: https://data-make.tistory.com/541 JPA(JAVA Persistence API) 설명 - 영속성 컨텍스트(Persistent Contex..

스프링핵심원리 - 객체 지향 설계 원칙/프레임워크vs라이브러리/IoC/DI

좋은 객체 지향 설계의 원칙 : 여기서 3가지 SRP, DIP, OCP 적용 SRP 단일 책임 원칙 : 한 클래스는 하나의 책임만 가져야 한다. 클라이언트 객체는 직접 구현 객체를 생성하고, 연결하고, 실행하는 다양한 책임을 가지고 있음 SRP 단일 책임 원칙을 따르면서 관심사를 분리함 구현 객체를 생성하고 연결하는 책임은 AppConfig가 담당 클라이언트 객체는 실행하는 책임만 담당 DIP 의존관계 역전 원칙 : 프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다.” 의존성 주입은 이 원칙을 따르는 방법 중 하나다. 새로운 할인 정책을 개발하고, 적용하려고 하니 클라이언트 코드도 함께 변경해야 했다. 왜냐하면 기존 클라이언트 코드( OrderServiceImpl )는 DIP를 지키며 Disc..

Intellij SpringBoot @Test Junit Run test using 설정

오류는 아래와 같았다. org.junit.platform.launcher.core.EngineDiscoveryOrchestrator lambda$logTestDescriptorExclusionReasons$7 INFO: 0 containers and 1 tests were Method or class mismatch 테스트 Method를 3개 작성하였는데 3개중 1개만 실행하였을 경우 위와 같은 Info Message 가 발생하네요 테스트 코드를 모두 실행하면 위와 같은 메시지가 발생하지 않습니다. 윈도우 기준 Intellij 설정에서 Settings -> Build, Execution, Deployment -> Build Tools -> Gradle 에서 Build and run using과 Run t..