Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 스프링뼈대
- ineer join
- string
- while과 two-pointer
- addDoc
- 스프링환경설정
- 최대공약수
- islowercase()
- 자바 최소공배수
- 동일성과 동등성
- 최대공약수와 최소공배수
- 프로그래머스 레벨1
- 자바 유클리드
- git 컨벤션
- string과 stringbuilder
- Git사용법
- 베주계수
- 모던자바
- stringbuilder의 reverse()
- 유클리드호제법
- 자바 스트링
- sql 데이터형 변환
- 최소공배수
- 래퍼타입
- StringBuilder
- isuppercase()
- 스프링
- 자바 최대공약수
- toLowerCase()
- replaceAll()
Archives
- Today
- Total
주노 님의 블로그
[Spirng] 7. Spring 데이터베이스 연동 - 스프링 데이터 Jpa 본문
시작하기에 앞서
아래 내용은 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB접근기술에서 발췌한 내용입니다.
강의자료 일부를 발췌하는건 괜찮다고 하셨다.
무료강의로 지식을 공유해주신 김영한님께 다시한번 감사의 인사를 올리겠습니다
(_ _) (유료도 샀어요!)
스프링 부트와 JPA만 사용해도 개발 생산성이 많이 증가하고, 개발해야할 코드도 줄어들지만
스프링 데이터 JPA를 사용하게되면 개발이 더 단순해진다.
1. REPOSITORY 생성
public interface SpringDtaJpaMemberRepository extends JpaRepository <Member, Long> , MemberRepository
{
@Override
Optional<Member> findByName(String name);
}
특이하게 인터페이스를 만든다
JpaRepository<클래스,pk>를 받고, 기존에 구현한 MemberRepository도 받는다
끝이다,
왜 이렇게 단순하게 가능하냐면 JpaRepository 가 거의 모든 기능을 제공하기 때문이다
2. SpringConfig 설정
jpaRepository를 상속받고 있으면, 스프링이 스프링 빈으로 자동으로 등록한다.
private MemberRepository memberRepository;
@Autowired
public SpringConfig(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
스프링 컨테이너에서, memberRepository를 찾는다,
jparepository를 상속받는 인터페이스를 만들면 스프링 컨테이너는 알아서 찾고
의존성 주입을 해준다.
// @Bean
// public MemberRepository memberRepository()
// {
// return new MemoryMemberRepository();
// return new JdbcMemberRepository(dataSource);
// return new JdbcTemplateMemberRepository(dataSource);
// return new JpaMemberRepository(em);
//
// }
}
위 코드는 없어도 된다
자동으로 빈에 등록해준다.
3. 통합테스트
void 회원가입()
{
//given - when - then패턴을 사용하면 가독성과 유지보수가 좋다!
//given 테스트의 사전조건
Member member1 = new Member();
member1.setName("juno");
//when 실행했을때, 동작을 수행하는 부분
Long saveId = memberService.join(member1);
//then 결과가 ~ 나와야한다.
Member findMember = memberService.findOne(saveId).get();
assertThat(member1.getName()).isEqualTo(findMember.getName());
}
public interface MemberRepository {
//회원 저장
Member save(Member member);
//특정 id를 가진 도메인을 조회한다
Optional<Member> findById(Long id);
//특정 이름을 가진 도메인을 조회한다.
Optional<Member> findByName(String name);
//저장된 모든 내용을 불러온다
List<Member> findAll();
}
실무에서 사용한다면 jpa와 스프링데이터 jpa를 사용하고
복잡한 동적 쿼리는 querydsl을 사용한다
더 어려운 쿼리라면 jdbcTemplate를 사용하면된다.
'공부 > Spring' 카테고리의 다른 글
[Spring] 객체지향 설계의 5가지 원칙 (SOLID) (0) | 2024.07.31 |
---|---|
[Spirng] 8. AOP(관점 지향 프로그래밍), 프록시 (0) | 2024.07.30 |
[Spirng] 7. Spring 데이터베이스 연동 - JPA (0) | 2024.07.29 |
[Spirng] 7. Spring 데이터베이스 연동 - JDBCTemplate (0) | 2024.07.29 |
[Spirng] 7. Spring 데이터베이스 - 단위테스트 (JUNIT) (0) | 2024.07.29 |