본문 바로가기

분류 전체보기72

[JSCODE] controller, service, repository 구분하기 Controller 클라이언트의 요청 및 응답을 처리 들어온 요청을 Mapping 해주고, 요청자에게 응답을 전달하는 역할 @Controller 어노테이션을 사용하여 작성된 Controller 클래스가 이 계층에 포함됨 Service 애플리케이션 비즈니스 로직 처리와 비즈니스와 관련된 적합성 검증 Controller와 Repository 사이를 연결하는 역할로 두 계층이 직접적으로 통신하지 않게함 @Service 어노테이션을 사용하여 작성된 Service 구현 클래스가 이 계층에 포함됨 Repositry 데이터베이스에 접근하여 데이터를 CRUD하는 계층 영구 데이터를 빼내어 객체화 시키며, 영구 저장소에 데이터를 저장, 수정, 삭제하는 계층 @Repository 어노테이션을 사용하여 작성된 Reposit.. 2023. 3. 18.
[JSCODE] Spring Boot 프로젝트 생성하기 스프링 엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스 경량급 애플리케이션 프레임워크 스프링 부트 스프링으로 애플리케이션을 만들 때에 필요한 설정을 간편하게 처리해주는 별도의 프레임워크 Spring Initializr를 이용해 스프링 프로젝트를 생성하였다. 스프링부트 3.0 버전이 나왔지만 자바 11을 사용하고 있어 2.79 버전으로 프로젝트를 생성하였다. Spring Boot 버전을 3.X.X로 설정시 주의할 점 Java 17 이상을 사용해야 한다. javax 패키지 이름을 jakarta로 변경해야 한다. 오라클과 자바 라이센스 문제로 모든 javax 패키지를 jakarta로 변경하기로 했다고 한다. 간단한 API를 만들어 정상적으로 작동하는지 확인해봤다. @RestCon.. 2023. 3. 14.
[JSCODE] API 개발에 꼭 필요한 네트워크 API API는 Application Programming Interface의 약자로 애플리케이션이 다른 프로그램으로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단이다. 즉, API는 컴퓨터나 소프트웨어를 서로 연결하는 매개체이다. 서버는 API를 통해 자신이 제공하고자 하는 데이터나 기능을 제어할 수 있게 만들고 접근 권한을 가진 프로그램이 API를 통해 서버에서 제공하는 데이터를 요청해서 사용할 수 있다. jsonplaceholder 사이트에서 postman을 통해 api를 직접 호출해 보았다. https://jsonplaceholder.typicode.com/posts/11에 get으로 조회했을 때의 결과이다. id의 값에 따라 응답받는 json값이 달라진다. 다음으로 post에 대한 com.. 2023. 3. 9.
[JPA] 프록시와 지연로딩 프록시프록시는 실제 객체를 참조하는 가짜 객체이다. 실제 클래스를 상속받아서 만들어져 실제 클래스와 겉모양이 같다. 프록시 객체는 실제 객체의 참조(target)를 보관하기 때문에 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드를 호출한다. jpa에서 프록시 엔티티 객체를 호출하는 메서드는 em.getReference()이다. em.find()는 데이터베이스를 통해서 실제 엔티티 객체를 조회하지만 em.getReference()는 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체를 조회한다. 프록시 객체의 초기화프록시 객체에 getName() 같은 메서드를 사용하게 되면프록시 객체는 영속성 컨텍스트에 초기화 요청을 한다.영속성 컨텍스트에서 실제 DB를 조회하여실제 Entity를 생성한다.프록.. 2023. 3. 5.
[JPA] @MappedSuperclass 사용법 id, name 같은 정보들은 많은 객체에서 중복되어 사용된다. 이러한 공통 매핑 정보가 존재할 때 유용하게 사용할 수 있는 어노테이션이 @MappedSuperclass이다. @MappedSuperclass @MappedSuperclass는 상속관계 매핑, 엔티티, 테이블과 전혀 관계없이 부모클래스를 상속받는 자식 클래스에 매핑 정보만 제공한다. 직접 생성해서 사용할 일이 없으므로 추상클래스로 생성하는 것이 권장되고, 조회나 검색이 불가하다. 사용 방법 생성자, 생성시간, 수정자, 수정시간을 다수의 엔티티가 공통으로 가지는 상황에서 BaseEntity를 @MappedSuperclass를 사용하여 추상클래스로 생성한다. @Getter @Setter @MappedSuperclass public abstrac.. 2023. 3. 3.
[JPA] 상속관계 매핑 상속관계 매핑 관계형 데이터베이스는 상속관계라는 것이 존재하지 않는다. 그래서 객체 상속과 유사한 슈퍼타입, 서브타입 관계라는 모델링 기법을 이용한다. 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑하여 상속관계 매핑을 한다. 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법은 크게 3가지가 있다. 각각 테이블로 변환 : 조인 전략 통합 테이블로 변환 : 단일 테이블 전략 서브타입 테이블로 변환 : 구현 클래스마다 테이블 전략 어노테이션 3가지 전략을 사용하기 위해서는 @Inheritance(strategy=InheritanceType.XXX)를 적용시켜 주면 된다 JOINED: 조인 전략 SINGLE_TABLE: 단일 테이블 전략 TABLE_PER_CLASS: 구현 클래스마다 테.. 2023. 3. 3.