no image
ORM
ORM(Object -Relational Mapping) ORM 프레임워크가 이를 RDB에 적절한 형태로 전환해 주거나 그 반대로 RDB에 저장되어 있는 정보를 자바오브젝트가 다루기 쉬운 형태로 변환해 주는 기술을 말합니다. 쉽게 말하면 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 데이터 매핑과 상호 작용을 쉽게 만들어주는 기술입니다. ORM 특징 ORM에서 데이터베이스의 테이블에 매핑되는 객체를 엔티티라고 부릅니다. 엔티티 클래스는 일반적으로 데이터 베이스 테이블의 구조와 일치하는 필드를 포함합니다. 데이터베이스 스키마와 객체 모델 간의 매핑을 정의하는 방법을 제공하며 어노테이션을 사용하거나 XML을 통해 매핑 정보 설정 할 수 있습니다. 객체 지향 언어를 사용하며 데이터 베이스에서 데이터를 ..
2023.11.10
no image
Entity 연관 관계
Entity 연관 관계 데이터베이스에서 테이블 간의 관계를 의미합니다. 객체 간의 관계를 효과적으로 표현하고 관리하며 Spring에서는 JPA를 사용하여 엔티티 간의 연관관계를 다룹니다. 1대 1 관계 (One-to-One) 어떤 엔티티 쪽에서 상대 엔티티와 반드시 단 하나의 관계를 가지는 것을 말합니다. 학생 학생은 하나의 주소를 가지고 있습니다. @Entity public class Student { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; // 1대1 관계: 학생은 하나의 주소를 가짐 @OneToOne @JoinColumn(name = "address_id") private..
2023.11.09
no image
GIT 브랜치 전략
Git Branch 전략 Git을 사용하여 프로젝트를 개발하고 관리하는 방식을 설계하고 문서화한 것입니다. 이러한 전략은 팀이 협업하고 코드를 효율적으로 관리하며 충돌과 혼란을 최소화하는 데 도움을 줍니다. Git Flow Git을 사용한 소프트웨어 개발 프로세스를 조직화하고 단순화하는 전략입니다. 기본적인 가지 이름은 feature > develop > release > hotfix > master이며 5가지로 구분합니다. master 제품용 코드가 있는 메인 브랜치이며 제품으로 출시될 수 있는 브랜치입니다. develop 새로운 기능을 추가하고 기능을 수정하며 전반적으로 소프트웨어 개발이 이루어집니다. feature 새로운 기능 또는 수정 작업을 개발할 때 사용되는 브랜치이며 develop 브랜치에서..
2023.11.08
GIT
no image
JPA 영속성
JPA 영속성 컨텍스트 객체가 생명이나 공간을 자유롭게 유지하고 이동할 수 있는 객체의 성질이며 객체와 데이터베이스 간의 상호작용을 관리하는 중요한 역할을 합니다. 엔티티를 영구 저장하는 환경 개념 영속성 컨텍스트는 엔티티 객체의 생명주기를 관리합니다. 엔티티 객체가 생성되면, 영속화, 수정, 삭제 과정을 추적 및 관리합니다. 엔티티 객체를 메모리에 1차 캐시 보관하며 엔티티의 식별자(PK)를 기반으로 저장하고 데이터베이스에서 불필요한 반복적인 조회를 피할 수 있게 합니다. 지연 로딩을 지원하여 연관된 엔티티를 실제로 필요할 때만 가져오는 방식을 제공합니다. 엔티티 식별자를 기반으로 1차 캐시를 유지하며 엔티지 객체를 식별자를 사용하여 효율적으로 조회, 저장할 수 있습니다. 비영속성 영속성과는 반대 개념..
2023.11.07
no image
IoC와 DI
IoC (Inversion of Controle) 프로그램의 흐름 제어가 응용 프로그램 코드에서 프레임워크나 컨테이너로 반전되거나 이동되며 여러 함수를 호출하고 객체의 수명주기를 관리하는 대신 프레임 워크가 제어를 가져가고 적절한 시점에서 코드를 호출하게 됩니다. IoC는 느슨한 결합과 모듈성을 촉진하여 코드를 유지 보수를 가능하게 합니다. public class A { b = new B(); } IoC 사용 후 public class A { private B b; } 느슨한 결합 소프트웨어 컴포넌트 간의 상호 의존성을 최소화하고 독립성을 높이는 소프트웨어 설계 원칙! public class MemoService { private final MemoRepository memoRepository; publ..
2023.11.06
no image
서버와 클라이언트
서버와 클라이언트 서버와 클라이인터는 컴퓨터 네트워크 환경에서 중요한 역할을 하는 두 가지 주요한 역할을 가리키는 용어입니다. 서버 서버는 클라이언트의 단짝으로 컴퓨터 네트워크 또는 인터넷을 통해 서비스를 제공하고 관리하는 컴퓨터 시스템 또는 프로그램을 가리키는 용어입니다. 서버는 클라이언트로부터의 요청에 응답하고 데이터를 저장하거나 처리하며, 서비스를 제공하는 중요한 역할을 합니다. 역할 요청 처리 : 서비스는 클라이언트로부터 요청을 받아들이고, 그 요청을 처리합니다. 이 요청은 파일 다운로드, 웹 페이지 접속, 이메일 전송과 같은 다양한 형태일 수 있습니다. 데이터 저장 : 서버는 데이터를 저장하고 관리합니다. 이 데이터는 웹 사이트의 콘텐츠, 데이터베이스 정보, 파일, 이밎, 동영상 등 다양한 형태..
2023.11.02
no image
Pubilc과 Private
public과 private 그것이 문제로다... public과 private의 선택의 길에서 고를 때 항상 왜 뭘 써야 하지라고 생각하게 되어서 Public과 Private에 대해 알아보게 되었습니다. 접근 제어자 프로그래밍 언어에서 클래스, 메서드, 변수 및 다른 멤버들에 대한 접근 권한을 제어하는 데 사용합니다. 제어자는 코드의 보안, 모듈성 및 유지보수를 향상하는데 도움이 됩니다. public 어떤 클래스나 패키지든 접근이 가능하며, 패키지에서 자유롭게 사용할 수 있습니다. 외부에서 직접 접근할 수 있으므로 주로 라이브러리, API, 인터페이스 등에 사용합니다. 주의해서 사용해야 하며, 인터페이스와 추상 클래스의 메서드 등에 많이 사용합니다. public class Class{ public int..
2023.11.01
no image
Stream(기초)
Stream 데이터 처리 작업을 간결하게 수행하고 병렬 처리를 쉽게 지원하며 성능을 향상하는 역할을 하며 중간 매개자 역활도 가지고 있습니다. stream 사용 stream 에는 중간연산(Intermediate Operation)과 최종연산(Terminal Operation)이 있습니다. 중간연산은 이런저런 작업이 필요 없이 여러 번 사용 가능합니다. 최종연산은 최종적으로 나아지는 결과물을 말하며 한 번만 사용 가능합니다. stream의 종류는 다양하고 자주 사용하는 stream 알아보겠습니다. 정수형 stream int[] scores = {100, 80, 97, 67, 80} Arrays.stream(scores) .filter(x -> x >= 90) .forEach(x -> System.out.p..
2023.10.30
no image
Lambda
람다(Lambda) 함수형 프로그래밍을 지원하고, 코드를 더 간결하게 작성할 수 있도록 도와줍니다. 람다는 익명 함수의 일종으로 메서드를 하나의 식으로 표현하는 방법입니다. 익명 함수 이름이 없는 함수로, 주로 프로그램의 특정 부분에서 일시적으로 사용되고 다른 함수에서 인수로 전달되는 함수입니다. 특징 익명 함수는 이름을 가지지 않고 익명함수는 함수명을 가져야 한다는 제한이 없습니다. 익명 함수를 이용했을 때는 코드를 간결하게 만들 수 있습니다. 람다식 : 간결한 형태의 코드 뭉치 (전달값1, 전달값2, ...) -> {코드} EX1 public void print() { String s = "test"; System.out.println(s); } 람다식으로 바꾸려면 접근제어자인 public 필요가 x..
2023.10.29