OOP(Object-Oriented Programming)의 4대 원칙과 SOLID 5대 원칙 정리
·
🗨️ Backend/Java
OOP의 4대 원칙 1. 캡슐화 (Encapsulation)데이터 보호를 위해 클래스의 속성을 private으로 설정하고, getter와 setter 메서드를 통해 데이터에 접근하도록 한다. 이를 통해 객체의 내부 상태를 외부에서 직접 변경하지 못하게 하여 데이터 무결성을 유지할 수 있다.2. 추상화 (Abstraction)추상화는 복잡한 시스템의 세부 사항을 숨기고, 필요한 부분만을 드러내는 개념이다. 이를 통해 코드 재사용성을 높일 수 있다. abstract class와 interface를 활용하여 공통적인 기능을 정의하고, 이를 구현하는 다양한 클래스에서 재사용할 수 있다.3. 다형성 (Polymorphism)다형성은 같은 인터페이스나 부모 클래스의 메서드를 다양한 방식으로 구현할 수 있게 해주는 ..
JPA란? 개념, 영속성 컨텍스트, JPQL까지 한번에 정리
·
🗨️ Backend/Java
JPA(Java Persistence API)는 자바 애플리케이션에서 관계형 데이터베이스를 쉽게 다룰 수 있도록 도와주는 ORM(Object-Relational Mapping) 기술이다. 즉, SQL을 직접 작성하지 않고 자바 객체를 통해 데이터베이스와 상호작용할 수 있도록 해준다.✅ JPA의 주요 개념1. ORM(Object-Relational Mapping)JPA는 ORM 기술을 기반으로 동작하며, 객체와 관계형 데이터베이스 테이블을 매핑하는 역할을 한다. 이를 통해 SQL을 직접 다루지 않아도 객체를 활용하여 데이터를 저장하고 조회할 수 있다.2. 엔티티(Entity)JPA에서 데이터베이스 테이블과 매핑되는 자바 객체를 "엔티티"라고 한다. 엔티티 클래스는 @Entity 어노테이션을 사용하여 정의한..
Spring WebSocket과 STOMP, 그리고 Kafka를 활용한 실시간 통신
·
🗨️ Backend/Java
1. 웹소켓(WebSocket)이란?1.1 웹의 기본 통신 방식: HTTP의 한계웹 애플리케이션에서 서버와 클라이언트 간의 데이터 교환은 일반적으로 HTTP를 사용한다. 하지만 HTTP는 비연결성(stateless) 프로토콜로, 클라이언트가 요청을 보내야만 서버가 응답하는 단방향 통신 방식이다.이 방식은 실시간성이 중요한 애플리케이션(예: 채팅, 주식 거래, 알림 서비스 등)에서는 비효율적이다. 주기적으로 서버에 요청을 보내는 폴링(Polling), 롱 폴링(Long Polling), 서버 센트 이벤트(Server-Sent Events, SSE) 같은 기술이 사용되지만, 성능과 확장성에서 한계가 있다.1.2 웹소켓(WebSocket)의 등장웹소켓은 클라이언트와 서버 간에 지속적인 연결을 유지하며 양방향 ..
[배포] AWS에 Jenkins를 활용한 GitHub Webhook 기반 CI/CD 구축
·
🚚 DevOps
# AWS에 Jenkins 설치 -> JDK 17 설치 - Docker설치 - Jenkins 설치  ▶ JDK 17 설치더보기wget https://corretto.aws/downloads/latest/amazon-corretto-17-x64-linux-jdk.debsudo apt-get install -y java-common sudo dpkg -i amazon-corretto-17-x64-linux-jdk.deb java -version▶ Docker 설치더보기# 도커 설치 sudo apt -y install language-pack-ko sudo localectl set-locale LANG=ko_KR.UTF-8 sudo apt-get update sudo apt-get install ca-cert..
Thymeleaf 템플릿 엔진
·
🗨️ Backend/Java
Thymeleaf는 자바 웹 애플리케이션의 뷰(화면)를 만들기 위한 템플릿 엔진이다. Thymeleaf는 HTML, XML, JavaScript, CSS 등의 마크업 언어를 지원하며, 순수한 HTML을 최대한 유지하려는 네츄럴 템플릿(Natural Templates) 기반의 템플릿 엔진이다. Thymeleaf는 서버 측에서 HTML 문서로 렌더링 되어 전달되므로클라이언트 측에서 추가적인 처리없이 HTML 문서를 확인할 수 있다. 무엇보다 스프링과 자연스런 통합을 지원하기 때문에 Spring MVC 애플리케이션에서 JSP를 대체하는 모든 기능을 제공하며 스프링이 지원하는 다양한 기능을 활용할 수 있다.  ThymeleafIntegrations galore Eclipse, IntelliJ IDEA, Spri..
[Java] 컬렉션 프레임웍 (5) - HashSet, TreeSet
·
🗨️ Backend/Java
HashSet HashSet과 TreeSet은 이름 그대로 Set인터페이스를 구현하였기 때문에 순서가 없고 중복을 허용하지 않는다. 일반적으로는 HashSet을 사용하는 것이 가장 일반적이다. 또한, 순서를 유지하려면 LinkedHashSet클래스를 사용하면 된다. TreeSet은 범위 검색과 정렬에 유리한 컬렉션 클래스이다. 그렇기에 HashSet보다 데이터 추가나 삭제에 시간이 더 소요된다. HashSet의 주요 메서드 생성자 int initialCapacity는 HashSet의 초기 용량을 지정해주는 것이다. float loadFactor은 언제 HashSet의 용량을 두배 증가할지 지정해주는 것이다. 예를 들어 loadFactor에 0.8을 입력하면 HashSet의 용량이 80프로 차면 용량이 두..
[Java]객체지향 (4) - instanceof 연산자, 매개변수다형성, 여러 종류의 객체를 배열로 다루기
·
🗨️ Backend/Java
instanceof 연산자 - 참조변수의 형변환 가능 여부 확인에 사용 - 가능하면 true 반환 - 형번환 전에 반드시 instanceof로 확인해야 함 doWork(new Car()); doWork(new FireEngine()); doWork(new Ambulance()); 3 문장이 모두 가능하다. doWork(new FireEngine());은 Car c = new FireEngine(); doWork(c);와 동일하다. 형변환을 하는 이유는 인스턴스의 원래 기능을 모두 사용하기 위해서이다. Car타입의 리모컨인 c로는 water()를 호출할 수 없기 때문에, 리모컨을 FireEngine타입으로 바꿔서 water()를 호출한 것이다. FireEngine fe는 자기 자신과 자신의 모든 조상으로도..
[Java]객체지향 (3) - 제어자,캡슐화,다형성,참조변수의 형변환
·
🗨️ Backend/Java
제어자 ( modifier ) - 클래스와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미 부여 접근 제어자 → public , protected , (default) , private 그 외 → static , final , abstract , native , transient , synchronized , volatile , strictfp - 하나의 대상에 여러 제어자를 같이 사용 가능 ( 접근 제어자는 하나만 ) static - 클래스의 , 공통적인 제어자 대상 의 미 static 멤버변수 - 모든 인스턴스에 공통적으로 사용되는 클래스 변수가 된다. - 클래스 변수는 인스턴스를 생성하지 않고도 사용 가능하다. - 클래스가 메모리에 로드될 때 생성된다. 메서드 - 인스턴스를 생성하지 않고도 호출..
[Java]객체지향 (2) - 상속,참조변수, 오버라이딩, 패키지
·
🗨️ Backend/Java
상속 상속 ( Inheritance ) - 기존의 클래스로 새로운 클래스를 작성하는 것. ( 코드의 재사용 ) - 두 클래스를 부모와 자식으로 관계를 맺어주는 것. class 자식클래스 extends 부모클래스 { // ... } 이렇게 자식 클래스 옆에 extends를 사용해 부모 클래스를 입력해주면 상속관계가 된다. - 자손은 조상의 모든 멤버를 상속받는다. ( 생성자, 초기화 블록 제외 ) 자손과 조상를 사용하는 이유는 부모의 부모 것도 상속을 받기 때문이다. - 자손의 멤버 개수는 조상보다 적을 수 없다. ( 같거나 많다. ) class Parent { int age; } class Child extends Parent { } Child 클래스는 멤버가 0개처럼 보이지만 사실 멤버가 1개이다. 부..
[Java]객체지향 (1) - 객체,클래스,메서드,static
·
🗨️ Backend/Java
객체 지향 80년 초 소프트웨어의 위기 - 빠른 변화를 못 쫓아감 해결책으로 객체지향 언어를 도입 (절차적 → 객체지향) 코드의 재사용성이 높고 유지보수가 용이, 중복 코드 제거 객체지향 언어 = 프로그래밍 언어 + 객체지향 개념(규칙) oop ( object-oriented programming ) 1. 캡슐화 2. 상속 3. 추상화 4. 다형성 클래스와 객체 클래스의 정의 : 클래스란 객체를 정의해 놓은 것 클래스의 용도 : 클래스는 객체를 생성하는 데 사용 객체의 정의 : 실제로 존재하는 것. 사물 또는 개념 객체의 용도 : 객체가 가지고 있는 기능과 속성에 다름 객체의 구성요소 - 속성과 기능 객체 = 속성(변수) + 기능(메서드) 객체와 인스턴스 객체 : 모든 인스턴스를 대표하는 일반적 용어 인..
Kyle99
'Java' 태그의 글 목록