본문 바로가기

Spring

240313 스프링 부트

어제 못한 API 이어 하기

API 는 연속적으로 적는게 좋아보여 어제 글 수정하여 내용 추가

https://han-s-coding.tistory.com/98

 

240312 스프링 부트

API 받기 https://www.data.go.kr 공공데이터 포털 국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하

han-s-coding.tistory.com

 


어느 페이지의 원하는 항목들 가져오기, 웹 크롤링

아래 의존성 추가하기

implementation 'org.jsoup:jsoup:1.17.2'

 

@GetMapping("/html")
public String html() throws Exception {
  String naver = "http://www.naver.com";
  String clien = "http://www.clien.net/service/";
  // org.jsoup.nodes.Document doc = Jsoup.parse(naver);
  // naver 사이트의 html 코드들을 다 가져옴
  // org.jsoup.nodes.Document doc = Jsoup.connect(naver).get();
  // System.out.println(doc);
		
  // 클리앙 사이트 가져와보기
  org.jsoup.nodes.Document clienDoc = Jsoup.connect(clien).get();
  // 클리앙 사이트의 class 가 somoim 인 것 고르기, html 코드가 나옴
  // <a class="menu-group all somoim" href="/service/somoim"> <span class="fa fa-angle-right"></span> <span class="menu_over">소모임</span> </a>
  // Elements clienElement = clienDoc.select(".somoim");
  // a 태그의 .menu-list .somoim 클래스의 하위 .menu_over 의 코드를 가져옴
  Elements clienElement = clienDoc.select("a.menu-list.somoim .menu_over");
  System.out.println(clienElement.size());
		
  for (Element ele : clienElement) {
    // ele.text() 를 사용하면 태그 안의 text 만 뽑아낼 수 있음 etc) WOW당
    // 그냥 ele 를 출력하면 전체 태그 출력
    // <span class="menu_over">WOW당</span>
    System.out.println(ele);
  }
		
  return "";
}

 

클리앙 사이트의 메뉴 부분만 가져온 모습


SQL

select mm.* 
from (select cast(@rownum:=@rownum + 1 as unsigned) as rowNum, m.* from multiboardview m, 
(select @Rownum:=0) as R
where mtcate = 1 
order by mtno ASC) mm
ORDER by mtno DESC
limit 0, 10

 

SELECT ff.*, m.mname  
FROM(SELECT @ROWNUM:=@ROWNUM+1 AS rowNum, bb.*, (SELECT COUNT(*) FROM multiboard WHERE mtdel=1) AS COUNT
  FROM (SELECT  b.mtno, b.mttitle, b.mtdate, b.mtdel, b.mno, b.mtcate
  FROM multiboard b) bb, (SELECT @ROWNUM:=0) AS R
  WHERE mtcate=1
  ORDER BY bb.mtno ASC) AS ff JOIN member m ON ff.mno = m.mno 
ORDER BY mtno DESC
LIMIT 0, 10

 

위 쿼리문의 결과

어떤건지.. 알아봐야겠다..


JPA

JPA 란 무엇인가

https://velog.io/@choidongkuen/Spring-JPA-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EB%B0%A9%EC%96%B8Dialect-%EC%9D%B4%EB%9E%80

 

[Spring JPA ] 데이터베이스 방언(Dialect) 이란?

안녕하세요 오늘은 스프링 JPA 에서 핵심적인 기능을 하는 데이터베이스 방언(Dialect) 에 대해 알아보겠습니다 👨‍💻sql(structured query language) 이란 관계형 데이터베이스에 정보를 저장하고 처리

velog.io

 

JPA 방언 설정하기

# JPA 방언 설정
# spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDB103Dialect
# MariaDB103 > 에서 오류 발생.. 3 을 6 으로 변경하여 오류 해결
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDB103Dialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.show_sql=true

create : 실행할 때마다 기존 테이블 삭제 후 다시 생성 (DROP + CREATE)
create-drop : create와 같으나 애플리케이션 종료 시점에 테이블 삭제
update : 엔티티 매핑 정보를 비교하여 변경된 내용만 반영
validate : 엔티티와 테이블이 정상적으로 매핑되었는지만 확인
none : 사용하지 않음

 

JPA 추가 설정

JpaRepository 를 상속받는 JPABoardRepository 만들기

package com.solbum.web.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.solbum.web.entity.JPABoard;

public interface JPABoardRepository extends JpaRepository<JPABoard, Integer> {
}

 

JPABoard 만들기

@Getter
@Setter
@Entity
public class JPABoard {

  /**
   * jb -> JPA Board <br>
   * board_no 값을 받음
   */
  @Id // PK 값
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private int jbno;
	
  // PK 값 외의 것
  @Column(columnDefinition = "TEXT") // 해당 열의 형식을 지정할 수 있음 
  private String jbtitle;
	
  @Column(columnDefinition = "LONGTEXT")
  private String jbcontent;
	
  // 해당 열의 기본 값을 지정할 수 있음
  @ColumnDefault("CURRENT_TIMESTAMP")
  private LocalDateTime jbdate = LocalDateTime.now();
	
  /**
   * 조회수
   */
  @ColumnDefault(value = "1")
  private int jbread;
	
  /**
   * 좋아요 수
   */
  @ColumnDefault("0")
  private int jblike;
}

'Spring' 카테고리의 다른 글

240315 도커  (0) 2024.03.15
240314 스프링 부트  (2) 2024.03.14
240312 스프링 부트  (0) 2024.03.12
240311 스프링 부트  (0) 2024.03.11
240308 스프링 부트  (1) 2024.03.08