[JPA/Hibernate] persistence.xml ์ค์ ๋ฐฉ๋ฒ
JPA 2.1
hibernate-entitymanager 4.3.10.Final
JPA๋ persistence.xml์ ์ฌ์ฉํด์ ํ์ํ ์ค์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ค.
ํด๋์ค ํจ์ค์ META-INF/persistence.xml ์ ์์ฑํ๋ฉด ๋ณ๋์ ์ค์ ์์ด JPA๊ฐ ์ธ์ํ ์ ์๋ค.
ํ ํ๋ฆฟ
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
version="2.1">
<persistence-unit name="simple-jpa-application">
<properties>
<!-- ์์ฑ ์ค์ -->
</properties>
</persistence-unit>
</persistence>
persistence.xml์ <persistence>๋ก ์์ํ๋ฉฐ xmlns์ ๋ค์ ์คํ์ด์ค, version์ ์ฌ์ฉํ JPA ๋ฒ์ ์ ์ง์ ํ๋ค.
<persistence-unit>์ name์ unit์ ๊ณ ์ ํ ์ด๋ฆ์ ์ค์ ํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฐ๊ฒฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋น ํ๋์ persistence unit์ ๋ฑ๋กํ๋ค.
๊ทธ๋ฆฌ๊ณ <properties> ์๋์ JPA ํ์ค ์์ฑ๊ณผ ํ์ด๋ฒ๋ค์ดํธ ์์ฑ์ ์ค์ ํ๋ค.
ํ์ ์์ฑ
์ผ๋ฐ์ ์ผ๋ก JPA๋ฅผ ์ฌ์ฉํ ๋ ์ค์ ํด์ผํ ํ์ ์์ฑ์ ๋ค์๊ณผ ๊ฐ๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
version="2.1">
<persistence-unit name="simple-jpa-application">
<properties>
<!-- ํ์ ์์ฑ -->
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
</properties>
</persistence-unit>
</persistence>
name์ด javax.persistence๋ก ์์ํ๋ ์์ฑ์ JPA ํ์ค ์์ฑ์ด๋ค.
hibernate๋ก ์์ํ๋ ์์ฑ์ ํ์ด๋ฒ๋ค์ดํธ ์ ์ฉ ์์ฑ์ด๋ค.
javax.persistence.jdbc.driver, user, password, url์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์ค์ ํ๊ณ hirbernate.dialect์ ๋ฐ์ดํฐ๋ฒ ์ด์ค dialect๋ฅผ ์ค์ ํ๋ค.
์์์ ์ค์ ํ ๊ฐ์ธ org.hibernate.dialect.H2Dialect๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค dialect๋ฅผ H2๋ก ์ค์ ํ ๊ฒ์ด๋ค.
ํ์ด๋ฒ๋ค์ดํธ๋ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ dialect ํด๋์ค๋ฅผ ์ ๊ณตํ๋ฏ๋ก ์ฌ์ฉํ๋ DB์ dialect ํด๋์ค๋ฅผ ์ค์ ํ๋ค.
์๋ฅผ ๋ค์ด Oracle 10g๋ฅผ ์ฌ์ฉํ๋ค๋ฉด org.hibernate.dialect.Oracle10gDialect๋ก ์ค์ ํ๋ฉด ๋๋ค.
์ต์
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
version="2.1">
<persistence-unit name="simple-jpa-application">
<properties>
<!-- ํ์ ์์ฑ -->
...
<!-- ์ต์
-->
<!-- ์ฝ์์ ํ์ด๋ฒ๋ค์ดํธ๊ฐ ์คํํ๋ SQL๋ฌธ ์ถ๋ ฅ -->
<property name="hibernate.show_sql" value="true"/>
<!-- SQL ์ถ๋ ฅ ์ ๋ณด๊ธฐ ์ฝ๊ฒ ์ ๋ ฌ -->
<property name="hibernate.format_sql" value="true"/>
<!-- ์ฟผ๋ฆฌ ์ถ๋ ฅ ์ ์ฃผ์(comments)๋ ํจ๊ป ์ถ๋ ฅ -->
<property name="hibernate.use_sql_comments" value="true"/>
<!-- JPA ํ์ค์ ๋ง์ถ ์๋ก์ด ํค ์์ฑ ์ ๋ต ์ฌ์ฉ -->
<property name="hibernate.id.new_generator_mappings" value="true"/>
<!-- ์ ํ๋ฆฌ์ผ์ด์
์คํ ์์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ ์๋ ์์ฑ -->
<property name="hibernate.hbm2ddl.auto" value="create"/>
<!-- ์ด๋ฆ ๋งคํ ์ ๋ต ์ค์ - ์๋ฐ์ ์นด๋ฉ ํ๊ธฐ๋ฒ์ ํ
์ด๋ธ์ ์ธ๋์ค์ฝ์ด ํ๊ธฐ๋ฒ์ผ๋ก ๋งคํ
ex) lastModifiedDate -> last_modified_date -->
<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
</properties>
</persistence-unit>
</persistence>
ํ - hibernate.hbm2ddl.auto ์์ฑ
์ต์ | ์ค๋ช |
create | DROP + CREATE ๊ธฐ์กด ํ ์ด๋ธ์ ์ญ์ ํ๊ณ ์๋ก ์์ฑํ๋ค. |
create-drop | DROP + CREATE + DROP create ์์ฑ์ ์ถ๊ฐ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ข ๋ฃํ ๋ ์์ฑํ DDL์ ์ ๊ฑฐํ๋ค. |
update | ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ๊ณผ ์ํฐํฐ ๋งคํ์ ๋ณด๋ฅผ ๋น๊ตํด์ ๋ณ๊ฒฝ ์ฌํญ๋ง ์์ ํ๋ค. |
validate | ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ๊ณผ ์ํฐํฐ ๋งคํ์ ๋ณด๋ฅผ ๋น๊ตํด์ ์ฐจ์ด๊ฐ ์์ผ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋จ๊ธฐ๊ณ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ์ง ์๋๋ค. ์ด ์ต์ ์ DDL์ ์์ ํ์ง ์๋๋ค. |
none | ์คํค๋ง ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์๋๋ค. hibernate.hbm2ddl.auto ์์ฑ์ ์ญ์ ํ ๊ฒ๊ณผ ๋์ผํ๋ค. |
๐ ์ถ์ฒ ์ ๋ต
๊ฐ๋ฐ ์ด๊ธฐ ๋จ๊ณ : create ๋๋ update
ํ ์คํธ ์๋ฒ : update ๋๋ validate
์ด์ ์๋ฒ : validate ๋๋ none
Entity Class(์ํฐํฐ ํด๋์ค) ์ค์
JPA ๊ตฌํ์ฒด๋ค์ ๋ณดํต ์ํฐํฐ ํด๋์ค๋ฅผ ์๋์ผ๋ก ์ธ์ํ์ง๋ง ํ๊ฒฝ์ ๋ฐ๋ผ ์ธ์ํ์ง ๋ชปํ ๋๋ ์๋ค. ๊ทธ๋๋ <class>์ ์ํฐํฐ ํด๋์ค๋ฅผ ์ค์ ํด์ค๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
version="2.1">
<persistence-unit name="simple-jpa-application">
<!-- ์ํฐํฐ ํด๋์ค -->
<class>com.atoz_develop.Member</class>
<properties>
<!-- ํ์ ์์ฑ -->
...
References
๐ ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ(์์ด์ฝ, 2015, ๊น์ํ)
'Javaยท๏ปฟServletยท๏ปฟJSP > LibraryยทFramework' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AspectJ Weaver] execution ์ง์์ ์ค์ ๋ฐฉ๋ฒ ์ ๋ฆฌ (0) | 2020.04.27 |
---|---|
MyBatis ๋์ SQL - <choose>์ <set>์ ์ฌ์ฉํ์ฌ ๋์ SQL ๋ง๋ค๊ธฐ (1) | 2020.02.26 |
MyBatis์ Log4J ์ฐ๋ํ๊ธฐ (0) | 2020.02.25 |
MyBatis ์ค์ ํ์ผ ์์ฑ ๋ฐฉ๋ฒ (0) | 2020.02.24 |
MyBatis ์ค์ ํ์ผ - SQL Mapper ์์ฑ ๋ฐฉ๋ฒ (6) | 2020.02.23 |
๋๊ธ