일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- Spring Boot
- springdatajpa
- Thymeleaf
- QueryDSL
- 자바
- pointcut
- jpa
- 알고리즘
- kotlin
- Proxy
- AOP
- 스프링 핵심 기능
- JPQL
- JDBC
- SpringBoot
- 김영한
- db
- Exception
- spring
- Greedy
- transaction
- Android
- Servlet
- 스프링
- 인프런
- 백준
- java
- 그리디
- 스프링 핵심 원리
- http
- Today
- Total
목록JPA (49)
개발자되기 프로젝트
findByName()이라는 method를 만들어 보자. 진짜 간단하다.. UserRepositlry interface에 아래와 같이 추가했당. public interface UserRepository extends JpaRepository { List findByName(String name); } 그리고 아래처럼 test코드를 작성해보자. @Test void select(){ System.out.println(userRepository.findByName("hyun")); } 그러면 이름이 일치하는 entity가 List타입으로 불어와졌다...신기함.. JPA를 사용했을때 체감으로는 쉽게 작성하고 많은 혜택을 받는게 쿼리메서드 생성한 repository에 naming base로 method를 선언하기..
실제 구현체 코드를 뜯어보자! 1. update query user1명 저장 --> id가 1인 entity를 가져와서 email수정후 다시 저장해보자. @Test void crud(){//create, read, update, delete userRepository.save(new User("david", "david@fast.com"));//insser query동작 User user = userRepository.findById(1L).orElseThrow(RuntimeException::new); user.setEmail("sdfsdf-updated@naver.com"); userRepository.save(user); } save:insert query-> findbyId: select quer..
1. Page Paging : DB에 저장된 entity를 page로 나누는 것. page에 대한 설명은 아래와 같다. slice에 대한 정보와 전체에 대한 정보를 가지고 있다. A page is a sublist of a list of objects. It allows gain information about the position of it in the containing entire list. public interface Page extends Slice Slice : data 묶음의 일부 덩어리. slice에서 제공하는 정보는 현재 slice에 대한 정보만을 준다. slice에서 제공하는 method int getNumber(); List getContent(); int getNumberOfEl..
1. flush() flush() : JPA context에 있는 DB값을 DB에 적용하도록 함. @Test @Transactional void crud(){//create, read, update, delete userRepository.save(new User("new hyun", "newHyun@ddd.com")); userRepository.flush(); userRepository.findAll().forEach(System.out::println); } 2. saveAndFlush() save() 와 flush() 를 합한 method로 추가적인 flush() method 사용 절차가 필요 없다. @Test @Transactional void crud(){//create, read, updat..
1. findAll(Sort) 데이터를 불러올 때 sorting하여 list로 저장이 가능. .이름 오름차순으로 해보자! @Test void crud(){//create, read, update, delete //user객체 생성하고 저장하겠다다 //userRepository.save(new User()); //userRepository.findAll().forEach(System.out::println); //System.out.println(">>>>"+ userRepository.findAll()); List userList = userRepository.findAll(Sort.by(Sort.Direction.ASC,"name")); userList.forEach(System.out::println..
연습을 위해 h2 in-memory DB를 사용 중이다. in memory DB기 때문에 프로그램이 종료되는 시점에 데이터가 날라간다. 따라서 일단 data.sql에 간단한 데이터를 저장하여 resources 하위에 저장하자. 그러면 jpa가 로딩할대 자동으로 한번 실행해준다. test에서 활용할거니까 test하위 resources를 만들어 data.sql을 생성하자. 0. SQL insert into 들어가기전에 SQL의 insert문 의 형태를 보자. insert into 테이블 이름('열1이름'. '열2이름', ....) value(value1, value2, ....) table로 표현하면 다음과 같이 나타낼 수 있다. 열1 열2 열3 value1 value2 value3 사용 예시이다. inse..
간단하게 HelloWorldController를 만들어서 JPA를 사용해 보도록 하겠음다 1. Controller 작성 @RestController //@RequestMapping("/api") public class HelloWorldController { @GetMapping("/hello-world") public String helloWorld(){ return "hello-world"; } } 2. ControllerTest 작성 @WebMvcTest class HelloWorldControllerTest { @Autowired private MockMvc mockMvc; @Test void helloWorld() throws Exception { mockMvc.perform(MockMvcReq..
1. H2 DB 란? DB는 JAVA기반의 경량화된 관계형 DB file 로 저장하여 실제 DB처럼 유지할 수 있고, memory DB로 사용하여 실제 인스턴스가 동작하는 시점에만 유지도 가능 프로젝트 초기 test DB로 사용 유지보수 기간에는 JUnit test용 H2 DB자주 사용 h2 database사용하기 위해서는 의존성이 추가되어야 한다. runtimeOnly 'com.h2database:h2' 2. H2 database 등록하기 서버를 띄워봅시당. 프로젝트를 생성하면 resource에 application.properties가 있을 것이다. 최근에는 application.yml을 사용하는 추세니 application.propertils를 삭제하고 application.yml 만들어주자. ym..