프로그래밍
-
[Map Struct] Map Struct 사용법프로그래밍/Map Struct 2021. 12. 16. 22:06
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. map struct란 Object Mapping 라이브러리로 특정 객체를 다른 Type의 객체로 변환하는 작업을 해주는 도구 입니다. Java만을 이용하여 객체의 타입 변환 작업을 진행할 수 있습니다. 하지만 Getter, Setter, Builder 등을 이용하여 객체의 타입 변환 작업을 하면 여러 단점들이 존재합니다. 중복되는 코드가 발생한다. 속성명이 변경되어 Setter, Getter 메소드명이 변경된다. 사용하는 모든 곳의 변경이 발생한다. 비즈니스 로직에 불필요한 로직이 추가된다. 오타와 같은 실수가 발생할 수 있다. Map Struct를 이용한다면 이..
-
[Java] 트랜잭션프로그래밍/Java 2021. 11. 13. 00:13
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. 트랜잭션이란 트랜잭션이란 하나의 큰 작업을 수행하기 위해 작은 여러 작업들을 하나의 그룹으로 묶어 처리하는 것을 말합니다. 쉽게 말해 특정 작업을 수행하는 작업 단위를 말합니다. 작은 여러 작업들을 하나의 그룹으로 묶어 처리하는 것을 트랜잭션이라고 하였습니다. 그래서 트랜잭션은 작은 작업들이 모두 성공하거나 하나의 작은 작업이 실패하면 모두 실패하여야 합니다. 수행한 많은 작업들이 모두 성공하면 작업 결과를 저장합니다. 이를 커밋(Commit)이라고 합니다. 수행한 많은 작업들 중 하나가 실패하게 된다면 이전에 성공은 모두 무시하고 작업의 수행 전으로 상태를 모두..
-
[JPA] 예외 처리프로그래밍/JPA 2021. 11. 5. 00:19
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. JPA 표준 예외 JPA의 표준 예외들은 javax.persistence.PersistenceException의 자식 클래스이며 이 예외 클래스의 부모는 모두 RuntimeException이다. 따라서 JPA는 모두 Uncheck Exception이다. 2. JPA의 예외 종류 트랜잭션 롤백을 표시하는 예외 심각한 예외로 복구해서는 안되며 예외가 발생하면 트랜잭션을 강제로 커밋하여도 커밋되지 않고 RollbackException이 발생한다. 예외 설명 javax.persistence.EntityExstsException persist함수 호출 시 이미 같은 엔티티..
-
[JPA] 연관관계의 주인프로그래밍/JPA 2021. 10. 21. 18:08
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. 연관관계의 주인 이전 글에서 (회원 -> 팀) 단방향 매핑에서 (회원 -> 팀, 팀 -> 회원) 양방향 매핑을 위해 팀 엔티티의 MemberList에 OneToMany 어노테이션과 mappedBy 속성이 추가하였습니다. 양방향 연관관계는 DB의 경우 외래 키 하나를 가지고 양방향 연관관계를 맺습니다. 그러나 엔티티의 경우 두 엔티티에서 단방향 연관관계를 맺음으로 양뱡향 연관관계 처럼 연관관계를 맺습니다. 이때 엔티티의 양방향 연관관계 관점에서는 참조가 2개가 되고 DB의 관점에서 양방향 연관관계는 외래 키 1개가 됩니다. 이러한 엔티티와 DB의 차이 때문에 엔티티..
-
[JPA] 연관관계프로그래밍/JPA 2021. 10. 20. 17:29
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. 연관관계 JPA의 연관관계는 3가지 키워드가 있다 방향 예를 들어 회원과 팀의 관계에서 회원 -> 팀 또는 팀 -> 회원과 같은 방향을 단방향 관계라고 한다. 회원 -> 팀, 팀 -> 회원과 같은 방향을 양방향 관계라고 한다. 방향의 경우 객체관계에만 존재한다. 테이블의 겨우는 항상 양방향 관계이다. 다중성 다중성에는 [다대일, 일대다, 일대일, 다대다] 4가지 다중성이 있다. 회원과 팀의 관계에서 회원은 1개의 팀에만 속할 수 있는 경우는 회원(다) : 팀(일)인 다대일 관계가 된다. 팀과 회원의 관계에서 회원은 1개의 팀에만 속할 수 있는 경우는 팀(일) : ..
-
[JPA] Entity 매핑프로그래밍/JPA 2021. 10. 17. 23:23
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. 기본 매핑에는 4개의 매핑이 존재 합니다. 객체와 테이블 매핑 기본 키 매핑 필드와 컬럼 매핑 연관관계 매핑 2. 객체와 테이블 매핑 테이블과 매핑 하는 클래스는 Entity 어노테이션을 필수로 붙여야 합니다. Entity 어노테이션이 붙은 클래스는 JPA가 관리하는 엔티티라고 부릅니다. ※주의사항 기본 생성자는 필수로 존재해야 합니다. final 클래스, enum, interface, inner 클래스에는 사용이 불가능 합니다. DB와 매핑하여 저장 할 필드에는 final 사용이 불가능 합니다. 엔티티와 매핑할 테이블을 지정하려면 Table 어노테이션을 붙여야 ..
-
[JPA] 영속성 컨텍스트프로그래밍/JPA 2021. 10. 14. 23:39
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. 영속성 컨텍스트 영속성 컨텍스트란 번역하면 엔티티를 영구 저장하는 환경이라는 뜻으로 해석되며 영속성 컨텍스트는 엔티티 매니저를 생성할 때 하나 생성됩니다. 이렇게 만들어진 영속성 컨텍스트 엔티티 매니저를 통해 접근할 수 있고 관리할 수 있습니다. 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 엔티티 매니저는 find, persist, merge 메서드를 호출하여 엔티티를 영속성 컨텍스트에 저장합니다. 특징 영속성 컨텍스트는 엔티티의 식별자의 값으로 엔티티들을 구분합니다. 그러므로 영속 상태의 엔티티는 식..
-
[JPA] 객체와 데이터베이스의 패러다임 불일치프로그래밍/JPA 2021. 10. 9. 18:53
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. 패러다임 불일치 프로그램 작성 중 특정 객체 정보를 영구 저장하기 위해서는 메모리가 아닌 다른 저장소 등에 저장되어야 합니다. 저장된 객체는 필요시 저장소에서 데이터를 가지고와 객체를 재 생성하여 사용하는 방식으로 사용됩니다. 객체의 경우 상속이나 다른 객체의 참조 등이 있는 경우도 빈번히 발생하게 됩니다. 이러한 경우 저장이 까다로워지지만 Java의 경우 직렬화와 역직렬화를 통해 파일에 저장하거나 파일로부터 데이터를 읽어와 객체를 생성할 수 있습니다. 하지만 직렬화가 된 경우 조회가 사실상 불가능하게 되어 직렬화 후 파일에 저장 방법을 사용하기 어렵습니다. 그래..