본문 바로가기

개발(합니다)/방법론

JPA 사용 시 주의 사항

반응형

1. 설정


    <!-- JPA 설정 ( 엔티티 매니저 팩토리 등록 ) -->

    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />

        <!-- 1) @Entity 탐색 범위 -->
        <property name="packagesToScan"
            value="com.otrodevym" />

        <!-- 2) 하이버네이트 구현체 사용 -->
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>

        <!-- 3) 하이버네이트 상세 설정 -->
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL9Dialect</prop>
                <prop key="hibernate.show_sql">true</prop>
<!-- SQL 보기 -->
                <prop key="hibernate.format_sql">true</prop>
<!-- SQL 정렬해서 보기 -->
                <prop key="hibernate.use_sql_comments">true</prop>
<!-- SQL 주석 보기 -->
                <prop key="hibernate.id.new_generator_mappings">true</prop>
<!-- JPA 표준에 맞게 새로운 키 생성 전략을 사용 -->
                <prop key="hibernate.hbm2ddl.auto">update</prop>
<!-- DDL 자동 생성 -->
                <prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
            </props>
        </property>
    </bean>
    <bean id="transactionManager2"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory"></property>
</bean>

    <jpa:repositories base-package="com.otrodevym.*"
transaction-manager-ref="transactionManager2"/>


create는 매번 생성 후 드랍하므로 상황에 따라 설정해주되 none이나 update를 사용합니다.

<prop key="hibernate.hbm2ddl.auto">update</prop>



org.postgresql.jdbc.PgConnection.createClob()

<prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop> 에러 발생시 false로 설정합니다.




2. 테이블 네이밍 속성 설정

user_id처럼 '_'를 사용하면 jpa에서 인식을 못하는것 같습니다.
postgresql은 대소문자를 모두 소문자로 변경하여 언더바를 사용해서 컬럼명을 정합니다.
jpa도 이에 맞춰 전부 소문자로 변경하는 네이밍 규칙을 따릅니다. 
가독성을 높이기 위해 아래와 같이 설정합니다.




반응형