@Transient ํด๋น ํ๋๋ฅผ ์์ ๋์์์ ์ ์ธ์ํฌ ๋ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ์ง ์๊ณ ์กฐํํ์ง๋ ์์ต๋๋ค. ๊ฐ์ฒด์ ์์๋ก ์ด๋ค ๊ฐ์ ๋ณด๊ดํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. @Entity public class Member { @Id private String id; private Stirng username; private Stirng password; @Trasient private Stirng checkPassword; } ๐ Reference ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ - ์ธํ๋ฐ | ๊ฐ์ JPA๋ฅผ ์ฒ์ ์ ํ๊ฑฐ๋, ์ค๋ฌด์์ JPA๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ธฐ๋ณธ ์ด๋ก ์ด ๋ถ์กฑํ์ ๋ถ๋ค์ด JPA์ ๊ธฐ๋ณธ ์ด๋ก ์ ํํํ๊ฒ ํ์ตํด์ ์ด๋ณด์๋ ์ค๋ฌด์์ ์์ ์๊ฒ JPA๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค., ๋ณธ..
๐๏ธ Spring
@Basic ์๋ฐ์ ๊ธฐ๋ณธ ํ์
์ ๋ช
์์ ์ผ๋ก ๋งคํํด์ฃผ๋? ์ ๋
ธํ
์ด์
์
๋๋ค. ๊ฑฐ์ ์ฌ์ฉํ ์ผ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ค๋ช
The simplest type of mapping to a database column. The Basic annotation can be applied to a persistent property or instance variable of any of the following types: Java primitive types, wrappers of the primitive types, String, java.math.BigInteger, java.math.BigDecimal, java.util.Date, java.util.Calendar, java.sql.Date, java.sql.Ti..
@Lob ๋ฐ์ดํฐ๋ฒ ์ด์ค์ BLOB, CLOB ํ์
๊ณผ ๋งคํํฉ๋๋ค. @Lob์๋ ์ง์ ํ ์ ์๋ ์์ฑ์ด ์์ต๋๋ค. ๋์ ์ ๋งคํํ๋ ํ๋ ํ์
์ด ๋ฌธ์๋ฉด CLOB์ด๊ณ , ๋๋จธ์ง๋ BLOB์ผ๋ก ๋งคํ๋ฉ๋๋ค. (Lob์ Large Object์ ์ค์๋ง์
๋๋ค) CLOB : ๋ฌธ์ ๋ํ ๊ฐ์ฒด, BLOB : ์ด์ง ๋ํ ๊ฐ์ฒด (์ด๋ฏธ์ง, ๋์์ ๋ฑ๋ฑ) @Lob ์ฃผ์์ @Basic ํน์ @ElementCollection ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. Mysql์ TEXT ๋งคํํ๋ ๋ฒ @Column(columnDefinition = "TEXT") Reference ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ - ์ธํ๋ฐ | ๊ฐ์ JPA๋ฅผ ์ฒ์ ์ ํ๊ฑฐ๋, ์ค๋ฌด์์ JPA๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ธฐ๋ณธ ์ด๋ก ์ด ๋ถ์กฑํ์ ๋ถ๋ค์ด JPA์ ๊ธฐ๋ณธ ์ด๋ก ์ ํ..
์์์ ์์ ์๋ฐ 8๋ถํฐ LocalDate, LocalDateTime์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ด๋ฒ๋ค์ดํธ ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๋ค๋ฉด, @Temporal ์ด๋
ธํ์ด์
์ ์๋ตํ์ฌ๋ LocalDate์ LocalDateTime์ ์ฌ์ฉํ ์ ์์ต๋๋ค. @Entity public class Member{ @Id private Long id; private LocalDateTime createdDate; } @Temporal ๋ ์ง ํ์
(java.util.Date, java.util.Calendar)์ ๋งคํํ ๋ ์ฌ์ฉํฉ๋๋ค. ์๋ฐ์ Date ํ์
์๋ ๋
์์ผ ์๋ถ์ด๊ฐ ์์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ date(๋ ์ง), time(์๊ฐ), timestamp(๋ ์ง์ ์๊ฐ)๋ผ๋ ์ธ ๊ฐ์ง ํ์
์ด ๋ณ๋๋ก ์กด์ฌํฉ๋๋ค. @Temporal์ ์๋ตํ..
@Enumerated ์๋ฐ์ enum ํ์
์ ๋งคํํ ๋ ์ฌ์ฉํฉ๋๋ค. ์์ฑ ์์ฑ ๊ธฐ๋ฅ ๊ธฐ๋ณธ๊ฐ value EnumType.ORDINAL : enum ์์๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ EnumType.STRING : enum ์ด๋ฆ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ EnumType.ORDINAL ๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด EnumType.STRING์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์์ enum RoleType { ADMIN, USER } @Enumerated(EnumType.STRING) private RoleType roleType; EnumType.ORDINAL enum์ ์ ์๋ ์์๋๋ก, ADMIN์ 0, USER์ 1๊ฐ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ฉ๋๋ค. ์ฅ์ : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ์์ต๋๋ค. ๋จ์ : ์ด๋ฏธ ์ ์ฅ๋ enum์..
๐ง @Column @Column์ ๊ฐ์ฒด ํ๋๋ฅผ ํ
์ด๋ธ์ ์ปฌ๋ผ์ ๋งคํ์์ผ์ฃผ๋ ์ด๋
ธํ
์ด์
์
๋๋ค. ์์ฑ ์์ฑ ๊ธฐ๋ฅ ๊ธฐ๋ณธ๊ฐ name ํ๋์ ๋งคํํ ํ
์ด๋ธ์ ์ปฌ๋ผ ์ด๋ฆ์ ์ง์ ํ๋ค. ๊ฐ์ฒด์ ํ๋ ์ด๋ฆ insertable (๊ฑฐ์ ์ฌ์ฉํ์ง ์์) ์ํฐํฐ ์ ์ฅ ์ ์ด ํ๋๋ ๊ฐ์ด ์ ์ฅํ๋ค. false๋ก ์ค์ ํ๋ฉด ์ด ํ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ์ง ์๋๋ค. false ์ต์
์ ์ฝ๊ธฐ ์ ์ฉ์ผ ๋ ์ฌ์ฉํ๋ค true updateable ์ํฐํฐ ์์ ์ ์ด ํ๋๋ ๊ฐ์ด ์์ ํ๋ค. false๋ก ์ค์ ํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ ํ์ง ์๋๋ค. false ์ต์
์ ์ฝ๊ธฐ ์ ์ฉ์ผ ๋ ์ฌ์ฉํ๋ค true table (๊ฑฐ์ ์ฌ์ฉํ์ง ์์) ํ๋์ ์ํฐํฐ๋ฅผ ๋ ๊ฐ ์ด์์ ํ
์ด๋ธ์ ๋งคํํ ๋ ์ฌ์ฉํ๋ค.(@SecondaryTable ์ฌ์ฉ) ์ง์ ํ ํ๋๋ฅผ ๋ค๋ฅธ ํ
..
@Entity JPA์์ ์ํฐํฐ๋ ์ฝ๊ฒ ์๊ฐํ๋ฉด, DB ํ
์ด๋ธ์ ๋์ํ๋ ํ๋์ ํด๋์ค๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค. @Entity๊ฐ ๋ถ์ ํด๋์ค๋ JPA๊ฐ ๊ด๋ฆฌํด์ฃผ๋ฉฐ, JPA๋ฅผ ์ฌ์ฉํด์ DB ํ
์ด๋ธ๊ณผ ๋งคํํ ํด๋์ค๋ @Entity๋ฅผ ๊ผญ ๋ถ์ฌ์ผ๋ง ๋งคํ์ด ๊ฐ๋ฅํฉ๋๋ค. @Entity๋ฅผ ์ฌ์ฉํ ๋๋ ๋ช๊ฐ์ง ์ฃผ์์ฌํญ์ด ์์ต๋๋ค. ์ฃผ์์ฌํญ ์ ๊ทผ ์ ์ด์๊ฐ public ํน์ protected ์ธ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ํ์์
๋๋ค. ๊ตฌํ์ฒด์ ๋ฐ๋ผ ๋๋ ๊ฒ๋ ์์ผ๋, ์คํ์ ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ํด๋์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. final ํด๋์ค, enum, interface, inner ํด๋์ค์๋ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค ์ ์ฅํ๋ ค๋ ์์ฑ์ final์ด๋ฉด ์๋ฉ๋๋ค. ๊ตฌํ์ฒด์ ๋ฐ๋ผ ๋๋ ๊ฒ๋ ์์ผ๋, ์คํ์ ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ํด๋์..
ํ๋ฌ์ ์์์ฑ ์ปจํ
์คํธ(Persistence Context)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋๊ธฐํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ณดํต ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์
์ด ์ปค๋ฐ๋๋ ์๊ฐ์ ํ๋ฌ์๊ฐ ๋ฐ์ํฉ๋๋ค. ํ๋ฌ์๊ฐ ๋ฐ์ํ๋ฉด "์ฐ๊ธฐ ์ง์ฐ ์ ์ฅ์"์ ๋ชจ์๋๋ INSERT, UPDATE, DELETE SQL๋ฑ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ฌ๋ฉ๋๋ค. ์ฆ ํ๋ฌ์๊ฐ ๋ฐ์ํ๋ฉด ์์์ฑ ์ปจํ
์คํธ์ ๋ณ๊ฒฝ์ฌํญ์ DB์ ๋ฐ์ํจ์ผ๋ก์จ DB์ ์์์ฑ ์ปจํ
์คํธ๋ฅผ ๋๊ธฐํ์ํค๋ ๊ฒ์
๋๋ค. ํ๋ฌ์๊ฐ ๋ฐ์ํ๋ฉด ํ๋ฌ์๊ฐ ๋ฐ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ผ์ด ์ฐจ๋ก๋๋ก ์ํ๋ฉ๋๋ค ๋ณ๊ฒฝ ๊ฐ์ง(Dirty Checking) ์์ ๋ ์ํฐํฐ๊ฐ ์๋ค๋ฉด ์ฐ๊ธฐ ์ง์ฐ SQL ์ ์ฅ์์ ๋ฑ๋ก ์ฐ๊ธฐ ์ง์ฐ SQL ์ ์ฅ์์ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ก(๋ฑ๋ก, ์์ , ์ญ์ ) ํ๋ฌ์ํ๋ ๋ฐฉ๋ฒ em.flush() - ์ง์ ํธ์ถ ..