분류 전체보기 204

Eclipse에 Azure 설치 하기

Eclipse마다 Java를 지원해주는 최소의 버진이 있다. Eclipse 4.17 이후로부터는 최소 Java 11 버전을 이용해야 하며 Java 8 이전 버전을 사용하려면 Eclipse 4.16 이전 버전을 사용해야 한다. 나는 4.24 버전이 java 1.8을 지원해주는 줄 알고 계속 구글링을 해보면서 시간을 날렸다.. 아래의 사이트는 Eclipse을 다운로드할 수 있으며 최신 버전부터 이전 버전까지 다운로드가 가능하다 https://www.eclipse.org/downloads/packages/release Eclipse에 Azure 설치 전에 https://learn.microsoft.com/ko-kr/azure/developer/java/fundamentals/java-support-on-azu..

Language/Java 2022.10.27

연관관계 매핑 고려사항 3가지

연관관계 매핑 고려사항 3가지로 뽑는다면 다중성, ( 단방향, 양방향), 연관관계 주인으로 뽑을 수 있다 1. 다중성 다대일 : @ManyToOne 일대다 : @OneToMany 일대일 : @OneToOne 다대다 : @ManyToMany 2. 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인이 가능하다 사실 방향이라는 개념이 없다 객체 참조 용 필드가 있는 쪽으로만 가능하다 한쪽만 참조하면 단방향이다 양쪽이 서로 참조하면 양방향이다. 사실 양방향이라는 것은 별로 사용하지도 않아 그냥 알고만 있는 것이 좋다 3. 연관관계 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 객체 양방향 관계는 A -> B, B -> A 처럼 참조가 2군데이다 객체 양방향 관계는 참조가 2군데 있다. 둘 중 테이블의..

Spring 2022.10.25

원격 데스크톱 연결 하여 사용하는 방법

원격 데스크톱 연결하는 방법 시작은 혼자 집에서 개인 프로젝트를 하다 생긴 일이다.. 노트북으로 모든 걸 하다 보니 본체를 사용할 때가 없어 서버로 열어두면 어떨까? 라는 생각에 시작되었다.. 구글에 원격 데스크톱을 작성하면 크롬 원격 데스크톱이 나오는 걸 확인할 수가 있다 하지만 나는 이걸 원하는게 아니다.. 윈도에서 지원해주는 원격 데스크톱을 원하는 것이다.. 노트북은 window 11 pro라 상관이 없지만 집에 있는 본체는 window 10이긴 하지만 pro인지 home인지 생각이 안 나서 살짝 불안했다. window10 pro 이상부터 지원해주기 때문이다. 다행히 window 10 pro 인걸 확인하고 작업을 시작했다. 만약 자신이 window 10 pro 인지 home인지 모르겠으면 내 컴퓨터..

카테고리 없음 2022.10.23

공인IP 와 사설IP가 무엇일까?

공인 IP 란? 공인IP는 (Public IP Address) 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자, Internet Service Provider)가 제공하는 IP주소이다 인터넷 서비스 공급자는 KT,LG,SK 등 기업에서 인터넷 서비스를 제공해주는 것이라고 알고 있으면 된다 공인 IP는 전세계에서 유일한 IP 주소를 갖고있다 공인 IP 주소가 외부에 공개되어 있기에 인터넷에 연결된 다른 PC로부터의 접근이 가능하다. 공인 IP 주소를 사용하는 경우에는 방화벽 등의 보안 프로그램을 설치할 필요가 있다 사설 IP 란? 일반 가정이나 회사 내 등에 할당된 네트워크의 IP주소이며, 로컬 IP, 가상IP라고도 한다. IPv4의 주소 부족으로 인해 서브넷팅된 IP이기 때문에..

카테고리 없음 2022.10.23

연관관계 매핑 기초

