본문 바로가기

JAVA

JPA 사용법 (JPA Repository)

Entity (Domain이라고 생각하면 된다.)

DB에 저장하기 위해 유저가 정의한 클래스 

 

일반적으로 RDBMS에서 TABLE을 객체화 시킨것으로 보면 된다.그래서 table이름이나 컬럼들에 대한 정보를 가진다

vo와는 살짝 다른 개념

 

 

@id


primary key를 가지는 변수를 선언하는것을 의미한다.

@GeneratedValue 어노 테이션은 해당 ID값을 어떻게 자동으로 생성할지 전략을 생성할수있다.

여기서는 DB설정에 따르겠다는 의미 auto등으로 지정해놓을수가있다.

 

@Table


별도의 이름을 가진 DB 테이블과 매핑한다. 

기본적으로 @Entity로 선언된 클래스의 이름은 실제 DB의 일치하는것을 매핑한다.

@Entity의 클래스명과 DB의 테이블 명이 다를경우 Table(name = "")으로 같은 형식을 사용해서 매핑이 가능하다

 

@Column


@Column의 선언이 꼭 필요한것은 아닌다. 하지만 Column에서 지정한 변수명과 DB의 컬럼명을 서로 다르게 주고싶다면 @Column(name="")같은 형식으로 작성하면 된다.

그렇지 않은 경우에는 기본적으로 멤버 변수명과 일치하는 DB컬럼을 매핑한다.


Repository

Entity-> Repository순으로 클래스를 작성하면 되는데스프링 부트에는 Entity의 기본적인 CRUD가 가능하도록 JPA Repository인터페이스를 제공한다.

Jpa Repository를 상속받을때는 사용될 Entity클래스와 ID값의 타입을 입력한다.

JpaRepository<T,ID>가 된다.

 

그렇게 JpaRepository를 단순하게 상속하는 것만으로도 위의 인터페이스는 Entity하나에 대해서 아래와 같은 기능을 제공하게 된다.

Method 기능
save() 레코드 저장(insert, update)
findOne() primary key로 레코드 한건 찾기
findAll() 전체 레코드 불러오기 정렬(sort), 페이징 가능
count() 레코드 개수 
delete() 레코드 삭제

위의 기본 기능을 제외한 조회기능을 추가 하고싶으면 규칙에 맞는 메서드를 추가해야한다.

EX => Board findByName(int postNum)

이런식으로 Query 메소드를 추가하여 사용할수있다.

사용하기 위해서는 규칙이 있는데!

Method 설명
findBy---- 쿼리를 요청하는 메서드 임을 알림
countBy---- 쿼리 결과 레코드 수를 요청하는 메서드임을 알림

 

위의 findBy에 이어 해당 Entity 필드 이름을 입력하면 검색 쿼리를 이용한 결과를 전달한다.

SQL의 Where 메서드 이름을 통해 전달한다고 생각하며 된다.

 

메서드의 반환형이 Entity 객체이면 하나의 결과만을 전달하고 반환형이 List라면 쿼리에 해당하는 모든 객체를 전달한다.

 

Query 메소드에 포함할수있는 키워드는 아래에 보여준다.

Method Example 설명
And findBy'postnum'And'PostId'(Integer postnum,String postid)
사용할때는 '' 없이 사용하시면 됩니다.! 
저는 잘 보이게하기위해 사용했습니다.
여러필드를 And로 검색
Or findBypostnumOrPostid(Integer postNum,String postId) 여러필드를 Or로 검색
Between findByCreatedAtBetween(Date Regdate, Date Update) 두 값 사이에 있는 항목에 있는 검색
LessThan findBy---lessthan---(int thumsup) 작은 항목 검색
GreatThanEqual findBy---GreatThanEqual---(int thumsup) 크거나 같은 항목 검색
Like findByMemberNickNameLike(String MemberNickName) like 검색
IsNull findByJobisNull() Null값 검색
In findByJob(String ---job) 여러값중 하나인 항목 검색
OrderBy findByOrderBy---Asc,Desc(String ----) 

검색결과를 정렬하여 전달

 

 

 

 

 

반응형