전체 글
-
Entity에 JPA Auditing 적용해서 중복코드 줄이기Project 2023. 6. 27. 17:12
현재 대부분의 Entity 마다 registerAt, updatedAt, deletedAt 컬럼이 중복으로 선언되어 있는 상태이다. class Member{ //생략 @Column(name = "register_at") private Timestamp registeredAt; @Column(name = "updated_at") private Timestamp updatedAt; @Column(name = "deleted_at") private Timestamp deletedAt; @PrePersist void registeredAt() { this.registeredAt = Timestamp.from(Instant.now()); } @PreUpdate void updatedAt() { this.updat..
-
인터페이스로 추상화하기 | 전략패턴Java 2023. 5. 17. 06:38
# 인터페이스로 추상화하기 csv파일을 읽어 파싱 후 List에 담아 반환하는 코드를 아래와 같이 작성했다. public class ReadFileEx { public List getLines(String fileName) throws IOException { List lines = new LinkedList(); BufferedReader br = Files.newBufferedReader(Paths.get(fileName), StandardCharsets.UTF_8); String line; while ((line = br.readLine()) != null) { lines.add(line); } return lines; } public Hospital parse(String str) { String..
-
컬렉션에 저장된 객체 정렬하기 |컬렉션에 저장된 객체 비교하기 | Comparable vs Comparator | hashcode와 equals | 동일성과 동등성Java 2023. 5. 12. 15:02
# 컬렉션에 저장된 객체를 정렬할 때 컬렉션에는 참조타입, Wrapper class, 객체(Object)등을 저장할 수 있다. 그리고 저장된 데이터를 정렬할 때는 Collections.sort() 메소드를 사용한다. 컬렉션에 저장된 타입이 참조타입이라면 sort 메소드를 바로 사용할 수 있다. 이미 참조타입의 클래스에서 비교 인터페이스를 구현하고 있기 때문이다. ex) String을 저장하고 있는 list 알파벳 순으로 정렬하기 List list = new ArrayList(); list.add("banana"); list.add("apple"); list.add("orange"); Collections.sort(list); 하지만 저장하고 있는 타입이 객체라면, 반드시 비교 관련 인터페이스를 상속받..
-
spring boot 프로젝트에서 profile 분리하기 (local, prod, common 환경을 분리해서 구성하기)Project 2023. 4. 8. 20:41
문제상황: application.yml을 prod, dev(local) 환경으로 아래와 같이 구성하려고 했으나 계속 datasource url을 찾지 못하는 에러가 발생했다. - 로컬 환경 실행시 뜨는 에러는 아래와 같았다. Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured datasource에 있는 url은 정상적인 경로로 작성되어 있었기 때문에 active profile을 찾지 못하는 상황으로 생각했다 내가 작성했던 내용: 의도한 application.yml 구성은 다음과 같이 application.yml 2개를 생성하고 로컬환경 실행 시 dev 파..
-
트랜잭션 | ACID | 격리레벨 | mySQL 구현기술Database 2023. 1. 22. 18:37
# 트랜잭션의 사전적인 의미와 목적 트랜잭션(Transaction)이 무엇인지 구글링해보면 다음과 같다. 데이터베이스 트랜잭션(Database Transaction)은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 다른 시스템에서는 논리적 작업 단위라 불리기도 한다. 여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다. 흔히 금융거래에 비유되곤 하는데, 송금을 할 때 한 계좌에서 인출되면 다른 계좌에서 해당 금액의 입금이 확인되는 것이 중요하다. 해당 작업을 위해서는 데이터베이스에서 읽고 쓰는 여러 단일 작업들이 수행되어야 한다. 하지만 두 작업은 데이터 정합성을 보장하기 위해 하나의 작업단위로 실행되어야 한다. 간..