프로젝트 진행 중 (1) - JPA 삽질

UmmChicken·2022년 11월 9일
0

프로젝트

목록 보기
6/9

📌 요약

  • 엄청난 JPA 삽질 중
  • 구글에 나와있는 자료 거의 다 뒤져서 적용시켰으나 계속되는 연결 실패
  • 으 진짜 뇌 녹을 거 같음

계속되고 있는 JPA 삽질..
이거 때문에 지금 플젝 진전이 안 된다.
흠.. 정말 힘들고 어렵군.

JPA는 SQLMapper와 파일 구조가 많이 다른 거 같다.
그거부터 새로 갈아엎어야 하는데
문제는 사람마다 다 환경(경로) 세팅하는 게 다른 거 같음ㅠㅠ

어쨌든 이걸로도 해보고 저걸로도 해봤는데 일단은 연결 실패...

고통스러운 이날도 얼른 끝나길..


11.14

드디어 JPA로 MySQL 연결을 성공했다.
진짜 나와있는 블로그 다 뒤진 것 같은데도 연결 실패했던
내 지난 날이 생각나서 울컥한다ㅠ..

블로그를 보고 따라해서 연결 성공했다!
감사함다 선생님..ㅋㅋㅠㅠ

근데 그대로 해도 연결 실패가 두 차례 생겼는데,

오류 1. org.hibernate.InstantiationException: No default constructor for entity

구글링 해보니
@Builder 어노테이션에서 오류가 발생하는 것이라고 한다.
블로그 보고 알게 됨.
감사함다 선생님2...
암튼 그래서 @Entity 부분에
@Builder를 추가하니 뭐가 또 생김...
일단 아무것도 모른채로 생성..

@Builder
public Member() {

}

이게 생기더라?

++ From. 김영한쌤
JPA가 엔티티 객체를 생성할 때 기본 생성자를 사용하므로 이 생성자는 반드시 있어야 한다.
자바는 생성자가 하나도 없으면 기본 생성자를 자동으로 만든다.

public Member() {}  // 기본 생성자

🚨 문제는, 임의의 생성자를 하나 이상 만들면, 자바는 기본 생성자를 자동으로 만들지 않는다. 따라서 기본 생성자를 직접 만들어야 한다.

public Member() {}  // 직접 만든 기본 생성자

// 임의의 생성자
public Member(String name) {
	this.name = name;
}

근데 두 번째 다른 연결 실패가 또 생김.

오류 2. 대문자로 생성된 Table 요소와 매핑이 안 된다.

난 MySQL에서 memId라는 Column을 생성했는데 인식이 안 되고,
mem_id라는 Column을 또 생성한다;;

또 구글링.

이쯤되면 사실상 제일 큰 스승은 구글쓰앵님이다ㅋ

블로그 보고 오류 잡음.
감사함다 선생님3...

applicatein.properties 파일에

spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

이거 추가하니 대문자 제대로 인식 되더라.

++ 김영한쌤 JPA 강의 듣다 알게 된 내용
스프링 부트 신규 설정 (엔티티(필드) 테이블(컬럼))

1. 카멜 케이스 → 언더스코어(memberPoint member_point)
2. .(점) → _(언더스코어)
3. 대문자 → 소문자

라고 한다.

profile
Hello My World!

0개의 댓글