- JPA: ORM을 java언어에 맞게 사용하는 스펙
- ORM : 객체지향 패러다임을 관계형 데이터 베이스에 보존하는 기술
application.properties
- spring.jpa.hibernate.ddl-auto=update --> 이 설정은 데이터베이스의 테이블 구조를 자동으로 생성 및 갱신하는 방법을 결정합니다. 설정값으로 update를 지정하면, 애플리케이션을 실행할 때마다 엔티티 클래스들의 변경 내용을 데이터베이스 스키마에 자동으로 적용
아래 두개는 쿼리문을 보고 싶을때 쓰는 것
- spring.jpa.properties.hibernate.format_sql=true -->SQL 쿼리를 가독성 좋게 출력하는 옵션
- spring.jpa.show-sql=true -->Hibernate가 실행하는 SQL 쿼리를 로그에 출력하는 옵션
- @Entity 어노테이션은 JPA에게 해당 클래스가 데이터베이스의 테이블과 매핑되는 엔티티 클래스임을 알려주는 역할을 합니다. 이 어노테이션을 클래스 위에 선언하면, 해당 클래스의 객체들은 JPA의 관리 대상이 되며 데이터베이스와 연관
- @Table 어노테이션은 엔티티 클래스와 데이터베이스 테이블 간의 매핑 정보를 제공합니다. name 속성을 사용하여 해당 엔티티가 매핑될 데이터베이스의 테이블 이름을 지정
- @Id 어노테이션은 엔티티 클래스의 필드 중에서 기본 키(primary key) 역할을 하는 필드를 지정
- @GeneratedValue 어노테이션은 기본 키 값을 자동으로 생성하는 방법을 지정하는데 사용
- @GeneratedValue(strategy = GenerationType.AUTO)로 설정되어 있으므로 JPA는 데이터베이스에 기본 키 값을 자동으로 생성하는 방식을 선택
- @Column어노테이션을 사용하여 엔티티 필드와 해당 필드가 매핑되는 데이터베이스 컬럼의 속성을 설정
오.. 지알아서 만들어짐ㄷㄷ
- Repository --> DB관련된 거라고 생각!
- JpaRepository<T, ID>: T는 엔티티 클래스의 타입을 나타내며, ID는 기본 키의 타입을 나타냅니다.
만약에 int타입인데 Integer라고 적어준다면 <Memo, Integer>라고 적어준다
근데 왜 int로 해도 되는데 Integer라고 적느냐?
위에 녀석이 객체타입을 원한다고 함
따라서 위의 코드에서 MemoRepository는 JpaRepository 인터페이스를 상속하면서, Memo 엔티티 클래스와 연관된 데이터베이스 작업을 매우 편리하게 수행할 수 있는 인터페이스입니다
- junit으로 돌아가나 테스트
- insert 테스트
- select 테스트
- select 테스트 이건 나중에 없어질 수도 있음 //몰라도됨
- update

어 insert랑 update랑 똑같다
구분어떻게 할까/ ==> id가 있을떄(insert) 없을떄(update)
77이란 id가 없으니 없을떈 알아서 insert해준다
- delete
- 직접 인터페이스에 메서드 만들어서 select해보는 방법
- 자 이제 실제로 list에 뿌려보자(JPA + 타임리프)
- 등록해보자
- 타임리프 써서 등록
1번 th:block로 해도 된다
2번 for each
- 상세보기
//다른 예시
- findAllByOrderByMnoDesc(메서드 이름이 쿼리문이다 ) 쿼리메서드
'Spring > 이론' 카테고리의 다른 글
maven 설명 (1) | 2023.12.08 |
---|---|
타임리프 폴더경로/태그안 vs 태그 밖//th:value//th:object//th:field//숫자포맷#numbers.formatInteger // 날짜포맷 #temporals.format (0) | 2023.08.10 |
스프링 유효성검사 (0) | 2023.08.08 |
타임리프(thymeleafEx)//@Builder//each문으로 반복/if // unless/switch case/a태그 링크이동/파라미터 값 넘기기 (0) | 2023.08.03 |
ObjectMapper//ResponseEntity ==>json으로 바꿔주는 것 (0) | 2023.08.02 |