일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링 시큐리티
- 알파회계
- GIT
- 자바편
- 리눅스
- 선형대수
- 목록처리
- 서버설정
- 코드로배우는스프링부트웹프로젝트
- Kernighan의 C언어 프로그래밍
- 자료구조와함께배우는알고리즘입문
- d
- 네트워크 설정
- 스프링부트핵심가이드
- 이터레이터
- baeldung
- 페이징
- 처음 만나는 AI수학 with Python
- iterator
- 데비안
- 친절한SQL튜닝
- ㅒ
- network configuration
- resttemplate
- /etc/network/interfaces
- 자료구조와 함께 배우는 알고리즘 입문
- 티스토리 쿠키 삭제
- 코드로배우는스프링웹프로젝트
- 처음 만나는 AI 수학 with Python
- 구멍가게코딩단
- Today
- Total
목록분류 전체보기 (406)
bright jazz music
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YhebX/btrN4kqqHS2/nRqKbU7TznqY8KxAXOTwY1/img.png)
게시물 수정은 필요한 부분만 변경하고 BoardRepository.java의 save()를 이용해서 처리한다. 게시물의 수정은 제목(title)과 내용(content)에 한해서 수정이 가능하도록 설정한다. 수정을 위해서 Board클래스에 수정에 필요한 메서드를 추가한다. 1. 수정을 위한 Board 클래스 변경 Board.java //Board.java package com.example.bootboard.entity; import lombok.*; import javax.persistence.*; @Entity @Builder @AllArgsConstructor @NoArgsConstructor @Getter @ToString(exclude = "writer") public class Board ext..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BUh2r/btrN5xPdVvf/gzxrYYqVBLLINvIbbbqbAk/img.png)
삭제에 대한 고민 실제 개발에서는 삭제 처리에 대한 고민 필요 댓글이 있는 게시글은 게시물이 삭제될 시 거기에 달린 댓글까지 동의 없이 삭제되기 때문. 따라서 실무에서는 게시물에 상태(state) 칼럼을 지정하고 이를 변경하는 형태로 처리하는 것이 일반적 예를 들면 삭제 처리 시 실제로 삭제되는 것이 아닌 게시글의 상태가 "삭제"로 처리 된다고 할 수 있음. 여기 예제에서는 게시글 삭제 시 게시글과 댓글 모두 삭제된다고 가정한다. board 테이블에서 데이터 삭제 시 FK로 board 테이블을 참조하는 reply 테이블에서도 삭제가 일어나야 한다. 순서1 : 해당 게시물의 모든 댓글 삭제 순서 2: 해당 게시물 삭제 이것은 개별 과정이지만 하나의 과정으로 처리되어야 하므로 @Transaction을 사용해..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c0cSFY/btrNSVqgFUC/uBhTpNxB6KeoesPcuFNE11/img.png)
1. 게시물 목록 처리: PageRequestDTO와 PageResultDTO 추가 목록을 처리하기 위해 PageRequestDTO와 PageResultDTO 추가 PageRequestDTO.java //PageRequestDTO.java package com.example.bootboard.dto; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; //페이지 관련 임포트 import org.springframework.data.domain..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/VfPNW/btrNL93wl0G/bvcHBxyzoMf1mYZ52WoGt0/img.png)
기존 프로젝트 내용을 참고해서 브라우저에서 확인할 수 있는 코드 작성 1. DTO 계층과 서비스 계층 작성 //BoardDTO.java package com.example.bootboard.dto; import lombok.*; import java.time.LocalDateTime; @Data//getter and setter 생성 @ToString//toString 메서드 생성 @Builder//Builder 클래스를 롬복이 만들어줌 @AllArgsConstructor//모든 필드를 파라미터로 갖는 생성자를 만든다 @NoArgsConstructor//파라미터가 없는 생성자를 만든다. public class BoardDTO { private Long bno; private String title; pr..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/AAFOo/btrNWqWR6e6/qwiXtIPQmoUgNISXtSKl41/img.jpg)
#극한과 미분 #극한은 함수에서 변수값을 어떤 값에 가깝게 할 때 함수의 값이 한없이 가까워지는 값을 말한다. #y=x^2 + 1 에서 x가 점점 작아지는 경우 0에 수렴한다. #따라서 y=1에 가까워진다. #미분은 변화의 비율을 말한다. 1. 극한 LaTeX 수식 $lim_{x \to 0}{y} = lim_{x \to 0}{(x^2+1)}=1 $ 이 식의 의미 : "x를 한없이 0에 가깝게 하면 y가 1에 가까워진다." 2. 도함수와 미분 함수 y=f(x)에서, x의 미소한 변화량을 x로 하면, x를 Δx 만큼 변화 시킬 때의 y 값은 아래와 같다. LaTeX 수식 $y=f(x+\Delta{x})$ *델타의 기호가 대문자임을 주의. d를 쓸 경우 소문자 델타로 표기됨 이 때 y의 미소한 변화량은 다음과..
조회 화면에서는 Board와 Member를 주로 이용한다. 해당 게시물이 몇 개의 댓글이 있는지 알려주는 수준까지 작성한다. 실제 댓글은 화면에서 주로 AJAX를 이용해 필요한 순간에 동적으로 데이터를 가져온느 방식이 일반적이다. 조회 화면을 위해 작성할 JPQL은 아래와 같다. 1. BoardRepository 인터페이스에 JPQL 코드 추가 // BoardRepository.java public interface BoardRepository extends JpaRepository { ... @Query("SELECT b, w, count(r) " + " FROM Board b LEFT JOIN b.writer w " + " LEFT OUTER JOIN Reply r ON r.board = b " + ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/d5210Z/btrNjqKvIb0/WYc2QzWyZ6qXJchIxbtiqk/img.png)
https://github.com/hojuncha997/bootBoard GitHub - hojuncha997/bootBoard: 코드로 배우는 스프링부트 웹 프로젝트 ch.5 코드로 배우는 스프링부트 웹 프로젝트 ch.5. Contribute to hojuncha997/bootBoard development by creating an account on GitHub. github.com 목록화면에 필요한 데이터 게시물(Board): 게시물 번호, 게시물 작성 시간 회원(Member): 회원 이름/이메일 댓글(Reply): 해당 게시물의 댓글 수 위 3개 엔티티 가운데 가장 많은 데이터를 가져오는 것이 Board이다. 따라서 Board를 중심으로 조인 관계를 형성한다. 조인 후에는 Board를 기준으로 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bJnco5/btrNeIMK3tp/LO0wgxKIaHOYIxHjFj7E20/img.png)
연관관계가 없는 엔티티 조인 처리에는 'ON'을 사용해 줘야 한다. Board와 Member 사이에는 내부적으로 참조를 통해서 연관관계가 있었다. //Board.java ... @ManyToOne(fetch = FetchType.LAZY) //명시적으로 Lazy Loading 지정 private Member writer; //FK 연관관계 지정 //Reply.java ... @ManyToOne private Board board; Board와 Reply는 이러한 관계가 아니다. //Reply.java ... @ManyToOne private Board board; Reply 쪽이@ManyToOne으로 참조하고 Board를 참조하고 있지만 Board에서는 Reply 객체를 참조하고 있지 않다. 이러한 경우..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bATMEZ/btrNjpY1qr1/RWKG7cFIBV3uGJYeLxtyUk/img.png)
하나의 엔티티 타입을 이용하여 목록 화면에서 게시글의 정보와 함께 댓글의 수를 함께 가져올 수는 없다. 이에 대한 해결책으로는 보편적으로 쓰이는 방법은 JPQL의 join을 이용하는 것이다. 1. left (outer) join 스프링 부트 2버전 이후 포함되는 JPA(Java Persistence API) 버전은 엔티티 클래스 내에 전혀 연관관계가 없어도 join을 사용할 수 있다. LEFT OUTER JOIN 혹은 LEFT JOIN 을 사용할 수 있다. 조인 시 INNER JOIN 혹은 JOIN 과 같이 일반적인 조인 역시 사용할 수 있다. 엔티티 클래스 내부에 연관관계가 있는 경우 Board 엔티티 클래스의 경우 내부에 Member 엔티티 클래스를 변수로 가짐으로서 연관관계를 맺고 있다. //Boa..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/v8joZ/btrNb4VTdMS/jfL5WiT3KfIvMqRlBnWG6K/img.png)
이 포스팅에서는 Lazy Loading의 효과를 알아본다. 1. Board.java를 수정하여 Lazy Loading을 설정 우선 Board 클래스를 아래와 같이 수정한다. //Board.java package com.example.bootboard.entity; import lombok.*; import javax.persistence.*; @Entity @Builder @AllArgsConstructor @NoArgsConstructor @Getter @ToString(exclude = "writer") //이렇게 해준 이유는 아래에서 설명함 public class Board extends BaseEntity{ @Id @GeneratedValue(strategy = GenerationType.IDEN..