본문 바로가기
👨‍💻 2. 웹개발_Back end/2-6 Spring

[Spring] 5장 JPA 환경설정 - 영속성 유닛 설정과 엔티티 클래스 기본 매핑 및 JPA API

by 달님🌙 2021. 11. 2.
반응형

 

실습 코드 참조

 

moonhy7/SpringFramework: Spring Framework 실습 코드 정리 (github.com)

 

GitHub - moonhy7/SpringFramework: Spring Framework 실습 코드 정리

Spring Framework 실습 코드 정리. Contribute to moonhy7/SpringFramework development by creating an account on GitHub.

github.com

 

 

5.1절 영속성 유닛 (Persistence Unit)

 

1. 영속성 유닛 이름 지정

 

 

2. 엔티티 클래스 등록

 

 

 

 

 

3. 영속성 유닛 프로퍼티 설정

 

 

4. Dialect 클래스 설정

 

 

5. JPA 구현체 관련 속성 설정

 

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<!-- persistence-unit : 영속성 유닛, name 속성으로 설정된 값을 EntityManagerFactory 객체 생성 시 사용 -->
  <persistence-unit name="_078_JPAProject">
    <class>com.springbook.biz.board.Board</class>

    <properties>
    <!-- 필수 속성 -->
    <!-- DataSource -->
      <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
      <property name="javax.persistence.jdbc.user" value="study"/>
      <property name="javax.persistence.jdbc.password" value="study"/>
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/studydb?serverTimeZone=UTC"/>
      <!-- hibernate.dialect : DB마다 문법이 조금씩 다르기 때문에 어떤 DB의 문법을 사용하는 지정 -->
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>

      <!-- 옵션 -->
      <!-- show sql : 생성된 SQL 콘솔에 출력 여부 결정 -->
      <property name="hibernate.show_sql" value="true"/>
      <!-- format sql : SQL 출력 시 실행한 포맷으로 출력할지 말지 결정 -->
      <property name="hibernate.format_sql" value="true"/>
      <!-- use_sql_comments : 주석 출력 여부 결정 -->
      <property name="hibernate.use_sql_comments" value="false"/>
      <!-- id.new_generator_mappings : 새로운 키 생성 전략 사용 여부 결정 -->
      <property name="hibernate.id.new_generator_mappings" value="true"/>
      <!-- hbm2ddl.auto : 테이블의 생성, 수정, 삭제를 자동 처리 여부 결정 -->
      <!-- create : 기존 테이블을 DROP -> CREATE 하도록 설정 -->
      <!-- create-drop : 기존 테이블을 DROP -> CREATE -> DROP 하도록 설정 -->
      <!-- update : 기존 테이블을 수정(ALTER) 하도록 설정, 
              엔티티클래스가 기존 테이블에서 변화가 없으면 반영안되고 기존 테이블 사용 -->
      <property name="hibernate.hbm2ddl.auto" value="create"/>		
    </properties>
  </persistence-unit>
</persistence>

 

 

5.2절 엔티티 클래스 기본 매핑

 

1. @Entity, @Id

 

 

 

 

2. @Table

 

 

 

 

 

3. @Column

 

 

 

 

 

4. @GeneratedValue

 

//@GeneratedValue : 기본 키값 자동 생성하여 할당, 데이터베이스마다 방식이 다름.
//strategy : 기본 키 값 자동 생성 방식 설정.
//GenerationType : TABLE -> PK값 생성을 위한 별도의 테이블을 이용하여 PK 생성. 별도의 테이블 따로 만들어줘야 됨.
//				   SEQUENCE -> 데이터베이스에 저장되어 있는 시퀀스를 이용하여 키 생성(우리가 설정한 생성 전략임)
//				   IDENTITY -> AUTO_INCREMENT나 IDENTITY를 이용하여 키 생성
// 				   AUTO -> 데이터베이스에 맞게 자동 설정되어 키 생성
//generator : Sequence 이름 지정
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private int seq;
private String title;
private String writer;
private String content;

 

 

5. @Transient

 

@Transient	// 엔티티 클래스 내의 특정 변수를 영속 필드에서 제외할 때 사용한다.
private String searchCondition;
@Transient
private String searchKeyword;

 

 

6. @Temporal

 

//@Temporal : 날짜 타입을 매핑할 때 사용하는 어노테이션
@Temporal(TemporalType.DATE)
private Date regDate = new Date();

 

 

5.3절 JPA API

 

1. JPA API 구조

 

 

2. JPA API 사용

 

//Transaction 시작
tx.begin();

Board board = new Board();
board.setTitle("JPA 제목");
board.setWriter("관리자");
board.setContent("JPA 글 등록 잘 되네요.");

//글 등록
em.persist(board);

 

//글 목록 조회
String jpql = "select b from Board b order by b.seq desc";
List<Board> boardList = em.createQuery(jpql, Board.class).getResultList();
for(Board brd : boardList) {
System.out.println("--->" + brd.toString());
}

//Transaction commit
tx.commit();

 

} catch (Exception e) {
			e.printStackTrace();
			//transaction Rollback
			tx.rollback();
		} finally {
			em.close();
		}
		emf.close();
	}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

댓글