일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JPA 공부
- 스프링공부
- 알고리즘공부
- 기술공부
- JPA
- DDD
- 스프링부트
- 스프링
- 자료구조공부
- 플러터 개발
- JPA예제
- 카프카
- 스프링부트공부
- nestjs스터디
- 코테공부
- 코테준비
- 프로그래머스
- nestjs공부
- nestjs
- 플러터 공부
- querydsl
- Kafka
- Flutter
- 스프링 공부
- 자바공부
- JPA스터디
- K8S
- JPA공부
- 기술면접공부
- Axon framework
- Today
- Total
목록JPA예제 (9)
DevBoi
사용을 위한 기본구성 1. JpaFactory package com.practice.demo.config; import com.querydsl.jpa.impl.JPAQueryFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.persistence.EntityManager; @Configuration public class JpaFactory { @Autowired EntityManager em; @Bean ..
우선 구조를 살짝 바꿨다. 인터셉터는 그대로두고 한 메서드에서 로그인 하면 Admin type 에 따라서, 다른 view를 띄워주는 방식으로 모델부분이다. SuperAdmin과 NormalAdmin의 두 부분을 나눠서 make하였다. 생성자를 별도로 만들지 않은 이유, 빌더를 만들지 않은 이유는 JPA에서는 메서드명을 생각없이 지으면 나중에 운영관리하기 빡세기 때문,... 무튼 이제 두가지 화면을 구성해야한다. 1. NormalAdmin으로 사용자 정보를받아서, 디비에 넣는것 2. SuperAdmin으로 들어가면, 사용자 정보에 맞춰서 버튼 누르면 다음 사람에게 알림톡 나가는 것 1번부터 해보자 우선 등록을 완료하면, 등록이 완료한다. User에서 statCd 별로 유저를 관리하고 입장전 10. 입장 후..
1. JoinTable 생성 JoinTable은, 특정 두가지의 엔티티의 매핑관계를 가지는 매핑테이블이라고 이해하면 쉽다. A,B라는 객체가 서로 매핑이 되어있는 경우, 이를 관리하기 위해 매핑테이블을 가지고, 이 매핑 테이블을 보고 두 객체의 매핑관계를 파악한다. 예 ) 카테고리, 아이템 카테고리 객체에서 해당 itemList를 볼수있는, manyto many를 사용해서 이렇게 조인 테이블을 만든다. 그러면 해당 엔티티 객체에서 해당 테이블이 생성이 된다.
연관관계에 대한 매핑 시 주의사항에 대한 공부를 했었고, 해당 공부를 진행하면서 많은 고민을 했었다. 실제로 구현 및 설게를 해보자 Member, Team, order, orderItem에 대한 설게를 해보자. 우선 사전 제약 사항에 대한 설정을 해보자 Member들은 각각의 정보를 가지고있고, 이 Member들에게는 Team의 정보가 포함이 된다. 어떤 Member는 team에 한군데 소속이 될수 있다. 또한 Member가 order들을 가질수있고, 이 order들에게는 orderItem들이 존재할수있다. 마지막으로 orderItem이 order와 item을 이어주는 것이라고생각을 하면 되고, Item은 이 Item에 대한 세부항목 정보이다. 1)Member 해당, memberId는 자동 id 값을 발..
RDB에서는 테이블 별로, 외래키를 매핑하며, 일대 다 혹은 다대다 의 형태를 가진다. 객체의 참조와, 외래키 매핑 관련되서 공부를 해보자 우선 간단한 예로, 팀과, 멤버에 대한 예제를 공부해보자 여러 사람이 한팀에 소속될 수 있다는 1:n관계라고 생각을 해보자 Member 에서는 Team에대한 관계와 조인 컬럼을 설정해준다. Team은 사실 별건없다. Lombok 을 사용해서 Getter,Setter도 직접 달아주었는데, 이건, 너무 불편해서 그냥 쓰기로했다 ㅋㅋ (매번 메소드 귀찮다) 이렇게 만 하면, 자동으로 PK,FK를 매핑해주는 테이블을 생성해준다. 예제 코드를 이렇게 작성해서 한번 테스트 해보자 뭐 잘들어간다. 추가로 위의소스에서 약간 수정한 내용은 PK가 id 자동생성 값일때는 String ..
JPA는 느끼다싶이 객체를 넘겨서 대부분의 데이터작업을 진행한다. 그런데, 쿼리가 복잡하거나, 통계성쿼리가 필요하다면? 이건 객체로 푸는 것보다 쿼리로 푸는것이 맞다. 이때 JPA에서는 JPQL이라는 녀석으로 극복할수있게해준다. 근데, JPQL은 조금 다르다. 예를들어, MEMBER 테이블에서, 해당 대상을 전부 가져오는 걸 생각해보자 테이블 대상이라면, select * from member 뭐 이런식으로나, select id from member 이런식으로, 짠다. jpql도 역시 객체 지향쿼리여도 sql짜듯이 짜면된다. 강점은 언뜻 보기에 두가지 정도가있다. 1. 쿼리를 객체에 맞춰서 짜고, 방언에 따라, mysql,oracle등으로 자동 변환. 2. 페이징 관련 속성 set식으로, 자동 생성 쉽게 ..
Spring boot start app에서, JPA관련 CRUD 조회,생성 저장을 해보자 우선 테이블은 Entity를 사용하고, Pk는 컬럼 별로, Id를 달고, 테이블명이나 컬럼명은 다를 경우, 별도 어노테이션을 통해서 매핑 해주면된다. Member와 user에 대한 테이블 생성이 완료되었을 경우 CRUDrepository 라는 별도로 제공해주는 것을 상속받은 customRepo를 만들고, findAll(조회) save를 통해서,저장을 해본다. app이 실행할때, 해당 메소드가 돌기떄문에, 성공적으로 쿼리가 도는 것을 확인할수있다. 근데 여기서 문제, 데이터 베이스에서 find한 값을가져와서, 속성만 set을 해주면 자동 수정 저장이 될까? 이걸 한번 테스트 해보고싶었다. 특정 조건에 맞는 객체를 가져..
JPA 는 개발자가 SQL을 쓰지 않고, 개발을 할수 있게 해준다. 즉, 객체에 SET,GET을 하는 것으로 SELECT, INSERT 작업을 할수 있게해준다. JPA는, Learning curve가 심해서, 자세히 모르고, 실무에 도입하게 되면 망한당 우선 SQL중심적인 개발이, 현재 중요한 키워드이다. CRUD를 짜고, SQL을 짜고.... 애플리케이션 개발이... 객체 지향인데 SQL에 목을 메게된다. SQL 개발의 문제는..? 1. 필드추가할때 한개의 필드가 추가되면, 전체 SQL이 도는 곳에 전체 필드를 추가해줘야한다. 즉 SQL 의존적 개발을 하게된다. 2. 패러다임의 불일치 객체 지향 프로그래밍은 추상화, 캡슐화, 정보은닉, 상속, 다형성등 많은 걸 지원해준다. 객체와 관계형 데이터 베이스의..
JPA 설정이 기초적인 부분이 완료되었다. 이제 Entity를 생성하고, 재 부팅 해보자. JPA는 객체 지향적 ORM 방식으로 개발할수있도록 도와주는 api중하나이다. 개발자가 쿼리보다는 객체에 신경을 쓸수있도록 도와주고, 충분한 학습이 뒷받침 되면, 아주 좋은 성능을 낸다고한다. 이런식으로 id를 pk로 주고, 재부팅한다, 이렇게 자동적으로 sql에서 생성을 하게된다. ddl-auto 가 update이기때문에, 해당 컬럼을 추가하게 되면 이렇게 반영이된다. @Table , Entity 가 기본적으로 이름이 동일한 테이블을 생성 및 찾지만, 특정 테이블 이름과 매핑할수도있다. @Column(name ="???") 동일한 이름이 아닌, 특정 컬럼이름으로 할수있다. 예) 아 우선 그전에, 자동 재기동을 a..