반응형

분류 전체보기 20

Spring AOP 코드로 보는 AOP의 개념

AOP란?AOP(Aspect Oriented Programming), 관점지향 프로그래밍은 어떠한 로직을 기준으로 핵심 관심사와 부가적인 관심사를 나누어서 해당 관점을 기준으로 모듈화하는 프로그래밍 패러다임입니다.이렇게 말하면 처음에는 무슨말인지 싶었다. 그래서 자세히 예를 들어 정리해보겠습니다.아래와 같이 서비스가 존재합니다. 위와 같이 계좌이체, 대출승인, 이자계산이라는 핵심 기능이 존재하고 해당 핵심 기능마다 공통적으로 작동해야하는 부가기능이 존재합니다. 로깅, 보안, 트랜잭션이 그러한 기능들입니다. 그렇다면 이러한 부가기능을 어떻게 판별할것이냐? 그러기 위해서 다음과 같은 개념을 알고 있어야합니다.JoinPoint조인포인트는 타킷의 코드가 실행할때 나타날수 있는 여러시점으로써 포인트컷으로 지정될수..

Web 2024.06.10

JPA의 영속성 컨텍스트란 무엇인가?

영속성 컨텍스트(persistence context)영속성 컨텍스트란 엔티티를 영구 저장하는 환경이라는 의미입니다.엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 저장합니다.영속성 컨텍스트는 엔티티 매니저를 생성할때 만들어지면 엔티티 매니저를 통해 영속성 컨텍스트에 접근, 관리 할수 있습니다.엔티티의 생명주기 (Life Cycle of Entity)비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태영속(managed) : 영속성 컨텍스트에 저장된 상태준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태삭제(removed) : 삭제된 상태비영속엔티티 객체를 생성한 상태로 순수한 객체 상태이므로 영속성 컨텍스트나 데..

Java 2024.05.16

Java String Constant Pool

String a = "Hello World";String b = new String("Hello World");String c = "Hello World"; 본 내용으로 들어가기 전에 위 코드를 보자.여기서 a,b 각 문자열 선언 방식의 차이는 무엇일까?또한 a,b는 같은 객체일까? 아닐까?위 질문에 나는 a,b 객체 선언의 차이 그리고 a,c가 같은 객체인지 아닌지 확답을 하지 못하였다.아래 내용을 읽으면 알겠지만 위 질문에 대한 대답은 a,c는 문자열 리터럴 선언, b는 new 연산자를 이용한 문자열 인스턴스 선언이다.그리고 a,c는 같은 문자열 리터럴을 가지고 있기 때문에 메모리 내에서 한번만 선언되고 이를 공유 하기 때문에 같은 객체라고 이야기 할수 있다.String Constant PoolJav..

Java 2024.05.16

JPA Persistence.xml 설정

persistence.xml 설정JPA는 persistence.xml을 사용하여 필요한 설정 정보를 관리합니다.이 설정파일이 META-INF/persistence.xml 클래스 패스 경로에 있으면 별도의 설정없이 JPA가 인식할수 있습니다.  hellojpa.Member   설정파일은 persistence로 시작합니다 . 이곳에 XML 네임스페이스와 사용할 버전을 지정합니다.  JPA 설정은 영속성 유닛(persistence-unit)이라는것부터 시작하는데 일반적으로 연결할 데이터베이스당 하나의 영속성 유닛을 등록한다.영속성 유닛에는 고유한 이름을 부여해야합니다 여기서는 jpabook이라는 이름을 사용했습니다.JPA 표준 속성javax.persistenc..

Java 2024.05.15

데이터베이스 독립성 레벨(Isolation Levels)

독립성 레벨(Isolation Levels)?주어진 트랜젝션이 병행수행되는 트랜젝션들의 부분으로 허용될수 있는 간섭의 정도(degree of interface)로 설명할수 있습니다.직렬성을 보장하는 Serializable 레벨을 포함하여 아래의 종류들이 존재합니다.Read UncommittedRead CommittedRepeatable ReadSerializable1. Serializable트랜젝션의 직렬성을 보장하는 단계로써 트랜젝션이 완료될때까지 해당되는 모든 데이터의 대한 수정 및 입력이 불가능합니다.2.Repeatable Read트랜젝션이 완료될때까지 해당되는 모든 데이터의 대한 수정이 불가능합니다. 하지만 이 단계에서부터는 phantom read 현상이 발생됩니다.3.Read Commited많은..

Database 2024.05.15

JPA(Java Persistence API)란?

