반응형 JAVA29 [JPA] JPA 영속성 컨텍스트란? 영속성 컨텍스트란? 영속성 컨텐스트란 엔티티를 영구 저장하는 환경이라는 뜻이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. em.persist(member); 엔티티 매니저를 사용해 회원 엔티티를 영속성 컨텍스트에 저장한다는 의미 영속성 컨텍스트의 특징 엔티티 매니저를 생성할 때 하나 만들어진다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다. 엔티티의 생명주기 비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 상태 영속(managed): 영속성 컨텍스트에 저장된 상태 준영속(detached): 영속성 컨.. JAVA 2022. 10. 19. [Spring] 단위 테스트 TDD(Test-driven Development) 테스트 주도 개발에서 사용하지만, 코드의 유지보수 및 운영 환경에서의 에러를 미리 방지하기 위해서 단위 별로 검증하는 테스트 프레임워크 단위테스트 작성한 코드가 기대하는 대로 동작을 하는지 검증하는 절차 JUnit Java기반의 단위 테스트를 위한 프레임워크 Annotation기반으로 테스트를 지원하며, Assert를 통하여, (예상, 실제)를 통해 검증 Jacoco Java코드의 코드 커버리지를 체크하는 라이브러리 결과를 html, xml, csv로 확인이 가능하다. JAVA 2022. 8. 19. [JAVA] URI 설계 패턴 개념정리 URI (Uniform Resource Identifier) 인터넷에서 특정 자원을 나타내는 주소 값. 해당 값은 유일하다. (응답은 달라질 수 있다.) 요청 : https://www.fc.co.kr/resource/sample/1 응답 : fc.pdf, fc.docx URL (Uniform Resource Locator) 인터넷 상에서의 자원, 특정 파일이 어디에 위치하는지 식별하는 주소 요청 : https://www.fc.co.kr/fc.pdf URL은 URI의 하위 개념입니다. URI 설계 원칙 (RFC-3986) 슬래시 구분자(/)는 계층관계를 나타내는데 사용한다. https://fc.co.kr/classes/java/curriculums/web-master URI 마지막 문자로 (/)는.. JAVA 2022. 8. 5. [JAVA] REST API REST (Representational State Transfer : 자원의 상태 전달) - 네트워크 아키텍쳐 Clint, Server : 클라이언트와 서버가 서로 독립적으로 분리되어 있어야 한다. Stateless : 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않는다. Cache : 클라이언트는 서버의 응답을 Cache (임시저장) 할 수 있어야 한다. 계층화 (Layered System) : 서버와 클라이언트 사이에 방화벽, 게이트웨이, Proxy 등 다양한 계층 형태로 구성이 가능해야 하며, 이를 확장 할 수 있어야 한다. 인터페이스 일관성 : 인터페이스의 일관성을 지키고, 아키텍처를 단순화시켜 작은 단위로 분리하여, 클라이언트, 서버가 독립적으로 개선 될 수 있어야 한다. Code on .. JAVA 2022. 8. 4. [JAVA] 디자인 패턴 - Strategy Strategy Pattern 전략 패턴으로 불리며, 객체지향의 꽃이다. 유사한 행위들을 캡슐화하여, 객체의 행위를 바꾸고 싶은 경우 직접 변경하는 것이 아닌 전략만 변경하여, 유연하게 확장하는 패턴 SOLID중에서는 개방폐쇄 원칙(OCP)와 의존 역전 원칙(DIP)를 따른다. 전략 메서드를 가진 객체(Normal Strategy, Base64 Strategy) 전략 객체를 사용한 컨텍스트(Encoder) 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트 EncodingStrategy.java public interface EncodingStrategy { String encode(String text); } NormalStrategy.java public class NormalStrategy imple.. JAVA 2022. 8. 4. [JAVA] 디자인 패턴 - Facade Facade Pattern 여러 개의 객체와 실제 사용하는 서브 객체의 사이에 복잡한 의존관계가 있을 때 중간에 Facade 라는 객체를 두고, 여기서 제공하는 인터페이스만을 활용하여 기능을 사용하는 방식이다. 파사드는 자신이 가지고 있는 각 클래스의 기능을 명확히 알아야 한다. Ftp.java public class Ftp { private String host; private int port; private String path; public Ftp(String host, int port, String path) { this.host = host; this.port = port; this.path = path; } public void connect() { System.out.println("FTP .. JAVA 2022. 8. 4. [Java] 디자인 패턴 - Observer Observer Pattern 변화가 일어났을때, 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것이다. event Listener에서 해당 패턴을 사용한다. IButtonListener.java public interface IButtonListener { void clickEvent(String event); } Button.java public class Button { private String name; private IButtonListener buttonListener; public Button(String name) { this.name = name; } public void click(String message) { buttonListener.clickEvent(message); }.. JAVA 2022. 8. 3. [JAVA] 디자인 패턴 - Decorator Decorator Pattern 기존 뼈대(클래스)는 유지하되, 이후 필요한 형태로 꾸밀 때 사용한다. 확장이 필요한 경우 상속의 대안으로 활용한다. SOLID중에서 개방폐쇄 원칙(OCP)와 의존 역전 원칙(DIP)를 따른다. ICar.java public interface ICar { int getPrice(); void showPrice(); } Audi.java public class Audi implements ICar { private int price; public Audi(int price) { this.price = price; } @Override public int getPrice() { return price; } @Override public void showPrice() { Sys.. JAVA 2022. 8. 3. [JAVA] 디자인 패턴 - Proxy Proxy Pattern 대리인 이라는 뜻으로, 뭔가를 대신해서 처리하는 것이다. Proxy Class를 통해서 대신 전달하는 형태로 설계되며, 실제 Client는 Proxy로 부터 결과를 받는다. Cache의 기능으로도 활용이 가능하다. SOLID중에서 개방폐쇄 원칙(OCP)과 의존 역전 원칙(DIP)를 따른다. Html.java public class Html { private String url; public Html(String url) { this.url = url; } } IBrowser.java public interface IBrowser { Html show(); } Browser.java public class Browser implements IBrowser { private Stri.. JAVA 2022. 8. 3. [JAVA] 디자인 패턴 - Singleton, Adapter 생성 패턴 객체를 성성하는 것과 관련된 패턴 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화 하고, 코드의 유연성을 높여준다. Factory Method Singleton Prototype Builder Abstract Factory Chaining 구조패턴 프로그램 내의 자료구조나 인터페이스 구조 등 프로그램 구조를 설계하는데 활용 될 수 있는 패턴 클래스, 객체들의 구성을 통해서 더 큰 구조를 만들 수 있게 해준다. 큰 규모의 시스템에서는 많은 클래스들이 서로 의존성을 가지게 되는데. 이런 복잡한 구조를 개발 하기 쉽게 만들어주고, 유지보수하기 쉽게 만들어 준다. Adapter Composite Bridge Decorator Facade Flyweight Proxy 행위 패턴 반복적으로 사용.. JAVA 2022. 8. 2. [JAVA] 객체지향 설계 5원칙 SOLID 응집도와 결합도 결합도(coupling)는 낮추고, 응집도(cohesion)는 높여야한다. 결합도 모듈(클래스)간의 상호 의존 정도를 나타내는 지표 결합도가 낮으면 모듈간의 상호 의존성이 줄어들어서 객체의 재사용 및 유지보수가 유리하다. 응집도 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성 응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아져, 재사용 및 유지보수가 용이하다. SOLID 원칙 SOLID는 객체지향 4대 특성에 기반함으로써 유사한 모양을 가진다. 단일 책임 원칙(SRP : Single Responsibility Principle) 하나의 기능에 충실하여야한다. 개방 폐쇄 원칙(OCP : Open Closed Principle) 자신의 확장에는 열려있어야하며, 주변의 변화에.. JAVA 2022. 8. 2. [JAVA] Spring Boot 프로젝트 생성 & DevTools 적용 IntelliJ Community 버전에서는 Maven/Gradle 프로젝트를 생성해서 dependency 세팅하고 SpringBootApplication 파일 생성, 등등 작업으로 프로젝트 생성이 가능하지만, 상당히 귀찮은 작업입니다. 스프링 재단에서는 웹상으로 Spring Initializr 기능을 제공하고 있습니다. 페이지에서 클릭 몇 번으로 초기 세팅된 스프링 부트 프로젝트를 생성할 수 있고, 생성된 프로젝트 폴더를 불러오면 Spring Boot 프로젝트 생성이 가능합니다. Spring Initializr에서 프로젝트 생성 스프링 부트 초기 프로젝트 생성 페이지로 이동 https://start.spring.io/ Project Setting Project : Maven / Gradle 중 어떤 빌.. JAVA 2022. 8. 2. 이전 1 2 3 다음 💲 추천 글 반응형