JPA 구성에서 기본 스키마 이름을 설정하는 방법은?
동면 설정 파일에서 우리가 매개변수를 설정할 수 있다는 것을 발견했습니다.hibernate.default_schema:
<hibernate-configuration>
<session-factory>
...
<property name="hibernate.default_schema">myschema</property>
...
</session-factory>
</hibernate-configuration>
지금은 JPA를 사용하고 있는데 저도 그렇게 하고 싶습니다.그렇지 않으면 매개 변수를 추가해야 합니다.schema각 @Table 주석에 다음과 같이 입력합니다.
@Entity
@Table (name = "projectcategory", schema = "SCHEMANAME")
public class Category implements Serializable { ... }
이 매개 변수는 이 구성 부분의 어딘가에 있어야 한다는 것을 알고 있습니다.
<bean id="domainEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="JiraManager"/>
<property name="dataSource" ref="domainDataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="false"/>
<property name="showSql" value="false"/>
<property name="databasePlatform" value="${hibernate.dialect}"/>
</bean>
</property>
</bean>
<bean id="domainDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${db.driver}" />
<property name="jdbcUrl" value="${datasource.url}" />
<property name="user" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
<property name="initialPoolSize" value="5"/>
<property name="minPoolSize" value="5"/>
<property name="maxPoolSize" value="15"/>
<property name="checkoutTimeout" value="10000"/>
<property name="maxStatements" value="150"/>
<property name="testConnectionOnCheckin" value="true"/>
<property name="idleConnectionTestPeriod" value="50"/>
</bean>
... 구글에서 이름을 찾을 수 없습니다.무슨 생각 있어요?
이것에 대한 JPA 재산에 대해서도 모릅니다.하지만 하이버네이트 속성(하이버네이트를 프로바이더로 사용한다고 가정)을 추가할 수 있습니다.
...
<property name="hibernate.default_schema" value="myschema"/>
...
동면자가 그걸 집어들어야 합니다.
게시물에 오는 사람들의 시간을 절약하기 위해(나처럼 Spring config type을 찾고 스키마 이름을 외부 소스(속성 파일)로 설정하기를 원하는 사람).이 구성은 다음과 같습니다.
<bean id="domainEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="JiraManager"/>
<property name="dataSource" ref="domainDataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="false"/>
<property name="showSql" value="false"/>
<property name="databasePlatform" value="${hibernate.dialect}"/>
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">none</prop>
<prop key="hibernate.default_schema">${yourSchema}</prop>
</props>
</property>
</bean>
Ps : 동면.hdm2ddl.auto, hibernate hbm2ddl 게시물을 확인할 수 있습니다.자동으로 가능한 값과 그들이 무엇을 합니까?create-update가 편리해서 설정해두었습니다.하지만 생산에 있어서는 ddl을 관리하는 것이 좋다고 생각하기 때문에 ddl이 자동으로 생성되고 업데이트되도록 하는 것보다 처음에 생성되는 ddl이 무엇이든 가져가 저장합니다.
spring-boot, java 기반 구성을 사용하는 다른 사람들은
application.properties에서 스키마 값을 설정합니다.
spring.jpa.properties.hibernate.dialect=...
spring.jpa.properties.hibernate.default_schema=...
JPA Entity Java Class에서 hardcoding 스키마를 사용하지 않기 위해 Oracle Application Server10(OC4J, Orion)에 배포된 Java EE 애플리케이션에서 orm.xml 매핑 파일을 사용했습니다.persistence.xml뿐만 아니라 model.jar/META-INF/에도 있습니다.매핑 파일 또는 m.xml은 태그가 있는 perresistence.xml에서 참조됩니다.
...
<persistence-unit name="MySchemaPU" transaction-type="JTA">
<provider>...</provider>
<mapping-file>META-INF/orm.xml</mapping-file>
...
파일 orm.xml 내용은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
version="1.0">
<persistence-unit-metadata>
<persistence-unit-defaults>
<schema>myschema</schema>
</persistence-unit-defaults>
</persistence-unit-metadata>
</entity-mappings>
스프링 부트의 마지막 버전을 사용하는 사용자는 다음과 같은 이점을 얻을 수 있습니다.
.properties:
spring.jpa.properties.hibernate.default_schema=<name of your schema>
.yml:
spring:
jpa:
properties:
hibernate:
default_schema: <name of your schema>
'와 '에 값을 설정해야 했습니다.
spring:
jpa:
properties:
hibernate:
default_schema: '"schema"'
사용합니다.
@Table (name = "Test", schema = "\"schema\"")
대신에@Table (name = "Test", schema = "schema")
postgresql에 있는 경우 요청은 다음과 같습니다.
SELECT * FROM "schema".test
없음:
SELECT * FROM schema.test
PS: 테스트는 표입니다.
사용하시는 경우(org.springframework.jdbc.datasource.DriverManagerDataSource)인에ApplicationContext.xml데이터베이스 세부 정보를 지정하려면 아래 단순 속성을 사용하여 스키마를 지정합니다.
<property name="schema" value="schemaName" />
언급URL : https://stackoverflow.com/questions/2737420/how-to-set-up-default-schema-name-in-jpa-configuration
'programing' 카테고리의 다른 글
| 사용자 지정 개체를 소포 가능하게 하려면 어떻게 해야 합니까? (0) | 2023.09.06 |
|---|---|
| 텍스트 파일에서 특정 문자열 찾기 (0) | 2023.09.06 |
| MySQL에서 문자열을 실행할 수 있습니까? (0) | 2023.09.06 |
| VBA에서 HTTP 요청을 시도할 때 "적절한 개체가 없으면 메서드가 유효하지 않습니다" 오류가 발생합니까? (0) | 2023.06.13 |
| '스위프' 기능 사용 방법 (0) | 2023.06.13 |