스프링(12)
-
영속성 컨텍스트
persistence를 한국어로 하면 영속성,지속성이라는 뜻 객체 관점으로 해석해보면 객체가 생명(객체가 유지되는 시간)이나 공간(객체의 위치)을 자유롭게 유지하고 이동할 수 있는 객체의 성질 == 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간 == 엔티티 넣는 공간 개발자들은 이제 직접 SQL을 작성하지 않아도 JPA를 사용하여 DB에 데이터를 저장하거나 조회할 수 있으며 수정, 삭제 또한 가능하다. EntityManager 영속성 컨텍스트에 접근하여 Entity 객체들을 조작하기 위해서는 EntityManager가 필요하다. EntityManager는 이름 그대로 Entity를 관리하는 관리자인데 entity manager를 이용해서 entity를 저장하고 수정하고 삭제하는게 가능하며 entit..
2023.06.27 -
Entity
Entity란? jpa에서 관리되는 클래스 즉 객체를 의미한다 entity 클래스는 db와 매핑되어 jpa에 의해 관리된다 @Entity : JPA가 관리할 수 있는 Entity 클래스로 지정할 수 있다. @Entity(name = "Memo") : Entity 클래스 이름을 지정할 수 있다. (default: 클래스명) ★JPA가 Entity 클래스를 인스턴스화 할 때 기본 생성자를 사용하기 때문에 반드시 현재 Entity 클래스에서 기본 생성자가 생성되고 있는지 확인해야 한다. @Table : 매핑할 테이블을 지정해준다. @Table(name = "memo") : 매핑할 테이블의 이름을 지정할 수 있다. (default: Entity 명) @Column : @Column(name = "username..
2023.06.27 -
JPA
ORM object relational mapping Object : "객체"지향 언어 (자바, 파이썬) Relational : "관계형" 데이터베이스 (H2, MySQL) 객체와 db를 맵핑해주는 도구이다 자바의 클래스와 db의 데이터를 직접 매핑하려면 번거롭고 많은 작업들이 필요하지만 ORM을 사용하면 자동으로 처리해준다 JPA: Java Persistence API 자바 ORM 기술에 대한 표준 명세 JPA는 애플리케이션과 JDBC 사이에서 동작된다 JPA를 사용하면 DB 연결 과정을 직접 개발하지 않아도 자동으로 처리해주며 또한 객체를 통해 간접적으로 DB 데이터를 다룰 수 있기 때문에 매우 쉽게 DB 작업을 처리할 수 있다. 하이버네이트? JPA 는 표준 명세이고, 이를 실제 구현한 프레임워크 ..
2023.06.27 -
IoC와 DI 용어정리
IoC, DI는 설계 원칙 및 디자인 패턴입니다. 설계원칙은 지켜야할 규칙같은거다 맛있는 김치 볶음밥을 만들기 위한 원칙 신선한 재료를 사용한다. 신 김치를 사용한다. 밥과 김치의 비율을 잘 맞춰야 한다. 볶을 때 재료의 순서가 중요하다. 설계원칙은 이런 느낌이고 디자인 패턴은 음식 레시피같은 느낌이다 좋은 코드? 논리가 간단해야 한다. 중복을 제거하고 표현을 명확하게 한다. 코드를 처음 보는 사람도 쉽게 이해하고 수정할 수 있어야 한다. 의존성을 최소화해야 한다. 새로운 기능을 추가 하더라도 크게 구조의 변경이 없어야 한다. 의존성이란? public class Consumer { void eat() { Chicken chicken = new Chicken(); chicken.eat(); } public..
2023.06.26 -
3 Layer Architecture
만약에 Controller 클래스 하나로 모든 API를 처리한다 하자 초반에는 API 수가 적고 기능이 단순하여 코드가 복잡해 보이지 않을 수 있지만 앞으로 기능이 추가되고 복잡해진다면 문제가 발생할 수 있다. 또한 한 개의 클래스에 너무 많은 양의 코드가 존재하기 때문에 코드를 이해하기 어려우며 현업에서는 코드의 추가 혹은 변경 요청이 계속 생길 수 있다. 문제가 발생했는데 해당 Controller 클래스를 구현한 개발자가 퇴사한다면? 이러한 문제점들을 해결하기 위해 서버 개발자들은 서버에서의 처리과정이 대부분 비슷하다는 걸 깨닫고, 처리 과정을 크게 Controller, Service, Repository 3개로 분리했다. 1. 클라이언트의 요청을 받는다. 2. 요청에 대한 로직 처리는 Service..
2023.06.26 -
path variable,request param
Path.Variable : Path Variable은 url의 경로에 포함된 변수를 나타낸다 RESTful API에서 리소스의 식별자나 동적인 값을 전달하기 위해서 사용된다 중괄호(={})를 사용하여 변수를 표시한다 /users/{userid} 와 같은 경로에서 {userid}는 Path Variable이다 이를 통해 클라이언트는 경로에 포함된 변수를 설정하고 값을 전달할 수 있다 // [Request sample] // GET http://localhost:8080/hello/request/star/Robbie/age/95 @GetMapping("/star/{name}/age/{age}") @ResponseBody public String helloRequestPath(@PathVariable Str..
2023.06.24