JPA?Java Persistence API자바 진영의 ORM 표준 ORM?Object-relational mapping(객체 관계 매핑)객체는 객체대로 설계관계형 데이터 베이스는 관계형 데이터베이스대로 설계ORM 프레임워크가 중간에서 객체와 테이블을 매핑하여 패러다임의 불일치를 해결합니다.대중적인 언어에는 대부분 ORM 기술이 존재 패러다임의 불일치 객체지향 프로그래밍은 추상화, 캡슐화,상속성,다형성 등의 시스템의 복잡성을 제어 할수 있는 다양한 장치들을 제공합니다.관계형 데이터베이스는 데이터 중심으로 구조화, 집합적인 사고가 필요하며 객체지향 프로그래밍에서 제공하는 추상화, 상속성등의 개념이 존재하지 않습니다.그래서 패러다임의 차이 즉 패러다임 불일치 문제가 발생합니다.이를 해결하기위해서 개발자는 복..

Java 2024.05.15

멀티모듈 설계

현재 최근 프로젝트는 단일 프로젝트로 구성되는일이 없으며 일정수준의 트래픽을 감당하기 위해서는 사용자와의 매핑을 담당하는 서버, DB와의 매핑되는서버등 으로 구성되게 됩니다.그리하여 이번에 프로젝트를 진행할때 단일 프로젝트로 진행하지 않고 서비스를 분리하되 각각의 서비스에 최소한 의존성을 가질수 있는 방법을 보다가 멀티 모듈 관련 내용이 있는 블로그를 보게 되었습니다.위의 블로그등의 보며 공부하였던 내용인 멀티 모듈의 개념과 장점 그리고 제가 진행하였던 방식을 정리해 보겠습니다.멀티 모듈 프로젝트?멀티 모듈 프로젝트라고 처음들었을때 하나의 프로젝트를 여러개의 모듈로 쪼개놓은 프로젝트라고 생각했습니다.멀티모듈 프로젝트는 공통으로 사용하는 코드를 모아놓고 모듈로써 개발을 진행하는 형태입니다.멀티 모듈 프로젝..

개발 이야기 2024.05.15

싸피 1차 공통 프로젝트를 마무리하며…

삼성 청년 SW 아카데미에서 1월초부터 시작한 공통 프로젝트가 마무리 되고 회고를 해볼려고 한다. 진행 기간 : 2023.01.03 ~ 2023.02.17(6주) 공통 프로젝트는 싸피에서 공통으로 몇가지 주제를 주고 그중 원하는 주제를 선택하여 프로젝트를 진행하는 식인데 우리 팀이 선택한 주제는 웹기술였고, 해당 주제는 WEB RTC 기술을 사용하여, 웹사이트를 구축하는 것이였다.총 6주간의 기간동안 기획 2주, 개발 3주, 취합 및 산출물 정리 1주로 진행하였다.기획 단계1주차에는 처음 만난 팀원들과 얼굴을 익히는 시간과 아이디어 회의 등이 이루어졌다.팀원들과 WEB RTC 기술을 사용하여 어떤 프로젝트를 진행할까라는 아이디어 회의가 이루어졌고 라이브 경매 플랫폼, 라이브 커머스 플랫폼, 유기동물 분양..

개발 이야기 2024.05.15

Concurrent Collection의 정의와 종류

Concurrent Collection에 대해 정리가 필요할거같아 작성하였습니다.Concurrent Collection이란?Concurrent Collectioin은 Java5때 Thread Pool과 같이 도입된 Collection이며 다중 스레드 환경에서 발생할 수 있는 경합 조건 및 동기화 문제를 해결하기 위해 설계되었으며, java.util.concurrent 패키지 내에 포함되어 있습니다.Concurrent Collection의 종류Concurrent Collection의 종류는 대략적으로 다음과 같습니다.CopyOnWriteArrayListConcurrentHashMapConcurrentLinkedQueueLinkedBlockingQueueLinkedBlockingDequeConcurrentS..

Java 2024.05.15

Java Stream(스트림) (4) 단말 연산

단말연산은 처리한 스트림을 결과로 만들어주는 연산으로써 아래와 같은 종류들이 있습니다.forEach()forEach 작업은 해당 스트림을 순회합니다.하지만 forEach 메소드는 병렬 스트림을 사용하였을때 순서를 보장할수 없기 때문에 순서대로 순회하려면 forEachOrdered 메소드를 사용해야합니다. 예제 코드Stream stream = Stream.of("apple","banana","cat","dog");stream.forEach(System.out::println);collect()collect 연산은 인수로 전달되는 Collectors 객체에 구현된 방법대로 스트림의 요소를 수집합니다.Collectors 클래스에 여러방법이 클래스메소드로 정의되어 있어 원하는 방식에 따라 사용이 가능합니다.그외..

Java 2024.05.15
반응형