JPA(11)
-
[ORM 표준 JPA] 10장 객체지향 쿼리언어(JPQL) (1)
ORM방식으로 복잡한 쿼리를 만들 수 있게 도와주는 기능입니다. JPA는 JPQL을 분석해 적절한 SQL을 만들어 DB를 조회합니다. 종류 Native SQL : JPQL 대신 SQL을 사용할 수 있음 QueryDSL : SQL 작성을 도와주는 빌더 클래스 모음 빌더클래스 쿼리를 코드로 작성할 수 있기 때문에 컴파일 시점에 오류가 발생합니다. 쿼리 전용 엔티티(메타모델)를 만들어주는 어노테이션 프로세서가 필요합니다. QueryDSL //준비 JPAQuery query = new JPAQuery(em); QMember member = QMember.member; //쿼리, 결과조회 List members = query.from(member) .where(member.username.eq("kim")) .l..
2021.07.25 -
(2) JPA 시작
2.2 H2 DB설치 already port in use Exception : C:/Users/[username] > h2.properties 파일에서 port 설정 변경할 수 있습니다. H2 콘솔 server 실행할 때 Database "C:/Users/klyhy/test" not found, either pre-creat : JDBC URL : jdbc:h2:~/test 로 먼저 연결한다음 (DB가 설치됨) localhost를 연결합니다. 2.5 JPA 설정 교재에선 hibernate 의존을 사용했지만 스터디 프로젝트는 hiberante core, jpa가 내장된 spring-boot-starter-data-jpa를 사용합니다. spring.datasource로 시작하는 속성을 사용합니다. DB 방언..
2021.06.21 -
(1) JPA 소개
회사에서 Mybatis를 사용해 빚어지는 SQL 휴먼에러와 유지보수에 대한 어려움 때문에 JPA를 공부해 도입시키고자 스터디를 시작했습니다. 현재 5명인 스터디는 정해진 순서대로 맡은 챕터를 스터디 시간에 발표하는 방식으로 진행되고 있습니다. 요약본은 마크다운 파일로 Github 레포지토리에 커밋하기 때문에 같은 양식을 유지합니다. JPA 장점 CRUD SQL 작성할 필요가 없습니다. 성능에 대한 문제는 SQL을 직접 작성하는 것으로 보완할 수 있습니다. 네이티브 SQL로 직접 작성할 수도 있고 쿼리 힌트도 작성할 수 있습니다. 객체 중심으로 생산성과 유지보수가 확연히 좋아집니다. e.g. MySQL 데이터베이스에서 오라클 데이터베이스로 변경할 때 어렵지 않습니다. SQL을 직접 작성할 때 발생하는 문제..
2021.06.21 -
[스프링 부트 어드민 페이지] 4. QueryMethod
Github 코드 QueryMethod QueryMethod란 JPARepository 메서드가 findAll(), findById(), save() 등 정형화 되어있는데 커스터마이징 하여 원하는 WHERE절 조건 데이터를 입력해 데이터를 조회할 수 있는 메서드입니다. 1 2 3 4 5 6 7 8 9 10 @Repository public interface UserRepository extends JpaRepository { Optional findByAccount(String account); Optional findByEmail(String email); Optional findByAccountAndEmail(String account, String email); } Colored by Color S..
2021.05.17 -
[스프링 부트 어드민 페이지] 2. JPA Repository
Github 코드 JPA JPA는 Java Persistence API로 RDB 데이터베이스 정보를 Java ORM(Object Relational Mapping)으로 활용할 수 있도록 도와주는 라이브러리 입니다. 객체를 매핑시키는 Hibernate도 JPA를 상속한 프레임 워크입니다. JPA의 장점은 Java 객체를 DB와 호환할 수 있다는 점이 두드러지게 나타납니다. 쿼리보다 객체 지향코드에 집중할 수 있게 말이죠. 들어가기에 앞서 Spring Web MVC 패턴 구조를 간략한 도식화로 보겠습니다. DispatcherServlet은 Servlet(웹 서버의 요청-응답 처리방식이 가능하도록 확장해주는 Java 클래스)이 HTTP 요청을 Dispatch(분담시키다) 하는 Web MVC 모델의 Reques..
2021.05.12