Spring

🧑🏻💻 pre-project를 진행하다 사용한 @Query에 대한 정리 ❓ JPA에서 검색 기능을 구현하기 위해 어떤 방식으로 Repository에서 쿼리 메서드를 만들어야 하나 찾아보다가 동적 쿼리에서는 @Query 어노테이션이 유용하게 쓰인다는 것을 알게 되었고 발견한 어노테이션을 사용하고 알게된 내용들을 정리하기로 했다. 💡 @Query Spring Data JPA에서 사용하는 어노테이션, JPQL 쿼리를 직접 정의할 때 사용되며 복잡한 쿼리나 특수한 조건을 처리할 수 있다. JPQL(Java Persistence Query Language) : 테이블이 아닌 엔티티 객체를 대상으로 검색하는 객체지향 쿼리 동적 쿼리 외에도 아래와 같은 상황에서 유용하게 쓰인다고 한다. 복잡한 쿼리 : 기본 메서드..


💡 @Id ➡️ JPA 엔티티 객체의 식별자, 데이터베이스 테이블의 기본 키와 객체의 필드를 매핑시켜주는 어노테이션이다. ➡️ @Id만 사용할 경우 기본 키를 직접 할당해 주어야 하지만 대신 데이터베이스가 생성해 주는 값을 사용하려면 @GeneratedValue를 사용하면 된다. 💡 GeneratedValue ➡️ 기본 키를 자동 생성해 주는 어노테이션이다. 속성으로는 strategy(전략)가 있으며 이를 통해 자동 생성 전략을 지정해 줄 수 있다. ➡️ 자동 생성 전략은 총 네 가지가 존재한다. ✔️ IDENTITY @GeneratedValue(strategy = GeneratedType.IDENTITY) Indicates that the persistence provider must assign pr..


🧑🏻💻 Springboot 쇼핑몰 프로젝트 with JPA 참고 💡 쿼리 메서드(Query Method)? ➡️ Spring Data JPA에서 제공하는 핵심 기능 중 하나로 Repository 인터페이스에 간단한 네이밍 룰을 이용하여 메서드를 작성하면 원하는 쿼리를 실행할 수 있다. ➡️ 쿼리 메서드를 이용할 때 가장 많이 사용하는 문법으로 find 를 사용한다. 엔티티의 이름은 생략 가능하며, By 뒤에는 검색할 때 사용할 변수의 이름을 적어준다. find + (엔티티 이름) + By + 변수 이름 회원의 이름을 이용하여 데이터를 조회하는 쿼리 메서드를 아래와 같이 적어줄 수 있다. find(Member)ByName ✔️ 예시 엔티티는 생략이 가능하기 때문에 findItemByItemNm 대신 fi..

1. @Configuration 애너테이션 ➡️ 설정 파일을 만들기 위한, 스프링 컨테이너에 Bean을 등록하기 위한 애너테이션 ➡️ 스프링 컨테이너는 @Configuration이 붙어있는 클래스를 자동으로 빈으로 등록한다. 자세하게 빈이 등록되는 과정 : @Configuration이 붙은 클래스를 자동으로 빈으로 등록해 두고, 해당 클래스에서 @Bean이 붙은 메서드를 검색한 후 해당 메서드에서 리턴하는 객체를 Spring Bean으로 추가해 준다. @Configuration public class SampleConfig { @Bean public SampleResource sampleResource() { return new SampleResource(); } } ⭐️ 위 Sample 코드와 같이 @..


Section 3 들어가기 전 한 Section 1에서 실습했던 자바 프로젝트를 스프링으로 전환하는 연습 중. 스프링에서는 객체 인스턴스를 싱글톤으로 자체적으로 관리한다. ✔️ 코드를 통해 살펴보기 ➡️ 본격적으로 알아보기 전에 먼저 싱글톤 패턴이 무엇인지 간단하게 알아보자. ❓싱글톤 패턴 → 클래스의 인스턴스가 딱 한 개만 생성되는 것을 보장하는 디자인 패턴 즉, 생성자를 private 접근 제한해서 외부에서 new 연산자로 생성자를 호출할 수 없도록 막는 것이다. public class Singleton { // (1) static 영역에 필드 선언과 초기화 (한 개) private static Singleton singleton = new Singleton(); // (2) private 접근 권한..


Section 3 들어가기 전 한 Section 1에서 실습했던 자바 프로젝트를 스프링으로 전환하는 연습 중. 그 전에 순수 자바 코드로 작성된 프로그램과 스프링으로 전환한 프로그램의 차이는 "스프링 컨테이너의 존재 여부" 스프링으로 전환되면서 AppConfigurer 클래스는 스프링 컨테이너의 관리를 받게 된다. ✔️ 코드를 통해 살펴보기 1. 스프링 컨테이너 public class Main { public static void main(String[] args) { // AppConfigurer appConfigurer = new AppConfigurer(); // // OrderApp orderApp = new OrderApp( // appConfigurer.productRepository(), /..

Section 3 들어가기 전 한 Section 1에서 실습했던 자바 프로젝트("버거퀸")를 스프링으로 전환하는 실습을 다시 하던 중 AppConfigurer 클래스의 역할과 왜 존재하게 되었는지 정리해 보았다. ✔️ AppConfigurer 를 사용하는 이유? ➡️ 영어 단어 Configuration의 의미는 "환경 설정, 구성" 이다. AppConfig에서의 Config는 이 단어의 줄임말이라고 할 수 있겠다. 즉, App의 환경설정 또는 구성을 나타내는 클래스라고 보면 된다. ➡️ 객체지향적 코드를 짜기 위해서는 SOLID 원칙을 잘 지켜야 한다. 하지만 버거퀸 실습을 할 때 아래와 같은 문제가 있었다. // 나이가 20 미만인 경우 500원을 할인해 주는 조건 public class KidDisc..


✔️ 패러다임의 불일치 : 객체와 관계형 DB의 차이 객체는 추상화, 상속, 다형성(클래스, 메서드)의 특징을 가지고 RDB(Relational DataBase)는 데이터 중심으로 이루어져 RDB에 객체를 저장하는 데 불일치 발생 직접 저장하거나 조회할 수 없기 때문에 객체지향 애플리케이션과 데이터베이스 중간에서 SQL과 JDBC API를 사용해서 변환 작업을 직업 해주어야 함 상속 : 객체랑은 다르게 상속이라는 기능 없음 -> 개발자가 여러 설정/ 쿼리를 생성해야 해 => JPA에서는 여러 쿼리를 한번에 실행해서 해결! 연관 관계 : 객체는 참조를 사용해서 연관된 객체 조회, 테이블은 외래키로 연관 관계를 설정하고 조인으로 연관 테이블 조회 객체 그래프 탐색 : 어디까지 탐색할 수 있는지는 실행하는 S..


✔️ 참고 https://docs.spring.io/spring-framework/docs/5.0.0.M5/spring-framework-reference/html/overview.html 1. 코어 컨테이너(Spring Core Container) ➡️ spring-core, spring-beans, spring-context-surpport, spring-expression(Spring Expression Language) 모듈로 구성됨 모듈/아티팩트 사용 Core spring-core 다른 스프링 모듈이 사용하는 유틸리티 Beans spring-beans 스프링 빈 지원, 의존성 주입 제공 빈 팩토리(Bean Factory) 구현 포함 Context spring-context-surpport 빈 팩..