Java/JPA
JPA 도메인분석설계 @Entity
amungstudy
2023. 11. 9. 22:04
가급적이면 개발자가 클래스로 바로 볼 수 있도록, Column 길이나 index를 다 적어주면 좋겠다.
스프링부트에서는 엔티티의 필드 이름이 orderDate이면 -> order_date 로 관례대로 바꿔줌
@Entity
저장할 필드에 final 사용x
데이터베이스 스키마 자동생성하기
-(운영에서는 절대 create,create-drop,update 사용하면 안됨!)
-테스트서버에서 validate는 괜찮다. (create하면 처음에 drop하고 create하니까 난리남, update도 alter나가서 rock걸림!!! 그럼 장애남....)
- 개발 초기 단계에서는 create또는 update 괜찮음...그래도 가급적이면 쿼리 직접 쓰는걸 권장.
직접 쿼리 짜는거 귀찮으니까 create 문 꼼꼼히 따져보고 쿼리 알맞게 수정해서 쓰는건 ok~~
persistence.xml에 아래 내용 적기
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
create-drop : 테스트 케이스 깔끔하게 할 때 사용.(종료 시점에 DROP해버림)
필드와 컬럼 매핑
@Transient : 캐시데이터 넣을때, 메모리에서만 사용할때 사용(매핑 무시)
nullable = not null 제약조건 추가, 체크해줌.
주인이 아니면 읽기전용이다. (거울이다) @
@OneToMany(mappedBy = "member")
private List<Order> orders = new ArrayList<>();
1:1 access를 많이 하는 곳에 FK를 둔다
전사적으로 테이블 명에 xxx_어쩌고 저쩌고 해야되면
SpringPhysicalNamingStrategy를 구현해서 사용해야한다.
실무에서 setter를 대체할 방법(변경 메서드를 작성해서 변경감지 용이하도록 ....)