일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- map
- IntelliJ
- ORM
- builder-pattern
- Kubernetes
- docker
- Di
- Vue
- k8s
- CI
- 코딩테스트연습
- JPA
- programmers
- 자바
- DevOps
- Spring
- 뷰
- 알고리즘
- 해시맵
- dabase
- Oracle
- hibernate
- vuejs
- java
- CKA
- SpringMVC
- cd
- CI/CD
- superBuilder
- Today
- Total
목록java (26)
문홍의 공부장
빌더 패턴은 객체를 생성할 때 사용하는 패턴으로, 메서드 체이닝 방식으로 객체를 생성하여 코드의 가독성 및 유지보수성을 높이기 위해 흔히 사용된다. 이번 프로젝트에서 빌더 패턴을 자주 사용하면서, 그 내용을 간단히 정리해 보자 한다. 객체를 생성하는 방법 1. Constructor 생성자 함수를 이용하여 객체를 생성한다. 필수 인자를 받는 필수 생성자와, 선택적 인자를 받는 생성자를 점층적으로 추가한다 모든 선택적 인자를 받는 생성자를 추가한다 생성자 함수를 이용하면, 선택적 인자를 받아 객체를 생성하여야 하는 케이스가 많을 경우, 각기 다른 생성자를 호출하여야 한다. 인자 수가 많아질수록 그 의미를 파악하기 어려워지며, 코드의 가독성이 떨어진다. 또한, 인자가 추가될 경우 코드를 수정하기 어려워진다. ..
JPA 영속성 컨텍스트 영속성: 프로그램이 종료되어도 사라지지 않는 데이터의 특성. 영속성 컨텍스트: 엔티티를 영구 저장하는 환경. 개념 애플리케이션과 데이터베이스 사이에서, 객체를 보관하는 논리적 개념 (가상의 DB 역할) 영속성 컨텍스트는 직접 접근이 불가하며, 엔티티 매니저EntityManager 를 통해서 접근 가능하다. EntityManager를 통해 엔티티를 저장/조회 시, 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. (em.persist()) 트랜잭션을 커밋하는 시점에 영속성 컨텍스트의 내용이 테이블에 반영된다. (em.flush()) 엔티티의 생명주기 비영속(new/transient) 엔티티를 생성했지만 아직 영속성 컨텍스트에 저장하지 않은 상태 영속(managed) 엔티..
JPA 개념 정리 what is JPA(Java Persistence API) ? 자바 ORM 기술에 대한 API 표준 명세. (ORM을 사용하기 위한 인터페이스의 모음) JPA는 API의 규격일 뿐. (라이브러리나 프레임워크가 아님) Hibernate, OpenJPA 등이 JPA를 구현한 구현체(ORM 프레임워크)이다. what is ORM (Object-Relational Mapping) ? 객체가 DB 테이블이 되도록 매핑시켜주는 프레임워크. 객체 간의 관계를 바탕으로 SQL 을 자동으로 생성 프로그램의 복잡도를 줄이고, 자바 객체와 쿼리를 분리할 수 있으며, 트랜잭션 처리나 기타 데이터베이스 관련 작업들을 편리하게 처리할 수 있는 방법. SQL Mapper ORM 자바 클래스와 sql을 매핑 자바..
Division by Zero in Java: Exception, Infinity, or Not a Number 제수의 자료형이 Integer 일 때, divide by zero - ArithmeticException 을 발생시킨다. // throws ArithmeticException assertThrows(ArithmeticException.class, () -> { int result = 12 / 0; }); 제수의 자료형이 float/dobule 일 때, exception 을 발생시키지 않으며 infinity/NaN 으로 리턴한다. // exceptions 을 던지지 않으며, return NaN, POSITIVE_INFINITY, and NEGATIVE_INFINITY. assertDoesNotT..
Java Object 를 Map 으로 변경하기 (ObjectMapper) Jackson databind 라이브러리를 사용하여 객체를 Map 타입으로 변환할 수 있다. pom.xml 에 디펜던시 추가 com.fasterxml.jackson.core jackson-databind 2.11.0 클래스 생성 @Data public class Person { private int age; private String name; public Person() {} public Person(int age, String name) { this.age = age; this.name = name; } @Override public String toString() { return "Person {" + "age=" + age ..
Java Stream 활용하기 Java stream ? 배열/컬렉션을 함수형으로 처리 가능 간단한 병렬처리 가능(하나의 작업을 둘 이상으로 쪼개어 동시 진행) 자바 스트림을 사용하여 배열/인스턴스에 여러 함수를 조합하여 원하는 결과를 필터링하고, 가공된 결과를 얻을 수 있으며, 람다식을 사용하여 코드의 가독성을 높이고 간결하게 표현할 수 있다. 생성하기 배열 / 컬렉션 / 빈 스트림 Stream.builder() / Stream.generate() / Stream.iterate() 기본 타입형 / String / 파일 스트림 병렬 스트림 / 스트림 연결하기 가공하기 Filtering Mapping Sorting Iterating 결과 만들기 Calculating Reduction Collecting Ma..
많은 사이트에서 회원가입 시 이메일 인증을 요구하고 있다. 이메일로 인증번호를 발송하여 해당 인증번호를 입력하게 하는 경우도 있지만, 회원가입 시 인증 메일을 보내, 해당 메일에서 링크를 클릭하여 인증 및 회원가입을 완료하는 경우도 있다. 이전 팀 프로젝트에서 전자의 방법으로 이메일 인증을 구현해 보았으니, 이번 개인 프로젝트에서는 후자의 방법으로 구현하고, 그 내용을 정리해보려고 한다. 큰 틀을 동일하나, 인증키, 인증상태의 DB 저장 여부에 따라 약간의 차이가 있다. 인증상태를 어디에서 관리하느냐(프론트/백) 에 따라 DB 저장 여부가 결정된다고 볼 수 있다. (3-1 방법으로 했을 때에는 인증에 관한 데이터는 DB에 저장하지 않고, 유효성 검사를 통해 걸러냈다.) 1. 메일 인증 관련 라이브러리 다..
공통점 추상클래스와 인터페이스는 선언부만 있고 구현 내용이 없는 클래스이다. 자기 자신이 직접 객체를 생성할 수 없으며, 자식 클래스가 추상클래스를 상속(extends)받거나, 인터페이스를 구현(implements)하여 객체를 생성할 수 있다. 선언된 type과 자식의 type이 같아야만 한다. 차이점 추상클래스(Abstract Class) 추상 메소드를 하나라도 가지고 있는 클래스라고 정의하는 경우가 있는데, 명확하게 말하자면 이는 틀린 말이다. 추상클래스는 추상 메소드가 없어도 무방하다. 하지만, 추상메소드를 하나라도 가지고 있는 클래스는 무조건 추상클래스여야 한다. 추상클래스는 non-static과 non-final 필드 및 public, protected, private 메소드를 사용할 수 있다...