728x90
반응형
runtimeOnly 'mysql:mysql-connector-java'
builder.gadle에 종속성을 추가한다
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
JPA도 추가한다
@Entity
@Table(name="mainproduct")
public class MainBoard {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // PK
@Column(name="mainProductId")
private int mainProductId;
@Column(name = "mainProductTitle")
private String mainProductTitle;
@Column(name = "mainProductContent")
private String mainProductContent;
@Column(name = "mainProductHit")
private int mainProductHit;
@Column(name = "mainProductDate")
private String mainProductDate;
@Column(name = "mainProductCategory")
private String mainProductCategory;
Hibernate는 JPA 구현체의 한 종류
저장
- JPA에 객체를 넘긴다
- Entity를 분석 -> Insert SQL을 생성 -> JDBC API를 사용해 SQL을 DB로
조회
- 객체 pk값을 JPA에 넘긴다
- Entity분석해 Select SQL을 생성 -> JDBC API를 사용해 SQL을 DB로 -> DB로부터 결과 받아옴 -> 결과(ResultSet)를 객체에 매핑
반응형
private final EntityManager em;
public JpaMainBoardRepository(EntityManager em) {
this.em = em;
}
따로 Entiry만 관리할 클래스를 만들어서 private final로 선언
저장
em.persist(mainBoard);
return mainBoard;
조회
MainBoard mainBoard = em.find(MainBoard.class,mainProductId);
return Optional.ofNullable(mainBoard);
//또는 쿼리 자체로
return em.createQuery("select m from MainBoard m order by m.mainProductId desc", MainBoard.class) //MainBoard Entity에 query 하는것, m = as m
.getResultList();
수정
객체를 변경하면 알아서 Update query가 실행
삭제
em.remove(mainBoard);
return mainBoard;
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:포트/DB테이블?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=1234
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
resources -> application.properties에 다음과 같이 작성한다
오른쪽 Database를 열어보면 잘 연결되어있다
mainProductId 이런식으로 했더니 읽어들이질 못해서
main_product_id로 해서 잘 실행됐다
반응형