본문 바로가기

Spring/jpa

(12)
[spring data jpa] - 프로젝트 셋팅, 맵핑 스프링 부트 스타터 jpa 에는 하이버네이트 v5와 jpa v2 의존성이 있다. Jpa 기반으로 쓸 수 도 있고 하이버네이트 기반으로 쓸수도있지만, 우리는 둘 다 직접적으로 쓸 수 없다. 우리는 스프링 데이터 jpa 를 사용하는경우가 대부분이다. spring-boot-starter-data-jpa 의존성이 추가 되었을때 가장 핵심적인게 db 커넥션 풀도 설정이 된다. 어떤 db 에 붙는지 커넥션 정보를 줘야한다 로 url 과 인증정보를 입력하면 된다. 그리고 하이버네이트 정보가 필요하다 ddl-auto=create 를 주면 어플리케이션 구동 때마다 새로운 스키마를 생성한다. 개발할 땐 저렇게 쓰는게 좋고, 실제로는 validate 를 줘서 쓰는게 좋다. 새로 만들지 않고 검증만 하는것, 이제 객체를 만들..
[spring data jpa] - ORM 패러다임 불일치 ORM 이 해결하려는 문제들을 봐보자 객체와 테이블 간의 영속화를 하려고 할땐 사실 여러가지 문제점들이 있다. 객체와 릴레이션 간에 잘 맞지 않는 부분들이 있는데 이부분들을 봐보자 밀도 문제 다양하게 객체를 만들수있고 타입들도 커스텀하게 만들 수 있다. 하지만 릴레이션에서는 크게 딱 2가지 밖에 없다. 테이블과 릴레이션들의 타입뿐이다. Integer, varchar 같이. UserDefinedType 을 만들어서 Address 처럼 만들 순 있지만 비추천이다. 서브타입 문제 객체 에서는 상속 구조를 만들기 쉽고 다형성을 이용해 참조 할 수도 있다. 하지만 테이블에서는 상속이라는게 없다 ORM 에서는 이 문제도 해결방법을 제공해준다. 식별성 문제 관계의 문제 객체에서 User 라는 객체의 관계를 만들었다...
[spring data jpa] - ORM 도메인 모델을 사용하는 코드를 Object 라 한다. 객체를 자동으로 sql 데이터베이스의 테이블에 영속화를 시켜주는 것 도메인 모델 기반으로 코딩 할 수 있다. 훨씬 객체지향 프로그래밍을 하기 수월해진다. 여러 디자인 패턴들을 사용가능해지고 코드 재사용성도 좋고 비즈니스 로직에 집중하기 좋다. 테스트 코드 짜기도 좋다 ORM은? 클래스와 sql DB 테이블 사이의 맵핑 정보를 기술한 메타데이터를 사용해 자바 어플리케이션의 객체를 테이블에 자동으로 영속화 시켜주는 기술이다. ORM 사용의 장점은? 생산성 - 하이버네이트에서 사용을 하면 정말 쉽게 정의만하면 데이터를 가져오기 너무 편해진다. 로직만 보이게 되면서 테스트 코드도 짜기 쉬워진다. 성능 - sql 단건만 보면 sql 보다 느릴수있다. 하지만, ..
spring data jpa - 관계형 데이터베이스 관계형 데이터베이스 JDBC 를 사용해 데이터베이스에 접속해 데이터를 가져온다. 어플리케이션의 데이터를 persistent (영속성) 어딘가에 저장해놓고 어플리케이션이 뻗어도 데이터가 유지되어야 해야한다. 이번엔 관계형 데이터베이스에 넣고 조회하는 방법을 써보자 JDBC - 데이터소스 / drivermanager - 컨넥션 - preparedStatement driverManager 를 다운받고 , db url 주소와 인증정보를 통해 connection 을 맺을 수 있다. preparedStatement 를 통해 DDL, DML 을 실행 시킬 수 있다. 이 방법을 쓰면 사실 굉장히 번거롭다 ResultMap 에서 꺼내 객체에 맵핑을 시켜줘야하고,, 코드 상으로 복잡해진다. 커넥션을 만드는 비용이 굉장히 ..