반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 스프링 컨테이너
- TCP/IP 4계층
- 자바의 면접
- 팩토리패턴
- 팩토리 패턴
- 옵저버 패턴
- try-catch
- 기본형 매개변수
- 스프링 싱글톤
- 싱글톤 패턴
- 백준 2164
- www.naver.com치면 발생하는일
- 쇠막대기
- k번째큰수
- 네트워크
- 참조형 반환타입
- 전략 패턴
- 백준 1935
- removeAll
- 참조형 매개변수
- 후위표기식
- @Tranctional
- 포워드 프록시
- 스프링
- SOLID원칙
- 스프링 빈
- mvvm패턴
- 리버스 프록시
- Class Loader
- 빈 타입 조회
Archives
- Today
- Total
스파이더 웹 개발
JPA 기타 잡담 본문
728x90
반응형
JPA 설계시 가장 객체지향스럽게 설계하는 것은 엔티티 안에서 비즈니스 로직을 구현하는 것이다
setter, getter를 사용하여 외부에서사용하는 것이 아니다
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "dtype")
@Getter @Setter
public abstract class Item {
@Id
@GeneratedValue
@Column(name = "item_id")
private Long id;
private String name;
private int price;
private int stockQuantity;
@ManyToMany(mappedBy = "items")
private List<Category> categories = new ArrayList<>();
//비즈니스 로직
//재고수량 증가로직
public void addStock(int quantity){
this.stockQuantity += quantity;
}
public void removeStock(int quantity){
int restStock = this.stockQuantity - quantity;
if (restStock<0){
throw new NotEnoughStockException("need more stock");
}
this.stockQuantity=restStock;
}
}
위의 예제처럼 재고수량 증가와 감소 로직을 엔티티 안에서 구현하는 것이다
변경감지와 병합
변경 감지 기능은 원하는 속성만 선택해서 변경할 수 있으나, 병합을 사용하면 모든 내용이 변경된다
그렇깅 변경감지를 사용해야한다
728x90
반응형
'JPA' 카테고리의 다른 글
API + JPA (0) | 2022.09.28 |
---|---|
엔티티 설계시 주의점 (0) | 2022.09.19 |
객체 지향 쿼리 언어 - 2 (0) | 2022.09.17 |
객체 지향 쿼리 언어 (0) | 2022.09.16 |
값 타입 (0) | 2022.09.16 |
Comments