본문 바로가기

백엔드/Spring131

[JPA] Optional Optional Optional은 Java8 부터 도입된 클래스로 null이 아닌 값을 포함하거나 포함하지 않을 수 있는 컨테이너 객체이다. Spring Data JPA 사용 시 Repository에서 리턴 타입을 Optional로 받을 수 있도록 지원하고 Optional을 사용하면 반복적인 Null 체크 를 줄일 수 있기 때문에 잘 사용하면 편리하고 좋다. Mybatis를 쓰거나 Java8버전 이하로 개발하면 익숙하지 않을 수 있다. @Override @Transactional public Sample updateSample(Long sampleId) { Optional sample = sampleRepository.findById(sampleId); if(!sample.isPresent()) { th.. 2022. 9. 14.
[JPA] @Embedded, @Embeddable 임베디드 타입(Embedded type) JPA에서 새로운 값 타입을 직접 정의해서 사용하는 것을 임베디드 타입이라고 한다. 임베디드 타입도 int, String 처럼 값 타입이다. 임베디드를 사용하지 않았을 때 @Entity public class User { @Id @GeneratedValue private Integer id; private String name; private String phone; // address private String city; private String country; private String zipcode; // standard getters, setters } User가 상세한 데이터(주소)를 그대로 가지고 있는 것은 객체지향적이지 않으면 응집력만 떨어진다. 임.. 2022. 9. 14.
[JPA] 최범균님 <JPA 기초> 내용 정리하기 최범균님의 유튜브 강의를 들으면서 마지막에 나오는 정리 부분을 텍스트로 정리해 보았다. 강의 내용 참고나 키워드를 보면서 공부를 진행하면 좋을 것 같다. https://www.youtube.com/playlist?list=PLwouWTPuIjUi9Sih9mEci4Rqhz1VqiQXX 기본 구조 EntityManagerFactory 초기화 DB 작업이 필요할 때마다 EntityManager 생성 EntityManager로 DB조작 EntityTransaction으로 트랜잭션 관리 스프링과 연동할 때는 대부분 스프링이 대신 처리하므로 매핑 설정 중심으로 작엄 영속 컨택스트 엔티티를 메모리에 보관 변경을 추적해서 트랜잭션 커밋 시점에 DB에 반영 JPA CRUD EntityManager 를 사용해서 엔티티 단.. 2022. 9. 7.
[java] BigDecimal 사칙연산(더하기, 빼기, 나누기, 곱하기), 비교(compareTo) BigDecimal 을 사용할 때는 BigDecimal 은 우리가 흔히 사용하는 기호(+, -)로 사칙연산을 할 수 없다. 사칙연산 사칙연산을 할 때는 add, subtract, multiply, divide 함수를 활용해 계산한다. BigDecimal number1 = new BigDecimal("250.125"); BigDecimal number2 = new BigDecimal("150.352"); System.out.println("더하기 : " + number1.add(number2)); System.out.println("빼기 : " + number1.subtract(number2)); System.out.println("곱하기 : " + number1.multiply(number2)); 나누기.. 2022. 5. 16.
[java] BigDecimal error : Non-terminating decimal expansion; no exact representable decimal result. java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result 아무리 BigDecimal이라고 해도 제한없는 숫자를 다룰 수는 없는 것이다. divide시 자리수와 결과셋을 지정해줘야 한다. bigDecimal.divide(bd, 2, BigDecimal.ROUND_CEILING); 2022. 5. 15.
Connection Factory Connection Factory Connection Factory란 Connection 을 얻어오는 부분을 따로 클래스로 만들어 사용하는 것이다. 데이터 베이스에 접속하기 위해서는 Connection 을 생성해야 한다. 자주 데이터베이스에 접속하다보면 접속하는 데이터베이스가 다르고, 접속하는 사람이 다르기 때문에 접속할 때마다 새로 코딩을 해주어야 한다. 이러한 불필요함을 줄이고자 Connection Factory 를 사용하는 것이다. 2022. 5. 13.