Java 34

[SQL] JPA란 무엇인가?

JPA란 무엇인가?JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다. JPA는 애플리케이션과 JDBC사이에서 동작한다.   ORM이란 무엇인가?ORM(Object-Relational Mapping)은 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. 예를 들어 ORM 프레임워크를 사용하면 객체를 데이터베이스에 저장할 때 INSERT SQL을 직접 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 된다. 그러면 ORM 프레임워크가 적절한 INSERT SQL을 생성해서 데이터베이스에 객체를 저장해준다. 따라서 ORM 프레임워크는 객체 ..

DATABASE 2025.02.12

[Spring Boot] 스프링(Spring) vs 스프링 부트(Spring Boot)

1. Spring FrameworkSpring은 Java 애플리케이션 개발을 위한 오픈소스 프레임워크로, 좀 더 가벼운 애플리케이션 개발을 목적으로 설계되었다. Spring 프레임워크를 사용했을 때, 장점은 다음과 같다.유연성 : Spring은 여러 기술과 잘 통합되며, 다양한 아키텍처 패턴을 선택할 수 있다. XML, Java Config, 애노테이션 기반 설정을 모두 지원하여 개발자의 선호에 따라서 유연하게 선택가능하다.DI(Dependency Injection) : 객체 간의 의존성을 외부에서 관리하여 유연하고 테스트 가능한 코드를 작성할 수 있다.AOP(Aspect-Oriented Programming) : 로깅, 트랜잭션 관리 등 공통 관심사를 분리하여 코드의 가독성과 유지보수성을 높인다.다양한..

SPRING 2024.12.23

[JAVA] 예외클래스와 예외처리

1. 예외(Exception)와 예외 클래스예외란? 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램은 곧바로 종료된다는 점과 에러와 비슷하다. 하지만 예외 처리(Exception Handling)을 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 예외에는 두 가지 종류가 있다.일반 예외와 실행 예외일반 예외는 프로그램 실행시 발생할 가능성이 높기 때문에 컴파일 하는 과정에서 해당 예외 처리 코드가 있는지 검사한다. 만약 예외 처리 코드가 없다면 컴파일 오류가 발생한다. 실행 예외는 실행 시 예측할 수 없이 갑자기 발생하기 때문에 컴파일하는 과정에서 예외 처리 코드가 있는지 검사하지 않는다.  자바에서는 예외를 클..

JAVA 2024.12.08

[JAVA] Heap 메모리 구조와 Garbage Collection

자바 프로그램이 실행되면 JVM은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라서 여러 영역으로 나누어 관리하한다. JVM의 메모리 공간은 크게 Static 영역, Stack영역, Heap 영역으로 구분되는데 Heap영역에 대해서 자세히 알아보도록 하자.1. Heap 영역JVM이 관리하는 프로그램 상에서 데이터를 저장하기 위해 런타임 시 동적으로 할당하여 사용하는 영역이다.참조형 데이터 타입을 갖는다 : 값이 저장되어 있는 곳의 주소값을 저장하는 공간이다.클래스인터페이스배열열거Heap 영역은 Stack 영역과 다르게 보관되는 메모리가 호출이 끝나더라도 삭제되지 않고 유지된다.stack은 스레드 갯수마다 각각 생성되지만, heap은 몇개의 스레드가 존재하든 상관없이 단 하나의 Heap 영역만 존재..

JAVA 2024.12.08

[JAVA] 중첩클래스, 중첩인터페이스

