일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- springMVC
- appleM1
- restful api
- String
- Postman
- CloutNative
- SQL
- pagination
- VUE
- 이클립스
- 스프링에러
- MySQL
- offset
- wappalyzer
- NullPointerException
- Java
- MySQL시작하기
- MYSQL에러
- Seek_Keyset
- 우분투에war배포
- Lombok
- K8S
- intellij
- spring
- minikube
- gradle
- windows10
- frontend
- DB생성
- SpringBoot
- Today
- Total
목록Spring & Spring Boot (24)
미운 오리 새끼의 우아한 개발자되기
1. 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저 팩토리 : 엔티티 매니저를 만드는 공장. 공장을 만드는 비용은 상당히 크기 때문에 애플리케이션 전체에서 공유하도록 설계됨. 엔티티 매니저: 엔티티를 관리하는 관리자. 공장에서 엔티티 매니저를 생성하는 비용은 거의 들지 않는다. 엔티티 매니저 팩토리는 여러 스레드가 동시에 접근해도 안전하므로 다른 스레드 간에 공유해도 되지만, 엔티티 매니저는 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 절대 스레드간 공유 x 2. 영속성 컨텍스트 영속성 컨텍스트: 엔티티를 영구 저장하는 환경. 영속성 컨텍스트는 엔티티 매니저를 생성할 때 하나 만들어 진다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근할 수 있고, 관리할 수 있다. 3. 엔티티의 생명주기..
1. 식별 관계 vs. 비식별 관계 - 식별 관계 식별관계는 부모 테이블의 기본 키를 내려받아 자식 테이블의 기본 키 + 외래 키로 사용하는 관계. - 비식별 관계 비식별 관계는 부모 테이블의 기본 키를 받아서 자식 테이블의 외래 키로만 사용하는 관계. 비식별 관계는 외래 키에 NULL 을 허용하는 지에 따라 필수적 비식별 관계와 선택적 비식별 관계로 나뉨. 필수적 비식별 관계(Mandatory): 외래 키에 NULL 허용 x. 연관관계가 필수적으로 맺어져야함. 선택적 비식별 관계(Optional): 외래 키에 NULL 을 허용. 연관관계를 맺을 지 말지 선택가능. 최근에는 비식별관계를 주로 사용하고, 꼭 필요한 곳에만 식별 관계를 사용하는 추세. 1.2. 복합 키: 비식별 관계 매핑 JPA 에서 식별자..
(1) 상속관계 매핑은 부모 클래스와 자식 클래스를 모두 DB 테이블과 매핑한 것. 부모 클래스는 테이블과 매핑하지 않고 부모 클래스를 상속받는 자식 클래스에게 매핑 정보만 제공하고 싶으면 @MappedSuperclass 를 사용하면 됨. 실제 DB 테이블과 매핑되는 @Entity 와는 다르게 @MappedSuperclass 는 단순히 매핑 정보를 상속할 목적으로만 사용 됨. @MappedSuperclass public abstract class BaseEntity { @Id @GeneratedValue private Long id; private String name; ... } @Entity public class Member extends BaseEntity { // ID 상속 // NAME 상속 ..
상속 관계 매핑: 객체의 상속 관계를 DB 에 어떻게 매핑하는지 다룸. @MappedSuperclass: 여러 엔티티에서 공통으로 사용하는 매핑 정보만 상속받고 싶을 때 사용. 복합 키와 식별 관계 매핑: 식별자가 하나 이상일 때 매핑하는 방법과 DB 에서 말하는 식별관계와 비식별 관계에 대해 다룸. 조인 테이블: 외래 키로 연관관계를 맺을 수 있지만, 연관관계를 관리하는 연결 테이블을 두는 방법에 대해 다룸. 엔티티 하나에 여러 테이블 매핑하기: 보통 엔티티 하나에 한 테이블을 매핑하지만 엔티티 하나에 여러 테이블을 매핑하는 방법을 다룸. 1. 상속 관계 매핑 보통 BD 에는 상속이라는 개념이 없고, '슈퍼타입 서브타입 관계'라는 모델링 기법이 객체의 상속 개념과 가장 유사하다. ORM 에서 말하는 상..
일대일 관계는 양쪽이 서로 하나의 관계를 가진다. 예를 들어 회원은 하나의 사물함을 가지고, 사물함은 하나의 회원에 의해 사용된다. 고로, 일대다와 다대일에서 항상 다(N) 쪽이 FK 를 가졌으나, 일대일 관계에서는 FK 가 어디에 있든 상관없다. 주(main) 테이블이든 대상 테이블이든 FK 하나만 있으면 양쪽을 조회할 수 있다. 1.1. 주 테이블에 외래키 아래는 일대일 단방향, 주 테이블에 외래키가 있는 예제 코드이다. @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String username; @OneToOne @JoinColumn(name = "LOCKER_I..
일대다 관계는 다대일 관계의 반대방향이다. 1.1. 일대다 단방향 [1:N] 하나의 팀(1)은 여러 회원(N) 을 참조할 수 있음 -> 일대다 그리고 팀은 회원을 참조하지만, 회원은 팀을 참조하지 않음 -> 단방향 근데 일대다 단방향이 특이한 점이, DB 테이블에서 FK 는 항상! 다 쪽에서 관리를 한다. 근데 이 경우는 단방향이기 때문에 다 쪽인 Member에서는 FK 를 관리할 필드가 없다. 그래서 일 쪽에서 다 쪽의 FK 를 관리해야하는 특이한 모습이 나타난다. @Entity public class Team { @Id @GeneratedValue @Column(name = "TEAM_ID") private Long id; private String name; @OneToMany @JoinColumn..
엔티티의 연관관계를 매핑할 때 주의할 사항 3가지 다중성 - 다대일, 일대다, 일대일, 다대다 단방향, 양방향 연관관계의 주인 1. 다대일 다대일 관계의 반대방향은 항상 일대다 관계다. DB 테이블의 일(1) 대 다(N) 관계에서 외래 키는 항상 다(N) 쪽에 있다. 따라서 객체 양방향 관계에서 연관관계의 주인은 항상 다(N) 쪽이다. 1. 1. 다대일 단방향[N:1] @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private String id; private String username; // 연관관계 매핑 @ManyToOne // 다(Member)대일(Team) @JoinColumn(name = "TEAM_..
1. 양방향 연관관계 양방향 연관관계란 다음과 같다 회원 -> 팀 팀 -> 회원 2. 양방향 연관관계의 매핑 @Entity public class Member { @Id @Column(name = "MEMBER_ID") private Long id; private String username; // 연관관계 매핑 @ManyToOne // 다(Member)대일(Team) @JoinColumn(name = "TEAM_ID") // 외래키를 매핑할 때 쓰는 annotation. 매핑할 외래키 이름을 씀 private Team team; // 연관관계 설정 public void setTeam(Team team) { this.team = team; } // Getter, Setter... } @Entity pub..
1. 연관관계 매핑을 이해하기 위한 기초 방향(Direction): [단방향, 양방향] 다중성(Muliplicity) : [다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)] 연관관계의 주인(Owner): 객체를 양방향 연관관계로 만들려면 연관관계의 주인을 정해야함 2. 단방향 연관관계 객체 연관관계 vs. 테이블 연관관계 객체는 참조(Reference)로 연관관계를 맺음 -> 참조를 통한 연관관계는 언제나 단방향임. 즉, 양뱡향이라는 것도 서로 다른 단뱡향 2개를 양방향으로 보이게 만드는 것 테이블은 외래 키(Foreign Key)로 연관관계를 맺음 // 단방향 class A { B b; } class B { } // 양방향 class A { B b; } class B { A a; ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dZGYsc/btrUWSgGOHW/W1xzCi8ObkeXGykkVNjiU0/img.png)
제목은 특정 URL 만 제외하여 필터링하기라고 썼지만.. 내가 쓴 방법은 일단 Filter에는 들어가는데 Filter 안에 로직을 타지 않도록 하여 Servlet Container 로 넘기는 방법이다. Spring 의 구조는 이러하다. 나의 경우에는 JWT 로 인증/인가를 하고 있어서 JWT Filter 를 두었고, JWT 안에 있는 사용자 정보를 Controller 에서 추출하여 사용하고 싶어서 Spring Security 를 적용하였다. 내가 현재 만들고 있는 API 중에 /notifications 로 시작하는 endpoint 가 있다. /notifications GET -- /{code} POST -- /{code} GET -- /count 이렇게 3개의 endpoint 가 있는데 마지막 /coun..