목표 1. 객체와 테이블 연관관계의 차이를 이해 2. 객체의 참조와 테이블의 외래 키를 매핑 용어를 알고 가자 방향 (Direction) : 단방향, 양방향 다중성 (Multiplicity) : 다대일 (N:1), 일대다 (1:N), 일대일 (1:1), 다대다(N:M) 연관관계의 주인(Owner) : 객체 양방향 연관관계는 관리 주인이 필요하다 연관관계가 필요한 이유가 무엇일까? 객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다 객체를 테이블에 맞추어 모델링 테이블 연관관계를 보면 Member가 N이고 Team이 1 이다. N:1 관계 -> 다대일 관계 -> Member 대 Team 이라 보면된다. Member Class @Entity public class Member { @Id @..

Spring 2022.10.19

[리팩토링] 중재자(Middle Man)

중재자(Middle Man) 란? 캡슐화를 통해 내부의 구체적인 정보를 최대한 감출 수 있다. 그러나, 어떤 클래스의 메소드가 대부분 다른 클래스로 메소드 호출을 위임하고 있다면 중재자를 제거하고 클라이언트가 해당 클래스를 직접 사용하도록 코드를 개선할 수 있다 메세지 체인의 반대라고 생각하면 좋다 메세지 체인은 캡슐를 하여 코드를 최대한 줄이면서 이어 나가지만 모든 코드가 캡슐화로 되어있으면 필요없는 코드까지 캡슐화가 되기 때문에 이러한 문제를 해결하는 방법 중 하나가 중재자 냄새이다. 관련 리팩토링 중재자 제거하기(Remove Middle Man) 함수 인라인(Inlince Function) 슈퍼 클래스를 위임으로 바꾸기 서브클래스를 위임으로 바꾸기 중재자 제거하기 같은 경우는 클라이언트가 필요한 클..

카테고리 없음 2022.10.12

엔티티의 생명주기

엔티티는 4단계의 생명 주기 비영속 (new/transient) 영속 (managed) 준영속 (datached) 삭제 (removed) 영속성 관리 비영속 (new/transient) 비영속 상태는 객체를 새로 생성한 상태이다. JPA와 전혀 관계없이 객체만 생성한 상태이다. Member member = new Member(1L,"test"); //member는 비영속 상태 영속 상태가 아니므로 당연히 영속성 컨텍스트에 의해 관리되지 않으며, 1차 캐시, 변경감지등의 기능이 적용되지 않는다. 영속 (managed) 영속성 컨텍스트에 의해서 관리되어지는 상태이다. 생성한 객체를 em.persist()를 통해 영속성 컨텍스트에 저장하거나, 혹은 em.find()를 통해 DB에서 엔티티를 조회하면 영속성 컨..

Language/Java 2022.10.10

옵저버 패턴(Observer Pattern)

옵저버 패턴이란? 객체의 상태 변화를 관찰하는 관찰자들 즉, 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 어떤 객체의 변경 사항이 발생하였을때 이와 연관된 객체들에게 알려주는 디자인 패턴이라고 생각하면 된다. 다수의 객체가 특정 객체 상태 변화를 감지하고 알림을 받는 패턴 발행(publish) - 구독 (subscribe) 패턴을 구현할 수 있다 옵저버 패턴 사용 예제 공지사항을 알리때를 예제로 공지사항을 전파할때(상태변환) 옵저버와 관련된 객체들(유저들)에게 통지하도록 하는 간단한 예제를 옵저버 패턴으로 만들어보도록 하겠다. Observer.class public class Observer { public..

디자인패턴 2022.10.08

메멘토 패턴(Memento Pattern)

메멘토 패턴이란? 객체의 상태 정보를 저장하고 사용자의 필요에 의하여 원하는 시점의 데이터를 복원 할 수 있는 패턴을 말한다. 구조 Originator : 우리가 저장할 객체이다. 즉 originator의 state를 저장할 것이다 Care Taker : originator의 내부 정보를 Care Taker가 가져와서 저장한다 Memento : 내부정보를 추상화한 클래스. Care Taker는 Originator의 디테일한 정보를 직접적으로 가지는 것이 아니라 memento타입으로 가진다. 예제 코드 만약 게임을 하는데. 게임을 중지시켰다가 다시 실행해도 중지 전까지 스코어는 유지되어야 한다. @Getter @Setter public class Game { private int redTeamScore; ..

디자인패턴 2022.10.08

커맨드 패턴 (Command Pattern)

커맨드 패턴 이란? Client가 보낸 요청을 객체로 캡슐화하여 이를 나중에 이용할 수 있도록 필요한 정보를 저장, 로깅, 취소할 수 있게 하는 패턴 요청을 캡슐화 하여 호출자(invoker)와 수신자(reveiver)를 분리하는 패턴이다. - 요청을 처리하는 방법이 바뀌더라도, 호출자의 코드는 변경되지 않는다 구성요소 1. 수신자(Receiver) : 행동을 담당하는 객체 -> 기능을 수행 2. 커맨드(Command) : 수신자의 정보 + 행동이 들어있는 객체 3. 호출자(invoker) : 커맨드를 저장하는 객체 -> 버튼이 어떤 수행을 할 것인지 결정 4. 클라이언트(Client) : 커맨드 객체를 생성하고, 호출자를 통해 수신자에게 할 행동을 결정 예제 코드 1.Button, MyApp 호출자 (..

디자인패턴 2022.10.08