일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Kernighan의 C언어 프로그래밍
- iterator
- 목록처리
- 이터레이터
- 스프링부트핵심가이드
- baeldung
- 자료구조와 함께 배우는 알고리즘 입문
- 코드로배우는스프링웹프로젝트
- 선형대수
- d
- network configuration
- 처음 만나는 AI수학 with Python
- 티스토리 쿠키 삭제
- /etc/network/interfaces
- 리눅스
- 자바편
- 데비안
- 페이징
- 구멍가게코딩단
- 서버설정
- 처음 만나는 AI 수학 with Python
- 코드로배우는스프링부트웹프로젝트
- 알파회계
- 스프링 시큐리티
- 네트워크 설정
- 자료구조와함께배우는알고리즘입문
- ㅒ
- 친절한SQL튜닝
- GIT
- resttemplate
- Today
- Total
목록Framework/Spring (57)
bright jazz music
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bj1ku7/btrFvo2dzil/cJudfOn3tY5TKUiqj5XYwk/img.png)
package org.zerok.ex2.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.transaction.annotation.Transactional; import org.zerok.ex2.entity.Memo; import java.util.List; public inter..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dwoPIQ/btrFv0shiGM/kGiHTeJi6O1JzKPg9g6uZ1/img.png)
package org.zerok.ex2.repository; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.spr..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dyarAX/btrEDRQbdaF/cxOU3RaKK2VymK5UO18cK1/img.png)
jpa 인터페이스 생성 package org.zerok.ex2.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.zerok.ex2.entity.Memo; public interface MemoRepository extends JpaRepository { //JpaRepository를 사용할 때는 엔티티 타입 정보(여기서는 Memo클래스)와 @Id 타입을 지정한다. //SpringDataJpa는 인터페이스 선언만으로도 자동으로 bean으로 등록한다. //(내부적으로는 인터페이스 타입에 맞는 객체를 생성해서 빈으로 등록한다.) //선언이 끝났으면 test폴더-repository패키지생성-MemoReposit..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Fae8e/btrEnSpqo9W/Kdoi49Iod5Ho7J7Z7GltZ0/img.png)
package org.zerok.ex2.entity; import lombok.*; import javax.persistence.*; @Entity @Table(name="tbl_memo") //name옵션이 없으면 클래스 이름으로 테이블 생성 @ToString @Getter @Builder @AllArgsConstructor @NoArgsConstructor public class Memo { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long mno; @Column(length = 200, nullable = false) private String memoText; } /* * @Entity * SpringDataJPA에서는 반드..
//SampleController.class@GetMapping("/ex02List")public String ex02List(@RequestParam("ids")ArrayList ids) { log.info("ids: " + ids); return "ex02List";}//INFO: com.~~~경로~~~.controller.SampleController - ids: [111, 222, 333] -동일한 이름의 파라미터가 여러 개 전달되는 경우에는 ArrayList 등을 이용해서 처리 가능- 스프링은 파라미터의 타입을 보고 객체를 생성하므로 파라미터의 타입은 List와 같이 인터페이스 타입이 아닌 실제적인 클래스 타입으로 지정한다.-위 코드의 경우 'ids'라는 이름의 파라미터가 여러 개 전달되더..
###추상 클래스는 왜 반드시 상속한 후 사용하도록 만들었는가? 왜 상속을 강제하게 만들었는가?구체적인 구현의 책임은 그것을 사용하는 쪽에 넘기는 것. 추상 클래스에서 공통 부분만 만들고, 맥락과 용도에 따라서 달라질 수 있는 부분이 있을 때 그것을 상속받은 하위 클래스에서 용도에 따라 달라지는 구현을 사용자가 직접하도록 규약하는 것이 추상클래스의 용도이다. 일부는 공통인데 또 일부는 각기 다른, 상황에 따라서 달라질 수 있는 공통적이지 않은 부분을 가지고 있는 어떤 클래스를 만들 때 추상클래스를 쓰는 것이 효과적이다. 계산기를 생각해 보자 사칙연산은 기본이니 추상클래스에 설계한다. 그리고 일부는 또 각기 다르기 때문에 상속받아서 직접 꾸미도록 한 것이다. 이렇게 프로그래밍하는 방식을 탬플릿 패턴이라고 ..
모바일 시대가 되면서 WEB분야의 가장 큰 변화는 서버 역할의 변화라고 할 수 있다. 과거에는 서버의 데이터를 소비하는 주체가 '브라우저'라는 특정한 애플리케이션으로 제한적이었다면, 모바일의 시대가 되면서 앱이나 웹은 서버에서 제공하는 데이터를 소비하게 된다. 과거의 서버는 브라우저라는 하나의 대상만을 상대로 데이터를 제공했기 때문에 아예 브라우저가 소화 가능한 모든 데이터를 HTML이라는 형태로 전달하고, 브라우저는 이를 화면에 보여주는 역할을 해 왔다. 스마트폰에서는 앱(App)이라 불리는 고유한 애플리케이션을 이용해서 데이터를 소비하게 되고, 보이는 화면 역시 자신만의 방식으로 서비스하게 된다. 앱에서 서버에 기대하는 것은 완성된 HTML이 아니라 그저 자신에게 필요한 순수한 데이터만을 요구하게 되..