개발 기록

211104 스프링2 본문

TIL

211104 스프링2

수염차 2021. 11. 4. 18:57

스프링 알듯말듯 이해는 가면서 와닿지는 않는다 자꾸 자고 싶다..

매컴싸도 아침에 들어서 비몽사몽해서 정리해야 하는데.. 의지박약..

 

 

*객체지향

-객체가 각각의 역할과 책임이 있고 메시지로 상호작용해서 협력해 나가는 것

 

*프로그램에서 객체란 그냥 모든 사물이 아니라 프로그램 구현에 필요한 것들을 모델링하는 하나하나

 

*캡슐화 - 개체의 메서드와만 상호작용이 잘 되면 내부 구현은 어떻든 상관없다

*결합도 - 의존성이 있다. 특정 클래스가 바뀌면 연결된 다른 클래스에게 영향을 준다

-결합도를 낮추고 응집도 높이는 것을 지향

*응집도  - 관련된 기능끼리 묶여있다

EX) 사칙연산 - 덧셈 ,뺄셈,나눗셈,곱셈

 

*다형성 : 여러 타입을 가진다는 것 (타입 : 클래스, int 등등)

단일 객체는 많은 형태를 가질 수 있으며 객체와 객체 모두로 사용될 수 있다.

 

*인터페이스

인터페이스 설계

-객체의 인터페이스는 객체가 수신할 수 있는 메시지 목록으로 구성됨

-객체가 어떤 메시지를 수신할 수 있는지가 객체가 제공하는 인터페이스의 모양을 빚는다

 

*JPA Java Persisitence API- 자바 진영에서 만든 ORM 기술 표준

- 개발자가 직접 sql을 작성하는 것이 아니라 JPA 에서 제공하는 API를 사용하면 된다

어플리케이션과 JDBC 사이에서 동작

ORM Object Relational Mapping -

객체 지향 시스템으로 작업할때 개체 모델과 관계형 데이터베이스 간에 불일치가 있다 RDBMS는 테이블 형식으로 데이터를 나타내는 반면 자바 같은 객체 지향 언어는 데이터를 상호 연결된 객체 그래프(?)로 나타낸다.

ORM은 관계형 데이터베이스와 Java와 같은 객체 지향 프로그래밍 언어 간에 데이터를 변환하는 프로그래밍 기술

 

*JDBC Java Database Connectivity - java 데이터베이스 연결을 나타낸다.

데이터베이스에 연결 및 작업을 하기 위한 JAVA의 표준 인터페이스/
java 프로그램에서 관계형 데이터베이스에 액세스하기위한 java API. 이러한 자바 API를 사용하면 자바 프로그램이 SQL 문을 실행하고 모든 SQL 호한 데이터베이스와 상호작용을 할 수 있다.

 

 

*******************************************

수업시간에 튜터님께서 스프링에서 변수를 퍼블릭으로 안 쓰고 왜 굳이 프라이빗으로 해서 게터 세터 쓰는 이유가 뭘까라고 질문주셨다 나도 이 생각을 해서 궁금했다 !! 근데 오늘은 말씀 안 해주심 

여러가지 이유가 있을 것같은데 다음 시간에 설명해주시면 추가해야겠다

 

그래서 검색해봄

-간단하게 설명하면 캡슐화와 자료보호에 대한 목적이라는데 

하나씩보면 !

Getter :  프로젝트시 변수가 많을때 모든 변수를 다 사용하는 것도 아니고 불필요한 변수들이 거슬릴 것이다.

이때 변수들을 private 처리해서 해당 클래스 안에서만 노출되게 하고 다른 사람들도 사용할 필요가 있는 주요 변수들만 getter를 이용해서 드러낼 수 있다. 이렇게 변수들의 외부 노출을 제한하고 노출 범위를 정해주는 것이 getter이다.

 

Setter : set메서드를 사용하면 멤버 변수에 값을 설정해줄 때 조건을 걸어줄 수 있다. 예를 들어 age 변수가 특정 숫자 이상이여야 할때 public에서는 조건을 걸기가 어렵다. 반면 private을 사용하게 되면 set(변수) 해주면서 조건을 걸어 입력받는게 가능해지므로 누군가가 데이터를 막 변경하는 것을 제한할 수 있다.

 

private 을 쓰면 내부로직은 알 수 없고 내부에서 가공된 값을 사용할 수 있다. 내부로직 알 필요가 없는 경우에 사용

 

 

 

**참고사이트

 

JAP 요약 자료

ORM 개요

Getter랑 Setter를 왜 써야해??

private 멤버 변수를 사용하는 이유

'TIL' 카테고리의 다른 글

211108 스프링3 (@RequestBody)  (0) 2021.11.08
211107 WIL  (0) 2021.11.07
1103 TIL (스프링 )  (0) 2021.11.04
211102 TIL  (0) 2021.11.02
211101 TIL (서버리스 백엔드-3)  (0) 2021.11.01
Comments