본문 바로가기
Spring/이론

JPA+ 타임리프//@Entity//@Table //@Id//@GeneratedValue//@Column//JpaRepository//junit crud 테스트// 실제로 출력//th:block//a태그//findAllByOrderByMnoDesc //쿼리메서드

by SEOKIHOUSE 2023. 8. 11.


  • 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라고 적느냐?

위에 녀석이 객체타입을 원한다고 함

 

 

따라서 위의 코드에서 MemoRepositoryJpaRepository 인터페이스를 상속하면서, 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(메서드 이름이 쿼리문이다 ) 쿼리메서드

practice0811_jpaEx01.zip
0.10MB