프로그래밍
-
[JPA] 즉시로딩과 지연로딩 Eager And Lazy프로그래밍/JPA 2022. 1. 13. 01:06
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. 즉시 로딩과 지연 로딩 엔티티에서 연관관계를 가지는 엔티티가 있는 경우 이 연관된 엔티티를 어떤 시점에 조회를 할 것인지 결정하는 로딩 방법을 말합니다. 즉시 로딩 - 엔티티를 조회할 때 연관된 엔티티를 같이 조회하는 로딩 방법 ManyToOne으로 연관된 Team 엔티티를 즉시 로딩으로 설정하게 되면 Member 엔티티를 조회하는 시점에 연관된 Team 엔티티를 조회하는 로딩 방법입니다. 지연 로딩 - 엔티티를 조회할 때 연관된 엔티티를 같이 조회하는 것이 아닌 연관 엔티티의 사용 시점에 조회하는 로딩 방법 ManyToOne으로 연관된 Team 엔티티를 지연 로..
-
[JPA] Attribute Converter프로그래밍/JPA 2022. 1. 12. 00:32
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. Attribute Converter이란 명칭을 그래도 번역하면 속성 변환기 정도가 될 것 같습니다. 번역 그대로 Converter는 Entity와 DB사이에서 속성의 변환을 담당합니다. Converter가 지정되지 않은 속성의 경우 조회 시 DB의 데이터를 특정 속성의 값으로 읽어오며, 저장 또는 수정 시 Entity의 속성 값을 DB의 컬럼에 저장합니다. 반면 Converter가 지정된 속성의 경우는 조회 시 DB의 데이터를 읽어와 Converter의 특정 동작을 수행 후 결과를 Entity속성에 값을 입력하며, 저장 또는 수정 시 Entity의 속성 값을 Co..
-
[Java] Reflection Private프로그래밍/Java 2022. 1. 11. 00:07
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. Reflection Private 이전 글에 이어서 Private 생성자, 메소드, 속성에 접근하여 생성자를 통해 객체를 생성하거나 메소드를 통해 해당 메소드를 실행하는 등 Private으로 선언된 Class 정보들을 이용하는 방법에 대해 알아보고자 합니다. 2. Reflection Private 사용 방법 getDeclaredConstructor, getDeclaredConstructors메소드 메소드명과 같이 선언된 모든 생성자를 가져올 수 있습니다. 'ClassObject'.getDeclaredConstructors(); Class Object의 getDec..
-
[Java] Reflection Invoke프로그래밍/Java 2021. 12. 31. 01:04
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. Reflection 기본인 Class Object, Method, Field, Construction 정보를 가져오는 포스팅 다음으로 Method를 실행하는 Invoke에 대해 포스팅 하고자 합니다. 1. Invoke 메소드 이전 포스팅에서 Class Object를 통해 Class의 여러 정보를 가져오는 예제를 확인해 보았습니다. 여러 Class 정보 중 Field의 경우 Value를 가져오거나 변경하는 등의 작업이 주된 작업이 될 수 있지만 Method의 경우는 실행이 주 목적이 됩니다. Class Object를 통해 Method 정보를 가져온 주 목적은 해당 Met..
-
[Java] Reflection(리플렉션)프로그래밍/Java 2021. 12. 29. 16:24
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. Reflection이란 리플렉션이란 런타임 시점에 자바 코드 자체를 추상화하여 구체적인 클래스의 타입을 알지 못하여도 메소드나 속성 등 여러가지 작업들을 할 수 있도록 해주는 Java API 입니다. 2. Reflection을 사용하는 기술 Spring Framework Jackson Hibernate 3. Reflection 사용 방법 forName 메소드 Class couponClass = Class.forName(패키지.클래스명); Class.forName 메소드를 이용하여 Class Object를 가져올 수 있습니다. forName 메소드의 파라미터로 패키..
-
[Junit] Junit5 Exception Throw 테스트프로그래밍/Junit 2021. 12. 28. 00:24
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. Junit4 Exception 테스트 많은 개발자 분들이 사용한 Junit4에서는 어떤 예외 상황에 대한 테스트를 진행하는 경우 @Test 어노테이션에 expected 속성에 발생을 원하는 Exception의 Class를 전달하는 경우 해당 Exception이 Throw 되면 테스트 성공으로 결과를 받아 볼 수 있었습니다. 2. Junit5 Exception 테스트 방법 Junit5인 jupiter.api Package의 @Test 어노테이션의 경우 expected 속성이 제거되어 더 이상 @Test 어노테이션을 통한 Exception Test가 불가능합니다. J..
-
[JPA] Dirty Checking(변경 감지)프로그래밍/JPA 2021. 12. 24. 03:36
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. JPA Dirty Checking JPA에는 수정과 관련된 메소드가 존재하지 않습니다. 그럼 JPA를 이용해서는 데이터를 수정할 수 없는 것일까요? 당연히 JPA도 DB 데이터를 수정할 수 있습니다. 다만 수정 메소드가 존재하지 않을 뿐입니다. JPA를 사용하여 데이터를 수정하려면 Entity를 조회하여 조회된 Entity 데이터를 변경만 하면 데이터 베이스에 자동으로 반영이 되도록 하는 기능을 바로 Dirty Checking이라고 합니다. 2. Dirty Checking 동작 방법 Entity 객체의 데이터만 변경하면 어떻게 DB에 수정된 데이터가 반영되는지 설..
-
[Map Struct] Ambiguous Mapping Error프로그래밍/Map Struct 2021. 12. 19. 16:35
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다. 틀리거나 잘못된 정보가 있을 수 있습니다. 댓글로 알려주시면 수정하도록 하겠습니다. 1. Ambiguous Mapping Error Entity를 DTO로 변경하거나 또는 DTO를 Entity로 변경하기 위해 Map Struct를 사용합니다. Map Struct는 Object 뿐만 아니라 Collection에 포함된 Element또한 변경이 가능 합니다. Collection의 Element를 변환하고자 할때는 변환 처리를 하는 작업을 Object를 변환하는 메소드를 호출하여 변환 작업을 진행 합니다. 위 이밎 처럼 Collection Element 변환의 경우 Object 변환 메소드(entityToDTO, dtoToEntity)를 호출하여 Colle..