프로그래밍공부
JPA란
1. JPA란 ? 1) JPA(Java Persistence API) JPA는 Java 진여에서 ORM(Object-Relational Mapping) 기술을 표준으로 사용하는 인터페이스의 모음 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 인터페이스이기 때문에 JPA를 Hibernate, OpenJPA 등이 구현 ORM (Object Relational Mapping) 1. 객체와 관계형 데이터베이스를 매핑하는 것을 의미한다. 2. ORM 프레임워크 객체와 테이블을 매핑하여 패러다음의 불일치 문제를 해결해준다. 2) JPA의 등장 이유 1) JPA는 반복적인 CRUD SQL을 처리해준다. JPA는 매핑된 관계로 SQL를 생성하고 실행하는데 개발자는 어떤 SQL이 실행될지만..
JVM의 구조와 자바의 실행
1. JVM(Java Virtual Machine) JVM은 자바 프로그램 실행환경을 만들어주는 소프트웨어이며, 메모리 관리(GC)를 수행하며 스택 기반의 가상머신이다. JVM은 자바 가상 머신의 약자로, 자바 애플리케이션을 클래스 로더를 통해 읽어 자바 API와 함께 실행할 수 있도록 한다. 자바 코드를 컴파일하여 .class의 바이트 코드로 만들면 이코드가 자바 가상 머신 환경에서 실행된다. JVM은 자바 실행환경 JRE(Java Runtime Environment)에 포함되어 있으며 현재 사용하는 운영체제에 맞춰 자바 실행환경 (JRE)가 설치되어 있다면 자바 가상머신이 설치된 것이다. JVM을 통해 하나의 바이트 코드(.class)를 모든 플랫폼(운영체제)에서 동작이 가능하다. 따라서 Java는 ..
스프링 컨테이너
1. 스프링 컨테이너의 생성 // 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 위의 코드에서 ApplicationContext는 스프링 컨테이너이자 인터페이스이다. 스프링 컨테이너는 XML 기반으로 만들 수 있고 어노테이션 기반의 자바 설정 클래스로도 만들 수 있다. 파라미터를 통해 구성 정보를 지정하고 파라미터의 자바 설정 클래스를 기반으로 스프링 빈을 등록한다. 이때, 기본적으로 빈의 이름은 메소드 이름을 사용하며 빈 이름을 직접 부여할 수도 있다. 그러나 빈의 이름은 항상 다른 이름을 부여해야 하며 같은 이름을 부여하면 다른 빈이 무시되거나 기존 빈을..
IoC, DI 그리고 Container
1. 제어의 역전(Inversion of Control) IoC ? 프로그램의 제어 흐름을 클라이언트 구현 객체가 제어하지 않고 외부의 구성 영역에서 가져가는 것을 제어의 역전이라고 한다. 기존 프로그램들은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고 연결하고 실행되어 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. AppConfig의 등장으로 구현 객체는 자신의 로직을 실행하는 역할만 담당하며 프로그램 흐름 제어는 이제 AppConfig가 가져간다. 따라서 ~ServiceImpl은 필요한 인터페이스들을 호출하지만 어떤 구현 객체들이 실행될지는 알 수 없다. 프로그램에 대한 제어 흐름에 대한 권한은 모두 AppConfig가 가지고 있고 구현체 역시 AppConfig가 생성한다. ..