1. 중첩 클래스(Nested Class)중첩 클래스는 한 클래스 내부에서 정의한 클래스를 말한다. 중첩 클래스를 사용하면 두 클래스의 멤버들을 서로 쉽게 접근할 수 있고, 외부에는 불필요한 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다.인스턴스 멤버 클래스(inner class)static 키워드 없이 중첩 선언된 클래스를 말한다. 인스턴스 멤버 클래스는 인스턴스 필드와 메소드만 선언이 가능하고 정적 필드와 메소드는 선언할 수 없다.class OuterClass { // 인스턴스 멤버 클래스 class InnerClass { InnerClass {} // 생성자 int field1; // 인스턴스 필드 void method1() { // 인스턴스 메소..

JAVA 2024.12.03

[JAVA] 디자인패턴 - 데코레이터 패턴(Decorator Pattern)을 알아보자

1. 데코레이터 패턴(Decorator Pattern)데코레이션 패턴은 구조 패턴 중 하나로, 객체의 동작을 확장할 수 있도록 해주는 패턴이다. 기본 기능을 구현한 후 추가할 수 있는 기능의 종류가 많은 경우, Decorator 클래스로 정의 한 뒤 Decorator 객체를 조합함으로써 추가 기능을 덧붙인다.  데코레이터 패턴을 왜 사용하는가?데코레이터 패턴을 사용하면 기존 코드를 변경하지 않고 새로운 기능을 추가할 수 있다. 상속보다는 구성(Composition)을 활용하여 객체의 유연성과 재사용성을 높인다.구성(Composition)이란? 객체의 재사용과 확장을 위해 사용하는 설계 기법 중 하나로 클래스간의 "포함(has a ~)" 관계를 표현한다. 객체를 상속하는게 아닌 다른 객체를 멤버 변수로 포..

JAVA 2024.12.03

[JAVA] 디자인패턴 - 전략 패턴(Strategy Pattern)을 알아보자

1. 전략 패턴(Strategy Pattern)전략 패턴은 행위패턴에 속하는 패턴이다. 기능은 같지만 다른 전략을 가진 클래스들을 캡슐화하여 서로 교환이 가능하도록 하는 패턴이다. 어떤 목적을 달성하기 위하여 일을 수행하는 방식인 알고리즘을 여기서 전략이라고 한다.전략 패턴을 왜 사용하는가?전략 패턴을 사용하면 유지보수가 용이하다. 객체들이 공통으로 할 수 있는 행위들을 캡슐화 하는 인터페이스를 정의하여, 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 각각의 클래스에서 행위를 수정하는 것이 아닌 전략을 바꿔주기만 함으로써 행위를 유연하게 확장할 수 있다.public interface Moveable { public void move();}public class Train implements { ..

JAVA 2024.12.02

[JAVA] 오버라이딩 & 오버로딩 (Overriding & Overloading)

1. 오버로딩(Overloading)오버로딩의 정의오버로딩은 사전적으로는 '과적하다'라는 뜻이다. 하나의 메소드 이름으로 여러 기능을 구현하기 때문이다.자바에서의 정의는 한 클래스 내에서 같은 이름의 메서드나 연산자를 서로 다른 매개변수 목록(파라미터 개수, 타입 등)을 사용하여 정의하는 것을 의미한다.오버로딩의 조건메소드의 이름이 같고, 매개변수의 개수나 타입이 달라야 한다. '리턴 값만' 다른 것은 오버로딩 할 수 없다. 만약 매개변수의 타입과 개수가 같고 리턴타입이 같은 경우 Java에서 기능에 관련된 영역까지 개입을 하게되므로 컴파일러가 코드를 구분하는데 문제가 생길 수 있기 때문이다.class OverLoading { public void print() { System.out.pri..

JAVA 2024.12.01

[JAVA] 추상클래스와 인터페이스의 차이점?

추상클래스의 경우 이전 글에서 '상속'을 포스트 할 때 설명을 했으니 인터페이스에 대한 설명을 먼저 시작하겠다. 1. 인터페이스인터페이스(Interface)는 개발 코드와 객체가 서로 통신하는 접점 역할을 합니다. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출시킵니다. 그렇기 때문에, 개발 코드는 객체 내부의 구조를 알 필요가 없고 인터페이스의 메소드만 알고 있으면 됩니다. 인터페이스 선언 : 인터페이스는 클래스와 선언하는 방법이 같다. 클래스는 필드, 생성자, 메소드를 구성 멤버로 가지는데 비해, 인터페이스는 상수 필드와 추상 메소드만을 구성 멤버로 가진다. 또한, 객체를 생성할 수 없기 때문에 생성자를 가질 수 없다.interface RemoteControl {// 상수..

JAVA 2024.12.01

[JAVA] 상속, 다형성, 추상 클래스

1. 상속이란?객체 지향 프로그래밍에서 부모 클래스의 멤버를 자식 클래스에게 물려주는 것을 상속이라고 한다.상속은 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여준다.클래스 상속 : 현실에서 상속은 부모가 자식을 선택해서 물려주지만, 프로그램에서는 자식이 부모를 선택합니다.자식 클래스를 선언할 때 어떤 부모 클래스를 상속받을 것인지 결정하고, 선택된 부모 클래스는 extends 뒤에 기술한다.자식 클래스는 여러 개의 부모 클래스를 상속할 수 없다.부모 클래스에서 private를 가진 필드와 메소드는 상속 대상에서 제외된다.class 자식클래스 extends 부모클래스 { ...}부모 생성자 호출 : Java에서 자식 객체를 생성하면, 부모 객체가 먼저 형성되고 그다..

JAVA 2024.11.26