사용자 도구

사이트 도구


java:hibernate:configuration

Hibernate Configurations

hibernate.hbm2ddl.auto 프라퍼티

  • create-only : 생성만하고, drop은 하지 않는다. 개발 모드에서 최초에 한 번 이걸로 실행하고, 다음에는 update로 변경하면 될 듯. Hibernate 5.2 이상에서만 지원하는 것으로 보임.
  • create : Session factory가 실행될 때에 스키마를 지우고 다시 생성. 클래스패스에 import.sql 이 존재하면 찾아서, 해당 SQL도 함께 실행함.
  • create-drop : create와 같지만 session factory가 내려갈 때 스키마 삭제. 클래스패스에 import.sql 이 존재하면 찾아서, 해당 SQL도 함께 실행함.
  • update : 시작시, 도메인과 스키마 비교하여 필요한 컬럼 추가 등의 작업 실행. 데이터는 삭제하지 않음.
  • validate : Session factory 실행시 스키마가 적합한지 검사함. 문제가 있으면 예외 발생.
  • 개발시에는 create가, 운영시에는 auto 설정을 빼거나 validate 정도로 두는 것이 좋아 보인다. update로 둘 경우에, 개발자들의 스키마가 마구 꼬여서 결국은 drop 해서 새로 만들어야 하는 사태가 발생한다.

hibernate.use_sql_comments 프라퍼티

  • Native SQL 쿼리로 변환할 때 쿼리에 대한 주석을 함께 달아준다.

hibernate.jdbc.time_zone

settings.put(
    AvailableSettings.JDBC_TIME_ZONE,
    TimeZone.getTimeZone( "UTC" )
);
 
// or
Session session = sessionFactory()
    .withOptions()
    .jdbcTimeZone( TimeZone.getTimeZone( "UTC" ) )
    .openSession();

hibernate.temp.use_jdbc_metadata_defaults

  • DB Sharding 처리를 Spring 차원에서 하고자할 때 hibernate.temp.use_jdbc_metadata_defaults=false로 두어야 한다.
  • Hibernate 4 JdbcServicesImpl.java 주석.
    // 'hibernate.temp.use_jdbc_metadata_defaults' is a temporary magic value.
    		// The need for it is intended to be alleviated with future development, thus it is
    		// not defined as an Environment constant...
    		//
    		// it is used to control whether we should consult the JDBC metadata to determine
    		// certain Settings default values; it is useful to *not* do this when the database
    		// may not be available (mainly in tools usage).
    		boolean useJdbcMetadata = ConfigurationHelper.getBoolean( "hibernate.temp.use_jdbc_metadata_defaults", configValues, true );

hibernate.enable_lazy_load_no_trans=true 금지

hibernate.globally_quoted_identifiers=true

java/hibernate/configuration.txt · 마지막으로 수정됨: 2019/02/07 12:36 저자 kwon37xi