
블로그 작성법
목표 > 공부한 내용 > 얻었고, 앞으로 이걸 해봐야지 적기
앞으로 진행할 것
1. Spring boot 패키지 단위로 정리
2. AWS에 프로젝트 올리기
@Autowired
DataSource dataSource;
여기까지 진행하면, property에 값이 있으면 생성된다!
정상적으로 돌아가는지 확인하는 방법은 property를 사용해봐야 한다.
properties 값이 정상인지 오류인지 확인
터널 뚫기를 진행해보자.
터널을 뚫는 다는 거는 DB랑 connection을 만드는 것 이다.
참조 자료
https://velog.io/@sians0209/Spring-Spring-gradle-MySQL-JPA-%EC%97%B0%EB%8F%99
https://pcm9881.tistory.com/130
DataSource는 hikari 구현체가 만들어준다.
MEmberRepository.class
@Autowired
DataSource dataSource;
public void makeConnection() {
DataSourceUtils.getConnection(dataSource);
}
참조 자료
https://velog.io/@sians0209/Spring-Spring-gradle-MySQL-JPA-%EC%97%B0%EB%8F%99
에러 참고 자료
https://psip31.tistory.com/139


Maven Project
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa/3.2.5
EntityManager 객체 (스프링 자동 스프링 빈 등록)
hibernate 구현체가 만들어준다.
EntityManager: save 메소드에서 put -> Insert, get -> Select
Member class 에 @Entity, @Id
select 역할 메소드 : find()
Spring, JPA 둘 다 타입까지 알려줘야 한다. 타입이 중요하다.
자바 - 관계 패러다임 불일치 해소
DB가 객체가 객체를 가질 수 있는 방법이 있을까?
Object와 Relational이 Mapping이 되는 방법?
ORM 기술을 가진 구현체: HiberNate
JDBC API 구현체: hikari
로그인을 하고, JPA의 EntityManager로 구현해보자.
사용자의 요구사항(비즈니스 로직)을 성공적으로 대응하기 위해
SQL을 특정 단위로 묶은 덩어리
비밀번호를 변경한다고 가정해보자.
메소드가 모두 정상적으로 끝날 때 까지 기다렸다가
성공
모두 성공하면 한번에 DB 적용 & Commit
실패
만약 중도에 하나라도 실패하면, 이전에 성공했던거 다 롤백
Repository
: 시스템 입장 (메소드 단위 - SQL 단위)
Service @Transactional
: 유저 입장 (메소드 단위 - 로직 단위)
Java Persistence Query Language
JPA가 자바 개발자들을 위해서,
자바 세상에서 자바스러운 SQL을 쓰면 (like 슈도 코드)
= JPA가 자바의 패러다임으로 한겹 싸줌
DB의 SQL로 바꿔서 쓴다.
ex.
SQL: SELECT *(모든 컬럼) FROM member(테이블명);
JPQL: SELECT m(객체 또는 필드) FROM Member(Entity 클래스명) as m(별칭);
JPQL: SELECT m FROM Member (AS) m WHERE m.userId = :파라미터명 createQuery(JPQL, Member.class)
.setParameter("파라미터명", 매개변수)
.getSingleResult() // getResultList()
알쓸송잡
Q. 리팩토링은 주로 언제할까?
// 잘게잘게 쪼개서, 한번에 절대 많이 하지 말 것
// 리팩토링 하기 전 준비: 백업, 테스트, 인증된 툴(IDE)
1. 에러가 안 보일 때
2. 에러를 고칠 때
3. 가독성이 너무 안 좋을 때 (프로젝트를 일단락시킬 때)
4. 기능 추가하기 전에
이제 JPA, JDBC 등을 사용하여 Map에 저장하던 데이터를 MySQL에 저장하도록 Repository 코드를 수정하였다. DB와 어떻게 효율적으로 소통할지 생각해보자.