분류 전체보기 269

SAGA 패턴이란?

Before go further 사실 제가 얼마 전에 이직을 하게 되었습니다. 그리고 바로 프로젝트에 투입할 수 있도록 절차를 밟고 있는 중입니다. 해당 프로젝트가 msa로 짜져 있어 관련 공부를 할 겸 다른 블로그들과 인강들을 듣고 있는 중입니다. 그 중 SAGA 패턴에 대해 잘 정리되어 있는 블로그를 발견하여 해당 블로그에서 글을 발췌하여 작성합니다. 출처는 본 글의 하단에 작성해 놓았습니다. SAGA 패턴에 대해 조금 더 상세한 글을 원하신다면 직접 방문해 보시는 것을 추천합니다. 트랜잭션 처리 기존의 Monolithic 환경에서는 DBMS가 기본적으로 제공해주는 트랜잭션 기능을 통해서 데이터 commit이나 rollback을 통해서 일관성있게 관리하였습니다만 Application과 DB가 분산되면..

CS 2022.01.06

[JPA] 양방향 연관관계의 주인

연관관계의 주인 @mappedBy FK를 가지고 있는 테이블 Table User @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "TEAM_ID") private Team team; Team @OneToMany(mappedBy = "team") private List users = new ArrayList(); 1(Team): N(User)의 관계일 경우 jpa 설정을 위와 같이 설정합니다. 연관관계의 주인 User와 Team과 같은 객체에 양방향 연관관계 설정 시 어느 객체의 값을 변경해 주었을 때 실제 DB에 반영을 하느냐를 결정합니다. 위의 경우 User가 연관관계의 주인으로 설정되어 있어 User 객체에서 값을 변경해 주어야 DB에 값이 들어갑니다...

CS 2021.12.22

[JBoss] JBoss-AS, JBoss-EAP, WildFly란?

현재 프로젝트의 개발 서버는 wildfly, 운영 서버는 jBoss를 사용하는 중입니다. 이에 wildfly와 jboss의 차이점에 대해 궁금증이 생겨 검색 및 정리해 보았습니다. 만약 다르거나 잘못된 정보가 기입되어 있다면 언제든지 글을 남겨주시기 바랍니다. 개요 apache-tomcat과 같은 자바를 기반으로 하는 미들웨어의 총칭이며 JBoss에는 기본적으로 Tomcat이 내장되어 있고 EJB나 JMS를 사용한 애플리케이션도 가능합니다. 1999년 Marc Fleury에 의해 jBoss라는 이름의 작은 오픈소스 프로젝트로 시작되었습니다. 2006년 4월에 RedHat에 인수되고 jBoss는 RedHat이 제작하는 모든 미들웨어 제품(jBoss datagrid, jBoss Fuse 등)들에 대한 상표가..

CS 2021.12.17

[Maven] http repositories blocking 해결

maven 3.8.1 버전이 나오면서 http 에 대한 외부 연결을 막는 설정이 default로 변경되었습니다. https://maven.apache.org/docs/3.8.1/release-notes.html 이로 인해 폐쇄망에서 특정 모듈을 nexus에 모아 사용할 경우 생기는 문제를 다뤄 보겠습니다. Problem 프로젝트 배포를 위해 mvn clean package 명령 실행 시 maven이 http uri를 block하기에 내부망에 존재하는 http에 접속할 수 없어 failed to collect dependencies ... [maven-default-http-blocker]... 라는 error 뱉으며 build에 실패하게 됩니다. 이를 해결하기 위해 해당 http repository의 내..

CS 2021.12.17

[JPA] 기본 키 매핑

