전체 글(86)
-
[Spring/Springboot] 영속성(Persistence) - 1차 캐시/변경 감지(Dirty Checking)/지연 로딩(Lazy Loading)
public static void main(String[] args){EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");EntityManager em = emf. createEntityManager();EntityTransactiono tx = em.getTransaction();tx.begin();try{ //비영속 Member member = new Member(); member.setId(100L); member.setName("HelloJPA"); //영속 em.persist(member); //영속 상태가 되었다고 DB에 바로 쿼리가 날라가는 것이 아님 //transaction을 커밋하는 시점에 영속성 컨텍..
2024.12.15 -
[Spring/Springboot] 도메인/양방향매핑/N+1 문제
DomainDomain 객체는 애플리케이션의 핵심 비즈니스 로직과 관련된 데이터를 포함하는 객체로, 데이터베이스 테이블과 매핑되는 클래스역할: 데이터베이스 테이블과 1:1로 매핑 되는 객체로, 애플리케이션의 핵심 데이터를 담음이 객체는 비즈니스 로직을 포함할 수도 있음@Entitypublic class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String email; // getters and setters}양방향 매핑양방향 매핑은 연관 관계 주인이 아닌 엔티티에게도 연관 관계를 주입하는 것[장점]객체 그래프 탐색으로 인..
2024.12.15 -
[Spring/Springboot] 서블릿(Servlet)
서브릿(Servlet)Servlet이 없다면?HTML Form 데이터 전송을 하면, 웹 브라우저가 생성한 요청 HTTP 메세지를 만들어서 서버로 전송함→ 이 때, 만약 웹 서버를 직접 다 구현해야 한다면, 아래의 단계를 모두 개발자가 직접 수행해야함서버 TCP/IP 연결 대기, 소켓 연결HTTP 요청 메세지를 파싱해서 읽고,POST 방식, /save URL 인지Content-Type 확인HTTP 메세지 바디 내용 파싱 → username, age 데이터를 사용할 수 있게 파싱저장 프로세스 실행비즈니스 로직 실행 → 데이터베이스에 저장 요청HTTP 응답 메세지 생성 시작HTTP 시작 라인 생성Header 생성메세지 바디에 HTML 생성에서 입력TCP/IP 에 응답 전달, 소켓 종료⇒ 그러나 서블릿을 지원하..
2024.12.15 -
[Spring/Springboot] AOP 관점 지향 프로그래밍
AOP(aspect-oriented programming) : 관점 지향 프로그래밍AOP는 핵심 비즈니스 로직에 직접적인 변경 없이, 추가적인 작업(횡단 관심사)을 더 쉽게 관리할 수 있게 해줌횡단 관심사(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임코드 그 자체를 수정하지 않는 대신 기존의 코드에 추가 동작(어드바이스)을 추가함으로써 수행어느 코드가 포인트컷(pointcut) 사양을 통해 수정되는지를 따로 지정기능의 코드 핵심부를 어수선하게 채우지 않고도 비즈니스 로직에 핵심적이지 않은 동작들을 프로그램에 추가할 수 있게 함AOP 예시 시나리오여러분이 친구들을 초대해서 집에서 '스파게티 파티'를 열기로 했다고 상상해보세요. 스파게티를 ..
2024.12.15 -
[Spring/Springboot] API, 프레임워크, 라이브러리의 차이
API두 개 이상의 소프트웨어 컴포넌트 사이에서 상호 작용할 수 있도록 정의된 인터페이스(ex) 함수, 프로토콜, 클래스 → 다른 소프트웨어 개발자들이 이를 사용하여 특정 서비스 또는 기능 사용 가능 = 다른 개발자들이 사용할 수 있는 함수, 메서드, 클래스 등을 정의“엄마의 와사비를 넣은 짭짤한 간장 계란밥”(외부 함수, 클래스) → 나는 접시에 담아와서(끌어 와서) 먹기만 하면 됨예시 APIAWS API Gateway: 아마존 웹 서비스에서 제공하는 API 관리 서비스Google Cloud Vision API: 구글에서 제공하는 이미지 분석 API프레임워크개발자들이 애플리케이션을 개발하는 데 사용되는 구조를 제공 → 일련의 규칙과 구조를 정의하고, 개발자가 애플리케이션을 작성할 때 이러한 규칙과 구조..
2024.12.15 -
[Spring/Springboot] Bean/싱글톤 패턴/컴포넌트 스캔
스프링 컨테이너 생성 과정//스프링 컨테이너 생성ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); //구성 정보를 AppConfig.class로 설정스프링 컨테이너를 생성한다(AppConfig.class) → 스프링 컨테이너 한 스프링 빈 저장소가 있음구성 정보인 AppConfig.class를 활용하여 → 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용하여 스프링 빈 저장소에 스프링 빈을 등록한다.스프링 컨테이너에 빈 의존관계 설정을 준비하고, 설정 정보를 참고하여 의존관계를 주입(DI)한다.BeanSpring 컨테이너가 관리하는 자바의 객체 → Spring은 빈을 통해..
2024.12.15