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를 대체할 방법(변경 메서드를 작성해서 변경감지 용이하도록 ....)

https://yoonbing9.tistory.com/28