본문 바로가기
728x90

Spring Boot, JPA7

JPA - JPA 기본 인프런 김영한 강사님 강의를 듣고 정리한 내용입니다. JPAJava Persistence Api자바 진영의 ORM 기술 표준이다. ORMObject-Relational Mapping객체는 객체대로 설계관계형 데이터베이스는 관계형 데이터베이스대로 설계ORM 프레임워크가 중간에서 매핑대중적인 언어에는 대부분 ORM 기술이 존재JPA는 애플리케이션과 JDBC 사이에서 동작한다.  JPA 구현체로는 하이버네이트, EclipseLink, DataNucleus 등이 있으며, 주로 하이버네이트를 사용한다.JPA를 사용하는 이유SQL 중심의 개발에서 객체 중심으로 개발생산성 향상유지보수의 용이성패러다임의 불일치 해결성능 향상데이터 접근 추상화와 벤더 독립성자바 ORM 기술의 표준임JPA 기본 개념Entity엔티티는 J.. 2024. 11. 13.
Spring - 외부 설정 외부 설정코드 내의 변수를 외부에서 가져오려면 외부 설정을 사용해야한다.외부 설정으로부터 값을 가져오는 방법에는 여러가지가 있다.OS 환경변수자바 시스템 속성커맨드 라인 인수그리고 이 세가지를 통합하여 사용하는 방법에 대해서 알아보겠다.OS 환경변수OS Environment variablesOS에서 지원하는 외부 설정으로, 해당 OS를 사용하는 모든 프로세스에 적용된다.윈도우는 cmd에서 set 명령어로 설정된 환경변수를 확인할 수 있다.환경변수 편집시스템 환경 변수 편집 - 환경 변수에서 확인 및 편집이 가능하다.자바에서 사용자바에서 환경변수를 사용하려면, System.getenv()로 사용할 수 있다. Map envMap = System.getenv(); String username = envMap... 2024. 11. 13.
Spring - WAR, JAR, Executable JAR 인프런 김영한 강사님 강의를 듣고 정리한 내용입니다.WARWeb Application ArchiveWAR는 WAS(Web Application Server)에 배포할 때 사용하는 압축 파일이다. WAS 위에서 동작하고, HTML과 같은 정적 리소스와 클래스 파일을 모두 포함한다. 그리고 JAR에 비해서 구조가 더 복잡하다.WAR 구조jar -xvf 파일명.war로 압축을 풀어서 구조를 확인할 수 있다.WEB-INFclasses : 실행 클래스 모음(자바 클래스)lib : 라이브러리 모음web.xml : 웹 서버 배치 설정 파일(생략 가능)그 외 정적 리소스 (HTML, css ...)라이브러리 모음에서 외부 라이브러리를 jar 형식으로 포함시킬 수 있다.빌드와 배포빌드프로젝트 폴더에서./gradlew c.. 2024. 11. 13.
스프링 - Bean 등록(자동, 수동)과 Lite vs Full mode 스프링 빈의 등록자동 등록 - @Component빈의 자동등록은 컴포넌트 스캔을 거쳐서 이루어진다.클래스 상단에 @Component 어노테이션이 있으면 컴포넌트 스캔을 거쳐서 스프링 빈으로 자동등록 된다. 이 밖에도 @Component를 포함하는 @Controller, @Service, @Repository도 자동등록된다. 생성자 위에 @Autowired 어노테이션을 붙여서 의존관계 주입이 가능하고, 해당 클래스의 생성자가 하나 뿐이라면 @Autowired는 생략 가능하다. 예를 들어 @RestController는 @RequestMapping에 @Responsebody를 추가한 기능을 한다. 그럼에도 @RequestMapping + @Responsebody 와 @RestController 사이에는 차이가.. 2024. 11. 12.
Spring - 중복 제거를 위한 디자인 패턴 인프런 김영한 강사님 강의를 듣고 정리한 내용입니다.  중복 제거를 위한 디자인 패턴여러 개의 메서드에서 공통된 부분이 발생될 때 그 부분을 메서드로 뽑아낸다. 하지만 중간에 비즈니스 로직이 끼어있고 시작과 끝부분이 같다면 이를 메서드로 뽑아내기 곤란하다. 이때 사용할 수 있는 여러개의 디자인 패턴에 대해서 소개한다.핵심 기능과 부가 기능이 디자인 패턴들의 공통된 특징은 메서드를 핵심 기능(중간)과 부가 기능(시작과 끝)으로 분리한다는 것이다. 그리고 여러개의 메서드에서 중복되어 발생하는 부가 기능을 위한 메서드를 만든다.웹에서 헤더와 메인 그리고 푸터로 분리하는 것과 비슷하다.핵심 기능은 메인과 비슷하고, 부가 기능은 헤더, 푸터와 비슷하다.핵심 기능해당 객체가 제공하는 고유의 기능부가 기능핵심 기능을.. 2024. 11. 12.
Spring - Thread Local로 동시성 문제 해결 인프런 김영한 강사님의 강의를 듣고 정리한 내용입니다.동시성 문제하나의 데이터에 여러개의 쓰레드가 접근하여 값을 변경하게 되는 경우, 의도하지 않은대로 동작할 수 있다. 이를 동시성 문제라고 한다.(읽기만 할 때는 발생하지 않는다.)동시성 문제는 지역변수에서는 발생하지 않는다. 지역 변수는 쓰레드마다 각각 다른 메모리 영역이 할당된다.그 이유는 쓰레드마다 각각의 스택 영역이 부여되기 때문이다. 스택에 메서드들이 호출되어 쌓이면, 메서드 내부의 지역 변수들은 각각의 스택 공간에 할당된다.하지만 인스턴스의 필드는 힙 영역에 할당되고 모든 쓰레드는 같은 힙 공간을 참조하게 된다. 그러므로 필드로 관리하는 경우에는 여러 쓰레드가 접근할 경우 동시성 문제가 발생한다.동시성 문제가 발생하는 곳은 같은 인스턴스의 필.. 2024. 11. 12.
Spring - 컨테이너와 빈(Bean) 인프런 김영한 강사님의 강의를 듣고 정리한 내용입니다.스프링 컨테이너IoC기존의 프로그램에서는 일반적인 객체가 제어 흐름을 조종하게 된다. 제어 흐름은 생성, 연결, 실행, 소멸을 의미한다. 제어 권한이 개발자에게 있다.IoC는 Inversion of Control의 준말로, 제어의 역전을 의미한다.IoC는 제어 권한이 개발자에게 쥐어지지 않는다.(즉, 일반적인 객체가 제어 흐름을 조종할 수 없게 된다.)모든 제어 권한을 IoC 컨테이너가 쥐게 된다. 일반적인 객체들은 제어에 관여하지 않고 로직만을 수행하게 된다.스프링을 사용하는 경우에는, 제어의 권한이 스프링 프레임워크에게 쥐어지고 IoC 컨테이너가 모든 제어를 관리하게 된다.DIDependency Injection의 준말로, 의존 관계 주입을 의미한.. 2024. 11. 12.
728x90