ORM( Object Relational Mapping ) 으로, 관계형 데이터 베이스의 정보를 객체지향으로 손쉽게 활용할 수 있도록 도와주는 도구
쿼리에 집중하기 보다, 객체에 집중할 수 있게 도와준다.
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('mysql:mysql-connector-java')

JPA와 MySQL을 사용하기 위해 build.gradle에 위와 같은 의존성을 추가해준다.
spring.datasource.url=jdbc:mysql://localhost:3306/study?userSSL=false&useUnicode=true&serverTimezone=Asia/Seoul
spring.datasource.username=root
spring.datasource.password=패스워드
계속 bean을 생성할 수 없다고 떴는데, 이유를 몰랐었다. 그런데 password가 root가 아니였던것...( 원래 패스워드 대신 root로 적어놨었다 )
application.properties에 MySQL에 대한 정보를 명시해준다.
단어를 표기할 때 모두 소문자로 표시하며 띄어쓰기 대신 _ 로 표기하여 사용
API를 정의하기에 따라 다르지만 주로 API 통신 규격에는 Snake Case를 주로 사용
DB table = JPA Entity
JPA는 table을 자동으로 생성해주는 기능이 있다.


그림과 같이 Java에서 camel case로 선언을 했다 하더라도 JPA가 자동으로 DB에 선언된 snake case의 변수와 mapping을 해준다.

원래는 모든 Table, Column등에 name을 명시해주어야 하는데 선언한 변수의 이름이 DB table과 같다면, JPA에서 자동으로 Mapping을 시켜준다.
@Table(name="user")에서 user에 빨간 줄이 뜨는데,https://m.blog.naver.com/PostView.nhn?blogId=withham1&logNo=221230402874&proxyReferer=https:%2F%2Fwww.google.com%2F
위에서 한 것처럼 세팅하면 빨간줄이 없어진다.

전략을 설정해주어야 한다.
JPA에서는 Repository를 통해 기본적인 CRUD를 할 수 있게 제공한다.
repository -> UserRepository를 생성한다.

JpaRepository를 상속받고, Generic으로 type을 지정해준다. 첫번째는 model에 관한 것이고, 두번째 인자는 model의 id의 type이다. 우리의 경우 현재 User의 id를 Long으로 선언했으므로 Long이라고 명시해준다.