본문 바로가기

JPA3

@Id와 @Convert가 같이 있을 때 정상 동작하지 않는 이유 문제 상황 Entity에서 테이블의 컬럼이 String 타입인 것을 LocalDate 타입으로 변경하려고 했습니다. 기존에 정의 되어 있는 Converter 구현체가 있었기 때문에 @Convert 어노테이션을 사용해서 적용했는데, 실제로 Converter로 로직을 타지 않고 java.sql.Date 클래스의 valueOf 메서드가 호출되고 있었습니다. java.sql.Date 클래스의 valueOf 메서드는 문자열 날짜 값을 파싱할 때, 날짜 형식이 yyyy-[m]m-[d]d가 아니면, IllegalArgumentException 에러를 던지고 있습니다. 테이블에 저장되어 있는 값이 마침 yyyymmdd로 저장되어 있어서 계속 에러가 발생했습니다. class LocalDateConverter : Attr.. 2021. 8. 16.
스프링 부트와 JPA 활용1,2 인프런 강의 정리 김영한님이 강의하신 인프런 스프링 부트와 JPA 활용1, 2 강좌를 학습하고 정리한 내용입니다. 소스코드는 Github를 참고해주세요 Gradle 의존관계 보기 ./gradlew dependencies --configuration compileClasspath Docker MySQL 설치 docker run -d --name test_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin007! mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 엔티티 설계시 주의점 1.가급적 Setter를 사용하지 말자 2.모든 연관관계는 지연로딩(Lazy)으로 설정하자 Fetch Join, 엔티티 .. 2020. 1. 20.
데이터 암호화를 위한 JPA Attribute Converter User 클래스에서 juminNumber 속성 값을 테이블에 저장할 때 암호화하는 예제입니다. User Entity 생성 @Entity @Table(name = "USER") @DynamicInsert @DynamicUpdate @Getter public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "NAME", length = 50, nullable = false) private String name; @Column(name = "JUMIN_NUMBER", length = 100, nullable = false) @Convert(converter = StringCryp.. 2019. 6. 10.