
🦄 스프링 프로젝트를 마무리 하면서, 스프링부트에 대한 흥미도 생기고, 혼자 처음부터 구현해보고 싶어 공부를 결심했습니다. 1. 인텔리제이 소개 강력한 추천 기능 훨씬 더 다양한 리팩토링과 디버깅 기능 이클립스의 깃에 비해 훨씬 높은 자유도 프로젝트 시작할 때 인

Application 클래스는 앞으로 만들 프로젝트의 메인클래스가 된다.@SpringBootApplication : 스프링 부트의 자동 설정, 스프링 Bean 읽기와 생성을 모두 자동으로 설정할 수 있다. 특히 이 위치부터 설정을 읽기 때문에 항상 프로젝트의 최상단에

🧁 템플릿엔진은 여태까지 JSP랑 Thymeleaf를 조금 다뤄본 경험밖에 없어서 새로운 템플릿엔진 mustache을 정리하는 포스팅입니다.일반적으로 웸 개발에 있어 템플릿 엔진이란, 지정된 템플릿 양식과 데이터가 합져져 HTML문서를 출력하는 소프트웨어입니다.서버

🧊 국내에서는 아직 myBatis를 많이 사용하지만, 자사 서비스를 개발하는 곳에서는 SpringBoot 와 JPA를 전사 표준으로 사용하고 있다. 그 외 나머지 기업들도 기존 프로젝트 환경을 개편하면서 대부분 JPA를 선택하고 있다. 1. JPA > 개발자는 객

1. 스프링 시큐리티(Spring Security) > 막강한 인증(Authentication)과 인가(Authorization)기능을 가진 프레임워크입니다. 스프링 기반의 애플리케이션에서는 보안을 위한 표준이라 볼 수 있다. 인터셉터, 필터 기반의 보안 기능을 구현하

🍊 프로젝트에서 AWS RDS를 사용하면서 요금폭탄..위험을 겪었었다. 이번에는 EC2로 배포까지 가보자! 1. 서버 > 외부에서 내가 만든 서비스에 접근하려면 24시간 작동하는 서버가 필수입니다. 일반적으로 집에서 PC를 24시간 구동시키거나, 호스팅 서비스를 이

1. JPA > Java Persistence API 로 자바 진영의 ORM 기술 표준이다. SQL 중심적인 개발에서 객체 중심으로 개발할 수 있다. 또한 JPA는 하이버네이트, EclipseLink, DataNucleus 3가지 인터페이스의 구현체이다. 1-1 J

✨✨ DDL 생성 기능은 DDL을 자동 생성할 때만 사용되고 JPA의 실행 로직에는 영향을 미치지 않는다. 1. @Entity > @Entity가 붙은 클래스는 JPA가 관리하는 엔티티이다. 테이블과 매핑할 클래스는 필수로 사용해야 한다. @Entity (name

1. IDENTITY > 기본 키 생성을 데이터베이스에 위임한다. IDENTITY전략은 처음 persist 시점에 즉시 INSERT를 실행하고 DB에서 식별자를 조회한다. 데이터를 넣기 전에는 값을 알 수 없기 때문이다. @GeneratedValue(strategy =

1. 연관관계가 필요한 이유 > 객체를 테이블에 맞추어 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없다. 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾지만, 객체는 참조를 사용해서 연관된 객체를 찾는다. 2. 단방향 연관관계 @JoinColumn

1. 상속 관계 매핑 > 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신에 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속개념과 유사하다. 2. 조인 전략 > 조인 전략은 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테

1. 프록시 > 객체가 데이터베이스에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA는 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 연관된 객체를 처음부터 데이터베이스에서 조회하는 것이 아니라, 실제 사용하는 시점에 데이터베이스

1. 기본 값 타입 >가장 단순한 기본값 타입이다. 엔티티는 식별자 값도 가지고 생명주기도 있지만 값 타입인 name, age 속성은 식별자 값도 없고 생명주기도 회원 엔티티에 의존한다. 값 타입은 공유하면 안된다. (다른 회원의 정보를 변경할 때, 나의 정보까지 변경

1. JPQL > JPA를 사용하면 엔티티 객체를 중심으로 개발하기 때문에 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색한다. JPQL은 데이터를 최소화해서 검색해야하는 문제점을 해결할 수 있다. 객체 지향 쿼리 언어를 제공한다. JPQL을 한마디로 정의하

1. 경로 표현식 .(점)을 찍어 객체 그래프를 탐색하는 것 1-1 상태 필드 단순히 값을 저장하기 위한 필드이다. 경로 탐색의 끝이기 때문에 더이상 탐색할 수 없다. 1-2 단일 값 연관 경로 묵시적 내부 조인 발생하며, 탐색이 가능하다. 튜닝을 하면서 어려움을

1. 조인 조인할 때는 항상 fetch 를 조심해야한다. inner 랑 outer는 생략 가능하다. 1-1 내부 조인 (공통된 두 행의 교차를 제공한다.) 1-2 외부 조인 (두 테이블의 모든 행을 제공한다.) 1-3 세타 조인 <img src="https://i

1. 변경 감지와 병합(mege) 1-1 변경 감지 (Dirty Checking) > 영속성 컨텍스트에서 엔티티를 다시 조회한 후에 데이터를 수정하는 방법 트랜잭션 안에서 엔티티를 다시 조회, 변경할 값 선택한다. JPA가 트랜잭션 커밋시점에 변경을 감지하고 UPD