이전 포스팅에서 id 프로퍼티를 어느 위치에 선언하는게 좋을지 얘기해봤다. 이번엔 Long 과 Long? 중 어떤걸로 선언할지, 어떤차이가 있는지, 그리고 왜 이런 고민을 하게되는지 얘기해보려한다. # Long? vs Long @Entity @Table(name = "person") class Person( @Column(name = "person_name") val name: String, @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "person_id") val id: Long? = null ) id 값의 생성을 DB 에 위임하는 IDENTITY 방식을 주로 사용할텐데 이 방식을 사용하면 엔티티가 영속화되기 전에는 id..
JPA 유튜브 중에 아래와같은 동영상이 있어 이 문제를 해결해보고자한다. https://www.youtube.com/watch?v=brE0tYOV9jQ&t=156s 먼저 방송에서도 언급하지만 코드베이스는 매우작다. BOOK 엔티티와 BOOK_STORE 엔티티 두개만 존재하고 이 둘은 BOOK(N) : BOOK_STORE(1) 관계이다. @Entity @Getter @Setter public class Book { @Id @GeneratedValue @Column(name = "BOOK_ID") private Long id; @Column(name = "ISBN") private String isbn; @Column(name = "TITLE") private String title; @ManyToOne p..
JPQL 작성 후 파라미터를 매핑하는 방법은 인덱스에 기반한 방법과 이름에 기반한 방법이 있다. 1. 인덱스 매핑@Query("SELECT e FROM Expense e WHERE e.id = ?1") List findById(Long id); spring-data-jpa 를 사용시 id를 이용해 조회하는 쿼리를 자동 생성해주므로 저런식으로 JPQL을 만들필요는 없지만 예제코드임을 기억하자. 이런식으로 인덱스를 사용할 수 있으며 인덱스는 1부터 시작한다. 2번째 파라미터의 경우 ?2 로 매핑해주면 된다. 2. 이름 매핑@Query("SELECT e FROM Expense e WHERE e.id = :#{#id}") List findById(@Param("id") Long id); 이름 기반 매핑의 경우 ..
- Total
- Today
- Yesterday
- generics
- Jackson
- programming
- frontcode
- mariadb
- 정규표현식
- backend개발환경
- http
- frontend개발환경
- toby
- MySQL
- Spring
- OOP
- go-core
- JavaScript Core
- code
- clean code
- Kotlin
- db
- java
- JPA
- spring cloud
- servlet
- Git
- java8
- Design Pattern
- EffectiveJava
- javascript
- TEST
- DesignPattern
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |