사용자 도구

사이트 도구


springframework:springboot:jpa

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
마지막 판 양쪽 다음 판
springframework:springboot:jpa [2018/07/05 14:10]
kwon37xi
springframework:springboot:jpa [2021/08/04 14:42]
kwon37xi [Open Entity Manager In View / Open Session In View (OSIV) 끄기]
줄 2: 줄 2:
   * [[springframework:springboot|SpringBoot]] & [[java:jpa|JPA]]   * [[springframework:springboot|SpringBoot]] & [[java:jpa|JPA]]
  
 +===== Open Entity Manager In View / Open Session In View (OSIV) 끄기 =====
 +  * OSIV는 항상 끄자.
 +<code>
 +spring.jpa.open-in-view: false
 +</code>
 +  * ''spring.jpa.open-in-view=false'' 는 ''JpaProperties'' 선언을 전혀 다르게 ''myapp.jpa'' 로 했더라도, **무조건 ''spring.jpa'open-in-view''로 해야한다.**
 +
 +<code java>
 +// SpringBoot 2.1 의 org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.JpaWebConfiguration 참조.
 +
 +@ConditionalOnProperty(prefix = "spring.jpa", name = "open-in-view", havingValue = "true", matchIfMissing = true)
 +protected static class JpaWebConfiguration {
 +</code>
 ===== 별도 설정하기 ===== ===== 별도 설정하기 =====
  
줄 51: 줄 64:
         use_sql_comments: true         use_sql_comments: true
         hbm2ddl.auto: update         hbm2ddl.auto: update
 +</code>
 +
 +
 +===== Naming Strategy =====
 +  * 현재 Spring boot 버전에 [[http://stackoverflow.com/questions/25283198/spring-boot-jpa-column-name-annotation-ignored|@Column(name="")이 안먹는 버그]]가 존재하는 것으로 보임.
 +  * 그 외에 버그가 해결된 버전에서도 기본적으로 Spring 자체의 Naming Strategy를 사용하는데 이게 자동으로 이름을 변환해버리다 보니 의도에 맞지 않게 작동할 수 있음. 차라리 Hibernate 기본을 사용하고 항상 Table, Column 이름을 명시해주는게 편하다.
 +  * [[https://github.com/spring-projects/spring-boot/issues/2129| @Column with name attribute not working property on entities]]
 +  * 해결책은 naming strategy를 직접 지정해 줄 것<code>
 +// Hibernate 4
 +spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
 +// or
 +spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.DefaultNamingStrategy
 +
 +// Hibernate 5
 +spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
 +spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl
 </code> </code>
springframework/springboot/jpa.txt · 마지막으로 수정됨: 2021/08/04 14:42 저자 kwon37xi