[JPA] 연관관계 매핑
RDB에서는 테이블 별로, 외래키를 매핑하며, 일대 다 혹은 다대다 의 형태를 가진다. 객체의 참조와, 외래키 매핑 관련되서 공부를 해보자 우선 간단한 예로, 팀과, 멤버에 대한 예제를 공부해보자 여러 사람이 한팀에 소속될 수 있다는 1:n관계라고 생각을 해보자 Member 에서는 Team에대한 관계와 조인 컬럼을 설정해준다. Team은 사실 별건없다. Lombok 을 사용해서 Getter,Setter도 직접 달아주었는데, 이건, 너무 불편해서 그냥 쓰기로했다 ㅋㅋ (매번 메소드 귀찮다) 이렇게 만 하면, 자동으로 PK,FK를 매핑해주는 테이블을 생성해준다. 예제 코드를 이렇게 작성해서 한번 테스트 해보자 뭐 잘들어간다. 추가로 위의소스에서 약간 수정한 내용은 PK가 id 자동생성 값일때는 String ..
[JPA] JPA 영속 컨텍스트
JPA는 느끼다싶이 객체를 넘겨서 대부분의 데이터작업을 진행한다. 그런데, 쿼리가 복잡하거나, 통계성쿼리가 필요하다면? 이건 객체로 푸는 것보다 쿼리로 푸는것이 맞다. 이때 JPA에서는 JPQL이라는 녀석으로 극복할수있게해준다. 근데, JPQL은 조금 다르다. 예를들어, MEMBER 테이블에서, 해당 대상을 전부 가져오는 걸 생각해보자 테이블 대상이라면, select * from member 뭐 이런식으로나, select id from member 이런식으로, 짠다. jpql도 역시 객체 지향쿼리여도 sql짜듯이 짜면된다. 강점은 언뜻 보기에 두가지 정도가있다. 1. 쿼리를 객체에 맞춰서 짜고, 방언에 따라, mysql,oracle등으로 자동 변환. 2. 페이징 관련 속성 set식으로, 자동 생성 쉽게 ..
[JPA] 기초 CRUD 사용 해보자
Spring boot start app에서, JPA관련 CRUD 조회,생성 저장을 해보자 우선 테이블은 Entity를 사용하고, Pk는 컬럼 별로, Id를 달고, 테이블명이나 컬럼명은 다를 경우, 별도 어노테이션을 통해서 매핑 해주면된다. Member와 user에 대한 테이블 생성이 완료되었을 경우 CRUDrepository 라는 별도로 제공해주는 것을 상속받은 customRepo를 만들고, findAll(조회) save를 통해서,저장을 해본다. app이 실행할때, 해당 메소드가 돌기떄문에, 성공적으로 쿼리가 도는 것을 확인할수있다. 근데 여기서 문제, 데이터 베이스에서 find한 값을가져와서, 속성만 set을 해주면 자동 수정 저장이 될까? 이걸 한번 테스트 해보고싶었다. 특정 조건에 맞는 객체를 가져..
[JPA] JPA 기초 개념공부
JPA 는 개발자가 SQL을 쓰지 않고, 개발을 할수 있게 해준다. 즉, 객체에 SET,GET을 하는 것으로 SELECT, INSERT 작업을 할수 있게해준다. JPA는, Learning curve가 심해서, 자세히 모르고, 실무에 도입하게 되면 망한당 우선 SQL중심적인 개발이, 현재 중요한 키워드이다. CRUD를 짜고, SQL을 짜고.... 애플리케이션 개발이... 객체 지향인데 SQL에 목을 메게된다. SQL 개발의 문제는..? 1. 필드추가할때 한개의 필드가 추가되면, 전체 SQL이 도는 곳에 전체 필드를 추가해줘야한다. 즉 SQL 의존적 개발을 하게된다. 2. 패러다임의 불일치 객체 지향 프로그래밍은 추상화, 캡슐화, 정보은닉, 상속, 다형성등 많은 걸 지원해준다. 객체와 관계형 데이터 베이스의..