Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- jQueryUI
- 스프링데이터흐름
- 대량쿼리
- calendar
- values()
- LIST
- 벌크연산
- JPA
- javascriptcalendar
- fetchjoin
- 페이징
- 제너릭
- javaservlet
- jQuery값전송
- JQuery
- Hibernate
- JPQL
- paging
- 자바서블릿
- joinfetch
- 프로젝트생성
- Generic
- namedQuery
- springflow
- 페치조인
- 엔티티직접사용
- 제네릭
- jQuery값전달
- jscalendar
- fullcalendar
Archives
- Today
- Total
가자공부하러!
Spring Boot Hibernate 사용(JPA) 본문
참고 : https://gompangs.tistory.com/entry/Springboot-JPAHibernate-%EA%B3%B5%EB%B6%80-%ED%8E%B8
1. 적용순서
> 디펜던시 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
> DB 커넥터 설정, DataSource 설정
- spring.jpa.database= mysql
> Entity Class 생성
> CRUD Repository 생성
2. 소스코드
> 설정파일 - application.yml
spring:
#db config
datasource:
hikari:
jdbc-url: jdbc:mysql://112.169.197.59:23306/rhymes?characterEncoding=UTF-8&serverTimezone=UTC&zeroDateTimeBehavior=convertToNull
pool-name: hikari-cp
maximum-pool-size: 30
minimum-idle: 2
driver-class-name: com.mysql.cj.jdbc.Driver
username:
password:
jpa:
database: mysql
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
open-in-view: false
properties:
hibernate:
show-sql: true
format_sql: true
generate-ddl: true
logging:
level:
org:
#JPA Hibernate 로깅
hibernate:
SQL: DEBUG
type:
descriptor:
sql:
BasicBinder: TRACE
> Repository - WishlistHibernateRepository.java
package com.rhymes.app.member.dao;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import com.rhymes.app.member.model.mypage.MemberProductDTO;
@Repository
public class WishlistHibernateRepository {
@PersistenceContext
EntityManager em;
// select
public MemberProductDTO findProduct(int seq){
return em.find(MemberProductDTO.class, seq);
}
}
> Controller - MypageWishlistController.java
package com.rhymes.app.member.controller;
import java.security.Principal;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.rhymes.app.member.dao.WishlistHibernateRepository;
import com.rhymes.app.member.model.mypage.MemberStockDTO;
import com.rhymes.app.member.model.mypage.MemberWishlistDTO;
import com.rhymes.app.member.service.MypageWishlistService;
import lombok.extern.slf4j.Slf4j;
/**마이페이지 컨트롤러
* orderlog : 주문내역
* wishlist : 찜 목록
* review : 상품후기
* points : 적립금
* couopn : 쿠폰
* personal : 개인정보수정
* @author minhj
*
*/
@Slf4j
@Controller
@RequestMapping("/mypage/*")
public class MypageWishlistController {
@Autowired //hibernate repository
private WishlistHibernateRepository hiberRepo;
/**위시리스트 페이지에서 장바구니 담기를 클릭했을 때 모달에 들어갈 페이지를 리턴하는 메소드
* @return
* @throws Exception
*/
@GetMapping(value = "/wishlist/cart/additem")
public String showWishListAddCart(Model model, Principal pcp, int p_seq) throws Exception {
log.info("show WishList AddCart()" + p_seq);
//상품정보
log.info( hiberRepo.findProduct(p_seq).toString() );
return "member/mypage/sub/wishlist_cart";
}
> pom.xml
<!-- JPA 2019-10-28 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<!-- maria db 관련 디펜던시 -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
> Entity - MemberProductDTO.java
package com.rhymes.app.member.model.mypage;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.persistence.*;
@Getter
@Setter
@ToString
@Entity
@Table(name = "rhyStoreProduct")//카멜표기법은 자동으로 스네이크 표기법으로 변환(ex rhy_store_product)
public class MemberProductDTO {
@Id
@GeneratedValue
private int pSeq;
private String cName;
private String pName;
private String pTitle;
private String cpCode;
private int pPrice;
private int bfsPrice;
private String pColor;
private String c1Name;
private String c2Name;
private String c3Name;
private String nation;
private String mdate;
private String detail;
}
3. 결과
4. 에러대응 : 커스텀 Repository를 설정했을 때에는 ...Application(메인메소드)에 @EnableJpaRepositories 어노테이션 추가
package com.rhymes;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@EnableCaching
@SpringBootApplication
@EnableJpaRepositories(repositoryImplementationPostfix = "Default")
public class RhymesApplication {
public static void main(String[] args) {
SpringApplication.run(RhymesApplication.class, args);
}
}
'공부 > Spring Boot' 카테고리의 다른 글
Spring Data Common(1) - 개발환경 설정, 기초사용방법 (0) | 2019.11.27 |
---|---|
Logback 활용(Spring Boot 2.2.0) - 이메일로 전송 (0) | 2019.11.05 |
Mybatis <foreach> 예문 (0) | 2019.10.23 |
Logback 설정과 활용(Spring Boot 2.2.0) - 파일로 저장 (0) | 2019.10.07 |
JSTL 캘린더 제작 (0) | 2019.10.03 |
Comments