객체

· React Native
불변성이란? 리액트에서 객체와 배열 타입의 상태를 다둘 때는 불변성(immutability)을 지켜야 한다. 불변성을 지킨다는 것은 객체 또는 배열을 직접 수정하지 않는다는 것을 의미한다. 선언한 객체나 배열을 다른 값으로 변경하고 싶을때는 복제해 새로운 객체나 배열을 생성해야 한다. 불변성을 지켜야 하는 이유 리랙트에서 불변성을 지켜야 하는 이유는 렌더링 성능 최적화 방식 때문이다. 리액트에서는 부모 컴포넌트가 리렌더링(상태가 업데이트되어 다시 렌더링 되는 것)되면 기본적으로 자식 컴포넌트들 또한 리렌더링 된다. 문제는 변경사항이 없는 컴포넌트들도 리렌더링 된다는 것이다. 리액트는 최적화가 많이 되어있어서 리렌더링 된다고 성능에 부하가 발생하진 않지만, 컴포넌트에서 다루는 데이터가 많아지거나 연산량이 ..
· React Native
Props 객체 구조 분해 할당이란 컴포넌트에서 Porps를 조회하는 코드를 더 짧게 구현하는 방법이다. 구조 분해 할당이라는 자바스크립트 문법을 사용하는 방법으로, '비구조화 할당'이라고 부르기도 한다. 이 문법은 객체 안에 있는 값을 더욱 짧은 코드를 사용해 밖으로 추출할 수 있게 해준다. import React from 'react'; import {Text, View} from 'react-native'; function PropsNotSeparated(props) { return ( name: {props.name} birth: {props.birth} ); } function PropsSeparated({name, birth}) { return ( name: {name} birth: {birt..
· JPA
고아 객체 제거 JPA는 부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제하는 기능을 제공하는데 이것을 고아 객체(ORPHAN) 제거라 한다. 이 기능을 사용해서 부모 엔티티의 컬렉션에서 자식 엔티티의 참조만 제거하면 자식 엔티티가 자동으로 삭제한다. @Entiry public class Parent { @Id @GeneratedValue private long id; @OneToMany(mappedBy = "parent", orphanRemoval = true) private List childs; } Parent parent = em.find(Parent.class, id); parent.getChilds().remove(0); // 실제 데이터베이스에서 삭제 orphanRemoval = ..
· JPA
객체는 객체 그래프로 연관된 객체들을 탐색한다. 그런데 객체가 데이터베이스에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 연관된 객체를 처음부터 데이터베이스에서 조회하는것이 아니라, 실제 사용하는 시점에 데이터베이스에서 조회할 수 있다. 프록시의 특징 지연 로딩 기능을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체를 생성하는데 이것을 프록시 객체, 프록시 클래스라고 한다. 프록시 객체는 실제 클래스를 상속받아서 만들어지므로 실제 클래스와 걷 모양이 같다. 따라서 사용하는 입장에서는 이것이 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 된다. 프록시 객체는 실제 객..
· JPA
@MappedSuperclass를 사용하면 부모 클래스는 테이블과 매핑하지 않고 부모 클래스를 상속받는 자식 클래스에게 매핑 정보만 제공한다. 비유를 하자만 추상 클래스와 비슷한데 @Entity는 실제 테이블과 매핑되지만 @MappedSuperclass는 실제 테이블과 매핑되지 않는다. 단순히 매핑 정보를 상속할 목적으로만 사용된다. 이 클래스를 직접 생성해서 사용할 일은 거의 없으므로 추상 클래스로 만드는 것을 권장한다. @MappedSuperclass public abstract class BaseEntity { @Id @GeneratedValue @Column(name = "ID") private long id; @Column(name = "NAME") private String name; } @E..
· AWS
Simple Queue Service 소개 및 사용법(2/3) Simple Queue Service 소개 및 사용법(1/2) Simple Queue Service(SQS)란 ? 분산 시스템를 구성할때 시스템간 메세지를 주고 받을 수 있는 메세지 큐 SQS는 전송,수신,삭제 3가지 기능을 제공한다. SQS의 기.. devbksheen.tistory.com 앞서 기본적으로 SQS에 메시지를 보내고 받는 예제를 구현해보았다. 이번에는 메시지를 객체로 보내고 받는 예제를 구현해보겠다. 앞서 만들었던 Controller와 Sender, Listener를 수정해서 구현해볼것이다. 이메일을 보내는 로직이라고 했을때 SendMailDTO Getter, NoArgsConstructor, AllArgsConstructor..
· Java
다형성이란? 여러 가지 형태를 가질 수 있는 능력을 의미하며, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있다. 참조변수가 사용할 수 있는 멤버의 개수는 인스턴스의 멤버 개수보다 같거나 적어야 한다. class Car { String brand; String engine; int door; ... } class SportCar extends Car { SportCar(String brand, int door) { super(brand, "sport", door); } } Car car = new SportCar("Kia", 4); // 조상클래스 타입의 참조변수로 자손클래스 인스..
· Java
클래스(Class)와 객체(Object)의 정의와 용도 클래스(Class)란? "객체를 정의해놓은 것" 또는 "객체의 설계도 또는 틀" 클래스의 정의 : 객체를 정의해 놓은 것 클래스의 용도 : 객체를 생성하는데 사용 객체(Object)란? 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻한다. 객체의 정의 : 실제로 존재하는 것. 사물 또는 개념 객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다름 예) TV설계도(클래스)는 TV(객체)를 정의한 것이며 TV(객체)를 만다는데 사용된다. 객체와 인스턴스 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate)라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다. 예) TV설계도(클래스)..
· Java
객체지향언어의 역사 초창기 컴퓨터는 주로 과학실험이나 미사일 발사실험과 같은 모의실험(simulation)을 목적으로 사용했다. 과학자들은 실제 세계와 유사한 가상 사계를 컴퓨터 속에 구현하고자 노력했으며 이러한 노력은 객체지향이론을 탄생시켰다. 객체지향이론의 기본 개념은 "실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다. " 라는 것이다. 실제 사물의 속성과 기능을 분석한 다음, 데이터(변수)와 함수로 정의함으로써 실제 세계를 컴퓨터 속에 옮겨 놓은 것과 같은 가상세계를 구현하고, 이 가상세계에서 모의 실험을 함으로써 많은 시간과 비용을 절약할 수 있었다. 객체지향이론은 상속, 캡슐화, 추상화 개념을 중심으로 점차 구체적으로 발전되었으며 1960년대 중반에 시뮬..
beekei
'객체' 태그의 글 목록