Jenkins 를 어느 정도 구축했으니 MVP 를 진행할 차례! 인데
팀원들이 작성한 문서와 Backend Code 를 뜯어 보려고 하니
모르는 용어들이 많아서 개념만 잠깐 알고 가려고 한다
Gradle
Groovy 기반의 빌드 자동화 시스템, 안드로이드 스튜디오의 공식 빌드 시스템
지원하는 언어 - Java, Groovy, Kotlin, Apachi Groovy 등
bundle.gradle 파일에서 사용할 라이브러리를 지정할 수 있다
(의존성이나 플러그인 설정 등 프로젝트 빌드에 대한 모든 기능을 정의하는 곳이다)
Gradle 은 멀티 프로젝트 빌드 기능을 제공하기 때문에 여러 모듈을 동시에 개발하고
각각 따로 빌드 작업을 하지 않아도 되는 번거로움을 줄일 수 있는 장점이 있다
JPA Java Persistence API
자바의 ORM 표준 규격
자바 플랫폼 SE 와 자바 플랫폼 EE 를 사용하는 응용프로그램에서
(SE Standard Edition 자바의 기본 기능을 제공하는 버전,
EE Enterprise Edition 대규모 시스템 개발을 위한 기능을 제공하는 버전)
관계형 데이터베이스의 관리를 표현하는 자바 API
JPA 를 사용하면 SQL 코드 작성 없이도 객체 지향적으로 데이터베이스 작업을 할 수 있다
JPA 는 아래의 세 가지 영역으로 구성된다
* javax.persistance 패키지로 정의된 API 그 자체
* Java Persistance Query Language, JPQL
* 객체/ 관계 메타데이터
ORM Object-Relational Mapping
객체-관계 매핑 - 클래스와 테이블을 자동으로 매핑하는 것을 의미한다
ORM 을 통해 객체 간의 관계를 바탕으로 SQL 문을 자동으로 생성하여 불일치를 해결하기 때문에
ORM 을 이용하면 따로 SQL 문을 짤 필요 없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있다
완벽한 객체지향적인 코드, 재사용 유지보수 리팩토링 용이성, DBMS 종속성 하락 등의 장점이 있지만
(DBMS DataBase Management System)
세분성 Granualrity, 상속성 Inheritance, 일치 Identity, 연관성 Associations, 탐색 Navigation 등에서
객체-관계 간의 불일치가 생길 수 있으니 신중하게 설계해야 한다
Hibernate
자바 언어를 위한 ORM Framework
JPA 의 구현체 중 하나로, JPA 에서 정의된 인터페이스를 구현하며
내부적으로 JDBC API 를 사용하여 데이터베이스와 상호작용한다
JPA 가 자바에서 객체와 관계형 데이터베이스 간의 매핑을 관리하는 표준 규격이고
Hibernate 는 이 표준을 구현한 프레임워크로, 데이터베이스 연동 작업을 쉽게 처리할 수 있도록 돕는다
ORM, JPA, Hibernate 의 관계
ORM - 객체 관계 매핑, 객체와 데이터베이스 간의 변환을 자동으로 처리해 주는 기술
JPA - 자바의 ORM 표준 규격, 객체와 관계형 데이터베이스 간의 변환을 자동으로 처리해주는 기술
Hibernate - JPA 의 구현체이자 자바 언어를 위한 ORM 프레임워크, JPA 에서 정의된 인터페이스를 구현하여
실제 데이터베이스와의 상호작용을 처리하는 라이브러리
Lombok
어노테이션 기반으로 코드를 자동완성해주는 라이브러리
Lombok 을 이용하면 Getter, Setter, Equals, ToString 등과 다양한 방면의 코드를 자동완성시킬 수 있다
Getter/ Setter
Getter - 객체의 속성 Property 값을 반환하는 메서드
Setter - 객체의 속성 값을 설정, 변경하는 메서드
객체에 바로 접근하지 않고 getName(), setName() 같은 메서드를 통해 경유해서 설정하도록 하는 기법
객체 내부 속성에 직접 접근하지 않아 객체의 정보 은닉을 가능하게 해주어 보안을 강화할 수 있고
코드의 안정성과 유지보수성을 높일 수 있다는 장점이 있다
옳지 않은 값을 넣으려고 할 때 이를 미연에 방지할 수도 있다
접근자 프로퍼티
1) Data Property 데이터 프로퍼티 - 객체 내부에 저장된 실제 데이터 값
2) Accessor Property 접근자 프로퍼티 - 키 Key 와 값 Value 를 가지지 않고 Getter 와 Setter 함수를 가지는 특수한 프로퍼티
주의할 점
1) Setter 없이 Getter 만 선언하면 Error 가 발생한다
2) 데이터 프로퍼티명과 접근자 프로퍼티명이 같을 경우 Setter 에서 무한 루프에 빠진다 (Setter 함수 내에서 자기 자신 호출)
접근자 프로퍼티명과 데이터 프로퍼티명을 다르게 하거나, 내부적으로 다른 변수에 값을 저장하도록 하여 방지할 수 있다
yaml
YAML Ain't Markup Language or Yet Another Markup Language
구성 파일을 작성하는 데 사용되는, 사람이 읽을 수 있는 데이터 직렬화 언어
들여쓰기와 키-값 쌍 등의 깔끔한 구문으로 사람이 읽기 쉽다
주로 설정 파일을 작성할 때 사용하거나 데이터를 다른 시스템으로 전송할 때 사용한다
Entity
데이터 모델링에서 사용되는 객체 또는 데이터베이스 테이블
Instance 인스턴스 - 데이터베이스에 저장된 데이터 내용의 전체 집합
Attribute 속성 - 더 이상 분리되지 않은 단위로, 업무에 필요한 데이터를 저장
Entity 의 특징
1) 업무에서 필요로 하는 정보여야 한다
2) 유일한 식별자가 있어야 한다
3) 두 개 이상의 인스턴스 집합이어야 한다
4) 업무 프로세스에 의해 이용되어야 한다
5) 반드시 속성을 포함해야 한다
6) 다른 엔티티 간의 관계가 존재해야 한다
Entity 의 목적
데이터베이스와 객체 매핑 - 자바 객체를 데이터베이스 테이블에 저장하거나 조회하는 데 사용
비즈니스 로직 처리 - 엔티티는 일반적으로 데이터베이스 상호작용 외에도, 특정 비즈니스 로직을 처리하는 데 중요한 역할을 한다
Entity Class 의 특징
1. 테이블과 대응 - 엔티티 클래스는 일반적으로 데이터베이스의 테이블과 1:1 로 매핑된다
클래스의 필드는 테이블의 열에 대응하며, 각 객체는 테이블의 한 행과 대응된다
2. JPA 어노테이션 - 자바의 Persistance API (JPA) 를 사용하여 엔티티 클래스를 정의할 때는
여러 어노테이션을 사용하여 데이터베이스와의 매핑을 지정한다
'크래프톤정글 > 정글생활' 카테고리의 다른 글
[회고] 나만무 중간 회고 (0) | 2025.01.07 |
---|---|
[DB] MySQL 에 정보 저장하고 검색하기 (0) | 2025.01.05 |
[나만무] AWS 환경 구성 (2) | 2024.12.21 |
[나만무] 기획 확정 (0) | 2024.12.20 |
[나만무] 기획 1차 발표 이후 다시 기획 논의 (0) | 2024.12.16 |