일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- dirty check
- ManyToOne
- SpringBoot
- chroot exit code
- Design Pattern
- 영속화
- 종료코드
- openjdk
- Multi Transaction
- SpringBoot 2.0
- 트랜잭션 쓰기 지연
- K8s
- MaxRAMPercentage
- 디자인 패턴
- OneToOne
- Multi Datasource
- Entity
- 다중 데이타소스
- JPA
- Java
- JDK
- mybatis
- OracleJDK
- docker
- OneToMany
- 활성프로브
- 변경 감지
- 다중 트랜잭션
- ManyToMany
- exit code
- Today
- Total
목록개발 (21)
조금 평범한 개발 이야기
자바 8 함수형 프로그래밍 자바가 8로 접어 들면서 가장 크게 변화된 것은 함수형 개발 페러다임을 지원하기 시작 했다는 점 입니다. 하지만 기본적으로 자바라는 언어는 객체지향 언어 입니다. 그렇기 때문에 함수형으로 개발 하기 위해서는 어떤 점이 변경 되었고 또한 어떻게 적용할 수 있는지를 알아야 합니다. 생각해 보면 굳이 객체지향으로 설계된 자바라는 언어에 함수형 개발 방식을 접목 시켜야 될 이유가 뭐가 있을까요? 자바는 함수형 개발 방식을 사용할 수 있게 됨으로서 조금 더 재사용이 가능한 코드 조각을 만들 수 있게 되었고 이 때문에 조금 더 유연한 개발을 할 수 있는 가능성이 늘어 났습니다. 함수형 VS 객체지향 함수형 개발 방식과 객체지향 개발 방식을 비교할때 큰 차이는 값을 취급하는 단위가 어디까지..
사용기술 java 11 Spring Boot 2.1.6.RELEASE maven 개요 이제 다양한 프로젝트에서 모듈간 통신을 하는 방법으로 Rest API 를 사용하는 것은 당연한 일이 되었고 이렇게 만들어 놓은 Rest API 명세를 작성하고 관리 하는 것 역시 중요한 일이 되었습니다. 하지만 항상 요구 사항은 변경되기 마련이고 이에 따라 언제든 Rest API 가 변경될 가능성이 높아졌지만 작성해둔 Rest API 의 명세서가 최신 내용을 반영하고 있다고 확신하기는 어렵습니다. 손으로 문서를 변경하는 것은 한계가 있기 때문입니다. Spring 에서 Rest API 의 명세서를 작성하는 방식은 크게 Swagger 과 RestDocs 로 나뉘어 지는데 이중 TDD 개발 방식과 접목하여 소스 코드에 영향을..
앞서 OpenJDK를 사용하는 이유와 방법에 대해 이야기했었다. https://jogeum.net/14?category=795151 OSX 환경에서 OpenJDK 12 설치하기 일반적으로 java 로 개발된 프로그램을 실행 시키거나 관련된 개발 작업을 하기 위해 JDK (Java Development Kit) 를 설치해야 한다. JDK 에는 크게 2011 년에 Sun 사를 인수한 Oracle 이 개발하고 발전시키는 Ora.. jogeum.net 이때 설치되는 OpenJDK는 12 버전인데 문제는 아직도 여러 라이브러리와 프로그램이 JDK 8 기준으로 동작이 된다는 점이다. 그렇기 때문에 환경에 맞춰 로컬의 JDK 버전을 변경하면서 사용을 해야 되는데 이것을 위해 jenv를 설치해 JDK 버전을 유동적으로..
일반적으로 java 로 개발된 프로그램을 실행 시키거나 관련된 개발 작업을 하기 위해 JDK (Java Development Kit) 를 설치해야 한다. JDK 에는 크게 2011 년에 Sun 사를 인수한 Oracle 이 개발하고 발전시키는 OracleJDK 와 오픈소스인 OpenJDK 가 있다. 하지만 영원히 무료로 제공될 줄 알았던 OracleJDK 의 라이센스가 변경이 되었는데 일반적인 목적의 컴퓨팅 에만 사용시 무료이며 일반적이지 않은 목적의 사용에는 과금을 하겠다고 하였다. 하지만 그럼 어떤게 일반적이지 않은 목적인지에 대해서 명확하게 이야기 하지 않은 라이센스의 애매한 표현 때문에 대부분의 상업적인 목적을 가진 업체는 다 OpenJDK 로 전환하는 추세이다. OracleJDK 와 OpenJDK..
앞서 JPA 관련된 이야기를 할때 JPA 와 Mybatis 를 비교하면서 서로의 장점과 단점에 대한 이야기를 나눈 적이 있습니다. 그때 JPA 를 사용함으로써 얻는 가장 큰 이점은 드러나지 않아 파악하기 어려운 Query 구문이 로직상으로 도출이 됨으로 인해 향후 유지보수가 용이해지며 테스트를 쉽게 할 수 있는 유연한 구조를 얻을 수 있다는 점 이였지만 복잡한 데이타를 집계 한다거나 여러 Entity 간의 관계를 통한 결과를 도출하려고 하는 용도로는 적합하지 않으며 결국은 Query 를 사용해 데이타를 가지고 올 수 밖에는 없는데 이를 위해 Mybatis 와 JPA 가 같이 사용해야 된다는 점을 이야기 드렸습니다.이번 글에는 이전 JPA 가 설정된 동일한 소스 코드에 어떻게 MyBatis 를 사용 하는지..
Entity 에 있는 데이타를 조회하거나 저장과 변경 그리고 삭제를 할때 Spring JPA 에서 제공하는 Repository 라는 인터페이스를 정의해 해당 Entity 의 데이타를 사용 할 수 있습니다. Repository 는 내부적으로 EntityManager 가 직접 대상 Entity의 데이타를 관리하고 있기 때문에 굳이 Repository 인터페이스를 정의하지 않고도 직접 EntityManager 를 사용해 Persistance Layer 를 구현 할 수도 있지만 Spring JPA 에서 Repository 의 내부 구현체를 자동으로 생성시켜 주기 때문에 별도의 구현체를 따로 생성하지 않아도 됩니다. Repository 는 대게 Entity 와 1:1 로 매칭된다고 볼 수도 있으나 꼭 그런것은 아..
데이타베이스에서 테이블간의 관계를 구성하는 방법은 OneToOne, OneToMany, ManyToOne, ManyToMany 가 있습니다. 테이블간의 관계에서는 단방향과 양방향에 대한 구분이 없지만 JPA 상에서는 사용하는 Entity 에 따른 차이가 존재합니다. 단방향은 FK (Foreign Key) 를 소유한 Entity 에서 대상 Entity 를 참조하는 방식이며 양방향은 FK 를 소유한 Entity 와 대상 Entity 에서 서로가 서로를 참조할 수 있는 방식입니다.양방향 관계를 지정할때 유의해야 할 점은 서로의 Entity 데이타에 대해 동일한 사용 권한을 가지기 때문에 의도치 않은 데이타의 오염이 일어 날 수 있다는 점 입니다. Entity 의 값이 변경 되었는데 이게 누구에 의한 데이타의 ..
데이타베이스의 관계 앞서 관계형 데이타베이스의 데이타를 객체로 표현해 관리하는 것이 orm 의 기본 방향이라고 이야기 드렸습니다. 하지만 객체로 표현하기 어려운 데이타간의 관계를 위해 jpa 에서 기능을 제공하고 있는데 크게 단방향과 양방향의 관계로 나뉘어 집니다. 단방향과 양방향을 구분짓는 차이는 데이타를 사용하는 관점에서 누가 주도권을 가지는 것인가에 대한 차이이며 둘다 동일한 데이타베이스 테이블간의 관계를 의미합니다. 이글에서는 단방향에 대해서 먼저 다루겠습니다.데이타베이스에서 사용하는 관계는 OneToOne(1:1), OneToMany(1:n), ManyToOne(n:1), ManyToMany(n:m) 가 있습니다. 이중 ManyToMany(n:m) 는 데이타베이스에서 물리적으로 지원하진 않지만 ..