일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- JDBC connection pool
- Git
- jpa
- JPA Hint & Lock
- 이해와 원리
- jpqlquery
- sql
- 에이치투데이터베이스
- OSIV
- 데이터베이트h2
- JPA프록시
- 제이피큐엘쿼리
- 자바제너릭
- spring
- springbootproxy
- springboot기본설정
- 스프링부트
- 임베디드타입
- JPA값타입
- JPAproxy
- Open EntityManager
- embededtype
- springbootH2
- httppie
- JPAmapping
- javageneric
- dockercmd
- 스프링부트기본설정
- gitinitial
- MySqlType
Archives
- Today
- Total
빡코
[JPA] 스프링데이터 JPA 본문
Spring Data JPA ? 복잡한 JPA 코드를 스프링과 함께 쉽게 사용할 수 있도록 도와주는 라이브러리
Spring Data JPA > JPA(ORM) > Hibernate(JPA 구현체) > JDBC 를 사용한다.
JpaRepository를 상속 받은 UserRepository
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByName(String name); //find: 1건을 가져옴, 반환타입 ? 객체 or null 반환
Boolean existsByName(String name); //쿼리 결과가 존재하는지 확인, 반환타입 boolean
long countByAge(Integer age); //SQL의 결과 개수를 센다. 반환타입? long
List<User> findAllByNameAndAge(String name, int age);
// == SELECT * FROM user WHERE name = ? AND age = ?;
//GreaterThan : 초과
//GreaterThanEqual: 이상
//LessThan: 미만
//LessThanEqual: 이하
//Between: 사이
//StartsWith: ~로 시작하는
//EndsWith: ~로 끝나는
}
UserRepository 인터페이스를 주입 받은 UseService 클래스
@Service
public class UserServiceV2 {
private final UserRepository userRepository;
public UserServiceV2(UserRepository userRepository) {
this.userRepository = userRepository;
}
public void saveUser(UserCreatRequest request) {
userRepository.save(new User(request.getName(), request.getAge()));
//save는 user의 id를 반환한다.
}
public List<UserResponse> getUsers() {
return userRepository.findAll().stream() //findAll: 모든 데이터를 가져온다.
.map(UserResponse::new)//user -> UserResponse를 변환
.collect(Collectors.toList());
}
public void updateUser(UserUpdateRequest request) {
//select * from User where id = ? 쿼리 실행
//Optional<User> 결과 반환
User user = userRepository.findById(request.getId())
.orElseThrow(IllegalArgumentException::new);//존재하지 않는다면 바로 에러 던진다.
user.updateName(request.getName()); //변경되어야 할 이름
userRepository.save(user);
}
//삭제
public void deleteUser(String name) {
User user = userRepository.findByName(name).orElseThrow(IllegalArgumentException::new);
userRepository.delete(user);
}
}
'Java > JPA' 카테고리의 다른 글
[JPA] 스프링데이터 JPA - 트랜잭션 (0) | 2023.12.27 |
---|---|
[querydsl] 스프링부트 3.0 + java 17 build.gradle 설정 파일 (0) | 2023.05.31 |
[스프링데이터JPA] 새로운 엔티티(Entity)를 구별하는 방법 (0) | 2023.05.12 |
[스프링데이터JPA] 스프링테이터 JPA 분석 (0) | 2023.05.12 |
[스프링데이터 JPA] Web 확장 - 도메인클래스컨버터, 페이징과 정렬 (0) | 2023.05.12 |