일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 어노테이션
- Eclipse
- 계산기
- 버블정렬
- 버블소트
- 이클립스
- Swing
- MVC
- annotation
- Spring
- GUI
- 자바GUI
- 자바
- Java
- 계산기GUI
- 이클립스 #이클립스단축키 #자바 #자바단축키
- 알고리즘
- 자바 #java #이클립스 #eclipse #switch #switch문 #사칙연산 #계산기 #calculator #간단한계산기
- 숫자정렬
- 스프링
- 배열정렬
- 내림차순정렬
- 자바 계산기
- 자바알고리즘
- 오름차순정렬
- Today
- Total
온 코딩
[JPA](간단한 게시판) 스프링-JPA 연동 : 레퍼런스 url , 본문
Spring-JPA 레퍼런스 URL
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.repositories
Spring Data JPA - Reference Documentation
Example 109. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") void del
docs.spring.io
JPA 자체 레퍼런스 URL
https://www.objectdb.com/api/java/jpa
JPA API Reference (JavaDoc) - Persistence, EntityManager, EntityTransaction, Query, etc.
This reference contains the API documentation (similar to JavaDoc) of the Java Persistence API (JPA) 2.0. The content is derived from the original JPA documentation (in the EclipseLink JPA 2 RI) with some additions and notes. The four most basic JPA types
www.objectdb.com
1. 프로젝트 변경
properties -> project facets -> jpa 선택
2. dependency 추가
하이버네이트, Spring ORM 라이브러리 추가
<!-- Spring ORM -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.1.0.Final</version>
</dependency>
3. persistence.xml(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="BoardWeb_SpringMVC">
<class>com.hhw.biz.board.BoardVO</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect" />
<!-- 옵션 -->
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.use_sql_comments" value="false" />
<property name="hibernate.id.new_generator_mappings" value="true" />
<property name="hibernate.hbm2ddl.auto" value="create" />
</properties>
</persistence-unit>
</persistence>
4. Entity 클래스 작성
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import org.springframework.web.multipart.MultipartFile;
/** VO : Value Object **/
@Entity
@Table(name="BOARD")
public class BoardVO {
@Id
@GeneratedValue
private int seq;
private String title;
private String writer;
private String content;
@Temporal(TemporalType.DATE)
private Date regDate;
private int cnt;
@Transient // 테이블에 없는 필드 - 영속성에서 제외
private String searchCondition;
@Transient
private String searchKeyword;
@Transient
private MultipartFile uploadFile;
public BoardVO() {
}
@Override
public String toString() {
String values = "";
values += "BoardVO [seq=" + this.seq;
values += ", title=" + this.title;
values += ", writer=" + this.writer;
values += ", content=" + this.content;
values += ", regDate=" + this.regDate;
values += ", cnt=" + this.cnt;
values += ']';
return values;
}
+setter/ getter 필요
5. 스프링과 JPA 연동설정(applicationContext.xml) , 트랜젝션 설정 수정
<!-- 스프링과 JPA 연동 설정 : JPA 벤더-->
<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
</bean>
<!-- JPA 엔티티 팩토리 -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="jpaVendorAdapter" ref="jpaVendorAdapter"></property>
</bean>
<!-- Transaction 설정 -->
<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"></property>
</bean>
기존 코드에 추가
VendorAdapter 클래스 - DB 연동에 사용할 JPA 벤더를 지정할 때 사용 (하이버네이트를 구현체로 사용 중)
LocalContrainerEntityManagerFactoryBean 클래스
- EntityManager 객체 생성 공장 클래스 / DataSource와 JpaVendorAdater를 의존성 주입
아래와 같은 코드의 경우 persistence.xml 제거 가능
<!-- 스프링과 JPA 연동 설정 -->
<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
</bean>
<!-- 엔티티메니저에 persistence요소 포함 -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="jpaVendorAdapter" ref="jpaVendorAdapter"></property>
<property name="jpaProperties">
<props>
<prop key="hiberate.dialect">org.hibernate.dialect.Oracle12cDialect</prop>
<prop key="hiberate.show_sql">true</prop>
</props>
</property>
</bean>
6.DAO클래스 구현
package com.hhw.biz.board.impl;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import com.hhw.biz.board.BoardVO;
@Repository
public class BoardDAOJPA {
@PersistenceContext
private EntityManager em;
public BoardDAOJPA() {
}
public void insertBoard(BoardVO vo){
System.out.println("===>JPA로 insertBoard() 기능처리");
em.persist(vo);
}
public void updateBoard(BoardVO vo){
System.out.println("===>JPA로 updateBoard() 기능처리");
em.merge(vo);
}
public void deleteBoard(BoardVO vo){
System.out.println("===>JPA로 deleteBoard() 기능처리");
em.remove(em.find(BoardVO.class, vo.getSeq()));
}
public BoardVO getBoard(BoardVO vo){
System.out.println("===>JPA로 getBoard() 기능처리");
return (BoardVO)em.find(BoardVO.class, vo.getSeq());
}
public List<BoardVO> getBoardList(BoardVO vo){
System.out.println("===>JPA로 insertBoard() 기능처리");
return em.createQuery("from BoardVO b order by b.seq desc").getResultList();
}
}
6. BoardServiceImpl클래스 DAO 수정
@Service("boardService")
public class BoardServiceImpl implements BoardService {
@Autowired
private BoardDAOJPA boardDAO;
'복습 ARCHIVE > 모델별 프로젝트' 카테고리의 다른 글
[Spring Data JPA] memoTest - IntelliJ (0) | 2021.07.07 |
---|---|
[이론] ORM,JPA, Hibernate, Spring Data JPA (0) | 2021.07.07 |
[JPA](간단한 게시판) JPA 기본 설명 및 Mavens project 이용 - EntityManager, persistent.xml, JPA API, (0) | 2021.07.05 |
[Spring] MVC / TodoList / Lombok.jar (0) | 2021.06.30 |
[Spring](게시판 예제) 스프링과 MyBatis 연동, Dynamic SQL (0) | 2021.06.29 |