본문 바로가기

데이터베이스10

JPA 임베디드 타입( Embedded Type, 복합 값 타입) : @Embedded, @Embeddable, @AttributeOverride, @AttributeOverrides 여러 개의 값을 묶어서 하나의 값 타입을 만들수 있는데 JPA에서는 이것을 임베디드 타입이라고한다. JPA 임베디드 타입의 기본적인 사용법에 대해 알아보자. 사용 방법 "Person 엔티티는 이름과 주소를 가지고있습니다." 이것을 임베디드 타입을 사용하지 않고 엔티티 코드를 작성하면 다음과 같이 작성할 수 있다. @Entity public class Person { @Id @GeneratedValue private Long id; private String name; private String city; private String street; private String zipcode; } 코드를 보면 city, street, zipcode는 주소와 관련된 값들 임을 알 수 있다. 이런 경우 임베디드 타.. 2021. 2. 20.
JPA 지연로딩을 사용해야하는 이유, 지연로딩(Lazy)과 즉시로딩(Eager) 공부하는 과정에서 작성한 글입니다. 잘못되거나 보충할 내용이 있다면 언제든지 알려주세요:) JPA에서는 데이터를 조회할 때 즉시 로딩(EAGER)과 지연 로딩(LAZY) 두 가지 방식이 있다. 이 두 가지 방식을 간단하게 설명하면 즉시 로딩은 데이터를 조회할 때 연관된 데이터까지 한 번에 불러오는 것이고, 지연 로딩은 필요한 시점에 연관된 데이터를 불러오는 것이라고 할 수 있다. 즉시 로딩(EAGER) @xxToxx(fetch = fetchType.EAGER) 다음과 같이 Member 엔티티와 Team 엔티티가 N:1 매핑으로 관계를 맺고 있다. @Entity public class Member { @Id @GeneratedValue private Long id; private String usernam.. 2021. 2. 12.
MySQL, JPA 페이징 사용하기 공부하는 과정에서 작성한 글입니다. 잘못되거나 보충할 내용이 있다면 언제든지 알려주세요:) 페이징을 사용하여 원하는 범위만큼의 데이터를 가져올 수 있으며, 보통 게시판 페이지 같은 것을 구현할 때 많이 사용된다. 예를 들어 post(게시글) 테이블의 title(제목)을 오름차순으로 정렬하여 '0번째부터 20개의 데이터'를 가져온다고 가정해보자. 사용방법 MySQL limit, offset 사용 select * from post order by title asc limit 0, 20; //또는 select * from post order by title asc limit 20 offset 0; JPA setFirstResult(), setMaxResults() 사용 List topics = .. 2021. 2. 11.
[MySQL, Spring] Unable to load authentication plugin 'caching_sha2_password' 해결 방법 스프링 JDBC에서 MySQL을 연동하는 과정에서 다음과 같은 에러가 발생했다. java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'. 구글링을 통해 해결 방법을 찾아보았고, MySQL 8.0 이상의 버전에서 발생하는 문제로써 8.0 버전의 기본 인증 플러그인 변경으로 발생한 문제였다. MySQL 8.0은 SHA-256 해싱을 구현하는 두 가지 플러그인을 지원한다. SHA256 : 기본적인 SHA-256 인증을 구현한 플러그인. caching_sha2_password : sha256_password와 동일하지만, 성능 향상을 위해 서버 캐싱을 이용한다. MySQL 8.0의 기본 인증 플러그인은 caching_.. 2020. 11. 30.