@Id @GeneratedValue IDENTITY 전략 SEQUENCE 전략 TABLE 전략 방법 직접 할당 : @Id 만 사용 자동 생성 : @GeneratedValue @Id @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private String id; User user = new User(); user.setId("Id_a") user.setUsername("A"); IDENTITY 전략 GenerationType.IDENTITY 기본 키 생성을 데이터 베이스에 위임합니다. MYSQL, PostgreSQL, SQL Server, DB2에서 사용합니다. ex) MySQL의 AUTO_ INCREMENT @Id @GeneratedValue(stra..

CS 2021.12.15

[HTTP] URI와 웹 브라우저 요청 흐름

URI (Uniform Resource Idenfier) Unifor: 리소스를 식별하는 통일한 박식 Resource: 지원, URI로 식별할 수 있는 모든 것(제한 없음) Identifier: 다른 항목과 구분하는데 필요한 정보 URL Locator: 리소스가 있는 위치를 지정 foo :/ /xxx.xxx:8080 /over/there ? name=jason # nose ... scheme / authority / path / query / fragment scheme - 주로 프로토콜 사용. protocol - 어떤 방식으로 자원에 접근할 것인가 하는 약속 및 규칙 ​ ex) http, https, ftp 등 http는 80, https 443 포트를 주로 사용. scheme://[userInfo@]..

CS 2021.12.14

[HTTP] 인터넷 네트워크

IP(인터넷 프로토콜) 지정한 IP 주소(IP Address)에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터 전달 IP 패킷 정보 출발지 ip 목적지 ip 전송 데이터 IP 프로토콜의 한계 비연결성 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 비신뢰성 중간에 패킷이 사라지면 어떻게 될 것인가? 패킷이 순서대로 오지 않으면 어떻게 될 것인가? 프로그램 구분 같은 IP를 사용하는 서버에서 통신하는 어플리케이션이 둘 이상이면 어떻게 구분할 것인가? 위의 문제로 인해 TCP UDP 가 존재합니다 TCP, UDP TCP의 특징 연결지향 - TCP 3 way handshake(가상연결) 데이터 전달 보증(데이터 전송이 잘 되었다고 응답이 옵니다.) 순서 보장(순서가 다를 시 순서가 다른것..

CS 2021.12.13

[JPA] 필드와 컬림매핑

매핑 어노테이션 @Column : 컬럼 매핑 ```@Temporal`` : 날짜 타입 매핑 @Enumerated : Enum 타입 매핑 @Lob : BLOB, CLOB 매핑 @Transient : 특정 필드를 컬럼에 매핑하지 않을 시(매핑 무시) @Enumerated 사용 시 주의할 점 EnumType.ORDINAL: enum 순서를 데이터베이스에 저장 EnumType.STRING: enum 이름을 데이터베이스에 저장 Enum의 기본 설정은 EnumType.ORDINAL 입니다. 위의 설명처럼 ORDINAL은 DB에 순서만 저장되기 때문에 만약 enum에 다른 값을 추가할 경우 ORDINAL의 번호가 변경될 수 있습니다. 따라서 enumType을 ORDINAL이 아닌 STRING으로 설정하여 사용하시면 ..

CS 2021.12.10

[JPA] 엔티티매핑

엔티티매핑 객체와 테이블 매핑: @Entity, @Table 필드와 컬럼 매핑: @Column 기본 키 매핑: @id 연관관계 매핑: @ManyToOne, @JoinColumn @Entity @Entity가 붙은 클래스는 JPA가 관리하는 Entity라 지칭합니다. JPA를 사용하여 테이블과 매핑할 클래스는 @Entity가 필수적으로 붙습니다. 기본생성자 필수 적으로 생성되어야 합니다. final, enum, interface, inner 클래스는 @Entity가 적용되지 않습니다. Table name catalog schema uniqueConstrains(DDL) ... @Entity // @Entity 사용방법 @Table(name = "USER") // @Table(name) 사용방법 public..

CS 2021.12.09

[JPA] 준영속 상태

준영속 상태 EntityManager(영속성 컨텍스트)에 올려져 있는 객체를 내리는 것 더이상 JPA가 관리하지 않겠다는 뜻입니다. Method EntityManager.detach() EntityManager.clear() EntityManager.close() Code EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { User user = em.find(User.class, 1L); user.setName("AAAA"); em..

CS 2021.12.08
728x90
반응형