SlideShare a Scribd company logo
1 of 34
HIBER NATE 5.x
์‹œ์ž‘ํ•˜๊ธฐ
visualkhh@gmail.com
์™œ JPA๋ฅผ ์“ฐ๋Š”๊ฐ€?
โ€ข 1. ๊ธฐ์กด SQL ์ค‘์‹ฌ์ ์ธ ๊ฐœ๋ฐœ์‹œ ๋ถˆํŽธํ•˜๋‹ค
โ€ข ์ฟผ๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ด์—๋”ฐ๋ฅธ ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค DTO๊ฐ์ฒด์˜ ๋ณ€๊ฒฝ๋„
๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ์ผ์–ด๋‚œ๋‹ค
โ€ข ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ๊ด€๊ณ„๋ฅผ Mappingํ•˜๋Š” ์ผ์ด ๋งค๋ฒˆ
์ผ์–ด๋‚œ๋‹ค
โ€ข !!SQL์˜์กด์ ์ธ ๊ฐœ๋ฐœ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
์™œ JPA๋ฅผ ์“ฐ๋Š”๊ฐ€?
โ€ข 2. ๊ฐ์ฒด-๊ด€๊ณ„ ๊ฐ„ ๋ชจ๋ธ ๋ถˆ์ผ์น˜
DATABASE (1:N)
public class User {
Integer seq;
String name;
String password;
private List<AuthComposite> auths;
}
public class AuthComposite {
Integer seq;
String auth;
Date expiry;
String auth_key
}
Object Maping (1:N)
์™œ JPA๋ฅผ ์“ฐ๋Š”๊ฐ€?
โ€ข 3. ์ƒ์† ๋ถˆ์ผ์น˜
โ€ข ์ƒ์†์€ ๊ฐ์ฒด ์„ธ๊ณ„์—์„œ๋Š” ์ง€์›ํ•˜์ง€๋งŒ, ๊ด€๊ณ„ํ˜• ์Šคํ‚ค๋งˆ์—์„œ๋Š” ์ง€์›ํ•˜์ง€
์•Š๋Š”๋‹ค.
โ€ข ์ƒ์†์€ ๋ชจ๋“  ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด, ํŠนํžˆ ์ž๋ฐ”์—์„œ ๋ฐ”๋Š˜๊ณผ ์‹ค์ฒ˜๋Ÿผ ๋—„ ์ˆ˜ ์—†๋Š”
ํŠน์ง•์ž…๋‹ˆ๋‹ค
โ€ข ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋Š” ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค-ํ…Œ์ด๋ธ”class-to-table ์ „๋žต์„
์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์™œ JPA๋ฅผ ์“ฐ๋Š”๊ฐ€?
โ€ข 4. ๊ด€๊ณ„์™€ ์—ฐ๊ด€ ๊ด€๊ณ„์˜ ๋ถˆ์ผ์น˜ (SQL ์ค‘์‹ฌ์ ์ธ ๊ฐœ๋ฐœ์˜ ๋ฌธ์ œ์ )
โ€ข field ํ•˜๋‚˜์ถ”๊ฐ€์‹œ ์ฟผ๋ฆฌ๋„ ๋ฐ”๊ฟ”์•ผํ•˜๊ณ  VO๋„ ๋ฐ”๊ฟ”์•ผ๋˜๊ณ  View๋ฐ”๋€Œ๊ณ ...
โ€ข SQL์— ์˜์กด์ ์ธ ๊ฐœ๋ฐœ์„ ํ”ผํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
โ€ข ๊ฐ์ฒด๋‹ต๊ฒŒ ๋ชจ๋ธ๋ง ํ• ์ˆ˜๋ก ๋งคํ•‘ ์ž‘์—…๋งŒ ๋Š˜์–ด๋‚œ๋‹ค
์™œ JPA๋ฅผ ์“ฐ๋Š”๊ฐ€?
โ€ข ์žฅ์ 
โ€ข ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—
์ง‘์ค‘ ํ•  ์ˆ˜ ์žˆ๋‹ค
โ€ข ํ…Œ์ด๋ธ” ์ƒ์„ฑ, ๋ณ€๊ฒฝ, ๊ด€๋ฆฌ๊ฐ€ ์‰ฝ๋‹ค. (JPA๋ฅผ ์ž˜ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ)
๋กœ์ง์„ ์ฟผ๋ฆฌ์— ์ง‘์ค‘ํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ๊ฐ์ฒด์ž์ฒด์— ์ง‘์ค‘ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข ๋น ๋ฅธ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
โ€ข
โ€ข ๋‹จ์ 
โ€ข ์–ด๋ ต๋‹ค. ์žฅ์ ์„ ๋” ๊ทน๋Œ€ํ™” ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์•Œ์•„์•ผ ํ• ๊ฒŒ ๋งŽ์Šต๋‹ˆ๋‹ค.
โ€ข ์ž˜ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋Œ์•„๊ฐˆ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ •๋ฆฌํ•ด๋ณด์ž๋ฉด ์™œ? Hibernate??
1. SQL ์งœ๊ธฐ ์‹ซ์–ด!~ใ… ใ… 
2. ๋งค๋ฒˆ ๊ฐ์ฒด ๋งตํ•‘ ์‹œํ‚ค๋Š”๊ฑฐ ๊ท€์ฐฎ์•„~
3. ๋‚˜๋Š” ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ• ๊บผ์•ผ~
์–ด์„œ ์™€~~ ์ฒ˜์Œ์ด์ง€~
์—”ํ‹ฐํ‹ฐ ์ƒ๋ช…์ฃผ๊ธฐ
(๋น„์˜์†) (์˜์†) (์ค€์˜์†)
Hibernate ์…‹ํŒ…
compile(group: 'org.hibernate', name: 'hibernate-core', version: '5.2.5.Final')
โ€ข Source ๋ ˆ๋ฒจ์—์„œ ๊ฐ€๋Šฅ
โ€ข Config ํŒŒ์ผ๋กœ ๊ฐ€๋Šฅ
โ€ข XML
โ€ข properties
โ€ข ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ€๋Šฅ
@Entity
โ€ข ํด๋ž˜์Šค๋ฅผ ์˜์†ํ™”ํ•˜๋ ค๋ฉด ๋จผ์ € ์—”ํ‹ฐํ‹ฐ๋กœ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ€ข @Id(key)๋Š” ๋ฌด์กฐ๊ฑดํ•˜๋‚˜์ด์ƒ ์กด์žฌํ•ด์•ผ๋จ
์‹๋ณ„์ž key
โ€ข ๊ฐ ๊ฐ์ฒด๋Š” ์œ ์ผํ•œ ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜์†ํ™”๋˜์–ด
์•ผ ํ•œ๋‹ค.
GenerationType.AUTO
GenerationType.IDENTITY
GenerationType.SEQUENCE
GenerationType.TABLE
๋ณตํ•ฉ ์‹๋ณ„์ž ID (KEY)
๋ณตํ•ฉ composite-id ์‹๋ณ„์ž ์„ค์ •๊ณผ ๊ด€๋ จ๋œ ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•
1. @Embededdable
2. @EmbeddedId
3. @IdClass
ID ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„ํ•ด์•ผ๋ ๊ฒƒ๋“ค
1. Default Constructor()
2. hashCode()
3. equals()
4. implements Serializable
tip : Lombok lib์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์œ„ ๋‚ด์šฉ์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค€๋‹ค.( https://projectlombok.org/ )
Join ์กฐ์ธ
โ€ข 1:1
โ€ข 1:N, N:1
โ€ข N:N
ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋Š” ๋‹ค์ค‘์„ฑ๊ณผ ๋ฐฉํ–ฅ์„ฑ์„ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค.
์ƒ์† ์ „๋žต
โ€ข Entity ์ƒ์†์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด 3๊ฐ€์ง€ ์žˆ๋‹ค.
1. Table-per-Class ์ „๋žต
2. Table-per-Subclass ์ „๋žต
3. Table-per-Concrete-Class ์ „๋žต
์กฐํšŒํ•˜๊ธฐ
โ€ข 1. ์ง€์—ฐ๋กœ๋”ฉ FetchType.LAZY (๊ธฐ๋ณธ๊ฐ’:OneToMany, ManyToMany)
โ€ข @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
โ€ข 2. ์ฆ‰์‹œ๋กœ๋”ฉ FetchType.EAGER(๊ธฐ๋ณธ๊ฐ’:OneToOne, ManyToOne)
โ€ข @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
ElementCollection
โ€ข ๋ณ„๋„์˜ Entity๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  Collection์„ ํ…Œ์ด๋ธ”๋กœ ์‚ฌ์šฉํ•˜์ž.
@Embedded Objects
โ€ข object๋ฅผ ํ•˜๋‚˜์˜ Entity์— ์†ํ•ด์žˆ๋Š”๊ฒƒ์ฒ˜๋Ÿผ ํ• ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•
ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์งˆ์˜์–ด
โ€ข HQL(Hibernate Query Language)์—์„œ๋Š” WHERE, ORDER BY,
AVG, MAX ๋“ฑ์„ SQL์ฒ˜๋Ÿผ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข HQL์€ ๊ฐ์ฒด(Entity)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ž๋ฆฌ์—
์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด ํด๋ž˜์Šค๋ช…์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํŽ˜์ด์ง€๋„ค์ด์…˜
โ€ข ๋ช‡ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋งŒ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด
โ€ข setFirstResult(..), setMaxResults(..)
๋ฉ”์†Œ๋“œ์— ํ•œ๊ณ„์น˜์™€ ํ•จ๊ป˜ ํ˜ธ์ถœํ•จ์œผ ๋กœ์จ ํŽ˜์ด์ง€๋„ค์ด์…˜
Pagination ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
Criteria
โ€ข ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์—์„œ๋Š” criteria๋ฅผ ๋„์ž…ํ•˜์—ฌ ํ•„ํ„ฐ๋ง์˜ ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•
์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
โ€ข Criteria์™€ Restrictions ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์ข€๋” ํŽธํ•˜๊ฒŒ ํ•„ํ„ฐ๋ง
์„ ํ•ด๋ณด์ž๊ตฌ์š”~
๋”๋ณต์žกํ•˜๊ฒŒ ๋Š๊ปด์ง€๋Š”๊ฑด ๊ธฐ๋ถ„ํƒ“์ธ๊ฐ€??
Criteria
์ต์ˆ™ํ•˜๋‹ˆ ๊ฒ๋‚˜ ์ข‹๊ตฐ~
๋„ค์ž„๋“œ ์ฟผ๋ฆฌ
โ€ข ํด๋ž˜์Šค ๋ ˆ๋ฒจ์—์„œ ์—”ํ‹ฐํ‹ฐ์˜
์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด
@NamedQuery์ด์šฉ
๋งคํ•‘ ํŒŒ์ผ์— ์„ ์–ธ
์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋‹ค.
๋„ค์ดํ‹ฐ๋ธŒ ์ฟผ๋ฆฌ
Groovy Template ์ด์šฉํ•˜์—ฌ Dynamic
Query ์‚ฌ์šฉํ•˜๊ธฐ
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

More Related Content

What's hot

DDD ๊ทธ๊ฒŒ ๋ญ”๋ฐ (๊ฐœ๋… ์ฐ๋จนํŽธ)
DDD ๊ทธ๊ฒŒ ๋ญ”๋ฐ (๊ฐœ๋… ์ฐ๋จนํŽธ)DDD ๊ทธ๊ฒŒ ๋ญ”๋ฐ (๊ฐœ๋… ์ฐ๋จนํŽธ)
DDD ๊ทธ๊ฒŒ ๋ญ”๋ฐ (๊ฐœ๋… ์ฐ๋จนํŽธ)๋ช…์„ ๊ณ 
ย 
Java class
Java classJava class
Java classHyosang Hong
ย 
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ์˜ค๋ธŒ์ ํŠธ์™€ ์˜์กด๊ด€๊ณ„
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ์˜ค๋ธŒ์ ํŠธ์™€ ์˜์กด๊ด€๊ณ„[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ์˜ค๋ธŒ์ ํŠธ์™€ ์˜์กด๊ด€๊ณ„
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ์˜ค๋ธŒ์ ํŠธ์™€ ์˜์กด๊ด€๊ณ„AnselmKim
ย 
[์„ธ๋ฏธ๋‚˜] 20160819 Java แ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ฅแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Scala แ„แ…ฒแ„แ…ฉแ„…แ…ตแ„‹แ…ฅแ†ฏ
[์„ธ๋ฏธ๋‚˜] 20160819 Java แ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ฅแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Scala แ„แ…ฒแ„แ…ฉแ„…แ…ตแ„‹แ…ฅแ†ฏ[์„ธ๋ฏธ๋‚˜] 20160819 Java แ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ฅแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Scala แ„แ…ฒแ„แ…ฉแ„…แ…ตแ„‹แ…ฅแ†ฏ
[์„ธ๋ฏธ๋‚˜] 20160819 Java แ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ฅแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Scala แ„แ…ฒแ„แ…ฉแ„…แ…ตแ„‹แ…ฅแ†ฏSanghoon Yoon
ย 
ํด๋ฆฐ ์ฝ”๋“œ part2
ํด๋ฆฐ ์ฝ”๋“œ part2ํด๋ฆฐ ์ฝ”๋“œ part2
ํด๋ฆฐ ์ฝ”๋“œ part2Minseok Jang
ย 
Domain-Driven-Design ์ •๋ณต๊ธฐ 1ํƒ„
Domain-Driven-Design ์ •๋ณต๊ธฐ 1ํƒ„Domain-Driven-Design ์ •๋ณต๊ธฐ 1ํƒ„
Domain-Driven-Design ์ •๋ณต๊ธฐ 1ํƒ„ํ˜„ ์ˆ˜
ย 
[์ƒˆ์ฐจ์›, ์ฝ”ํ‹€๋ฆฐ(Kotlin) ๊ฐ•์ขŒ] 7 classes and_inheritance
[์ƒˆ์ฐจ์›, ์ฝ”ํ‹€๋ฆฐ(Kotlin) ๊ฐ•์ขŒ] 7 classes and_inheritance[์ƒˆ์ฐจ์›, ์ฝ”ํ‹€๋ฆฐ(Kotlin) ๊ฐ•์ขŒ] 7 classes and_inheritance
[์ƒˆ์ฐจ์›, ์ฝ”ํ‹€๋ฆฐ(Kotlin) ๊ฐ•์ขŒ] 7 classes and_inheritance์ •์—ฐ ์ตœ
ย 
DDD Repository
DDD RepositoryDDD Repository
DDD RepositoryHyeonSeok Choi
ย 
Jpa ์ฟผ๋ฆฌ ํฌํ•จ ์ž๋ฃŒ
Jpa ์ฟผ๋ฆฌ ํฌํ•จ ์ž๋ฃŒJpa ์ฟผ๋ฆฌ ํฌํ•จ ์ž๋ฃŒ
Jpa ์ฟผ๋ฆฌ ํฌํ•จ ์ž๋ฃŒHyosang Hong
ย 
[C++ lab] 3. c++ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
[C++ lab] 3. c++ ํ”„๋กœ๊ทธ๋ž˜๋ฐ[C++ lab] 3. c++ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
[C++ lab] 3. c++ ํ”„๋กœ๊ทธ๋ž˜๋ฐMinGeun Park
ย 

What's hot (11)

DDD ๊ทธ๊ฒŒ ๋ญ”๋ฐ (๊ฐœ๋… ์ฐ๋จนํŽธ)
DDD ๊ทธ๊ฒŒ ๋ญ”๋ฐ (๊ฐœ๋… ์ฐ๋จนํŽธ)DDD ๊ทธ๊ฒŒ ๋ญ”๋ฐ (๊ฐœ๋… ์ฐ๋จนํŽธ)
DDD ๊ทธ๊ฒŒ ๋ญ”๋ฐ (๊ฐœ๋… ์ฐ๋จนํŽธ)
ย 
Java class
Java classJava class
Java class
ย 
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ์˜ค๋ธŒ์ ํŠธ์™€ ์˜์กด๊ด€๊ณ„
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ์˜ค๋ธŒ์ ํŠธ์™€ ์˜์กด๊ด€๊ณ„[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ์˜ค๋ธŒ์ ํŠธ์™€ ์˜์กด๊ด€๊ณ„
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ์˜ค๋ธŒ์ ํŠธ์™€ ์˜์กด๊ด€๊ณ„
ย 
[์„ธ๋ฏธ๋‚˜] 20160819 Java แ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ฅแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Scala แ„แ…ฒแ„แ…ฉแ„…แ…ตแ„‹แ…ฅแ†ฏ
[์„ธ๋ฏธ๋‚˜] 20160819 Java แ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ฅแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Scala แ„แ…ฒแ„แ…ฉแ„…แ…ตแ„‹แ…ฅแ†ฏ[์„ธ๋ฏธ๋‚˜] 20160819 Java แ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ฅแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Scala แ„แ…ฒแ„แ…ฉแ„…แ…ตแ„‹แ…ฅแ†ฏ
[์„ธ๋ฏธ๋‚˜] 20160819 Java แ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ฅแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Scala แ„แ…ฒแ„แ…ฉแ„…แ…ตแ„‹แ…ฅแ†ฏ
ย 
9 object class
9 object class9 object class
9 object class
ย 
ํด๋ฆฐ ์ฝ”๋“œ part2
ํด๋ฆฐ ์ฝ”๋“œ part2ํด๋ฆฐ ์ฝ”๋“œ part2
ํด๋ฆฐ ์ฝ”๋“œ part2
ย 
Domain-Driven-Design ์ •๋ณต๊ธฐ 1ํƒ„
Domain-Driven-Design ์ •๋ณต๊ธฐ 1ํƒ„Domain-Driven-Design ์ •๋ณต๊ธฐ 1ํƒ„
Domain-Driven-Design ์ •๋ณต๊ธฐ 1ํƒ„
ย 
[์ƒˆ์ฐจ์›, ์ฝ”ํ‹€๋ฆฐ(Kotlin) ๊ฐ•์ขŒ] 7 classes and_inheritance
[์ƒˆ์ฐจ์›, ์ฝ”ํ‹€๋ฆฐ(Kotlin) ๊ฐ•์ขŒ] 7 classes and_inheritance[์ƒˆ์ฐจ์›, ์ฝ”ํ‹€๋ฆฐ(Kotlin) ๊ฐ•์ขŒ] 7 classes and_inheritance
[์ƒˆ์ฐจ์›, ์ฝ”ํ‹€๋ฆฐ(Kotlin) ๊ฐ•์ขŒ] 7 classes and_inheritance
ย 
DDD Repository
DDD RepositoryDDD Repository
DDD Repository
ย 
Jpa ์ฟผ๋ฆฌ ํฌํ•จ ์ž๋ฃŒ
Jpa ์ฟผ๋ฆฌ ํฌํ•จ ์ž๋ฃŒJpa ์ฟผ๋ฆฌ ํฌํ•จ ์ž๋ฃŒ
Jpa ์ฟผ๋ฆฌ ํฌํ•จ ์ž๋ฃŒ
ย 
[C++ lab] 3. c++ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
[C++ lab] 3. c++ ํ”„๋กœ๊ทธ๋ž˜๋ฐ[C++ lab] 3. c++ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
[C++ lab] 3. c++ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย 

Viewers also liked

Hibernate start (ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์‹œ์ž‘ํ•˜๊ธฐ)
Hibernate start (ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์‹œ์ž‘ํ•˜๊ธฐ)Hibernate start (ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์‹œ์ž‘ํ•˜๊ธฐ)
Hibernate start (ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์‹œ์ž‘ํ•˜๊ธฐ)visual khh
ย 
์กฐ๊ธˆ ๋” ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ( ๋ถ€์ œ: ์ปจํผ๋Ÿฐ์Šค์˜ ๋ฐœํ‘œ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ )
์กฐ๊ธˆ ๋” ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ( ๋ถ€์ œ: ์ปจํผ๋Ÿฐ์Šค์˜ ๋ฐœํ‘œ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ )์กฐ๊ธˆ ๋” ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ( ๋ถ€์ œ: ์ปจํผ๋Ÿฐ์Šค์˜ ๋ฐœํ‘œ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ )
์กฐ๊ธˆ ๋” ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ( ๋ถ€์ œ: ์ปจํผ๋Ÿฐ์Šค์˜ ๋ฐœํ‘œ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ )Arawn Park
ย 
ํ•€ํ…Œํฌ(Fintech) แ„‘แ…ณแ„…แ…ตแ„Œแ…ฆแ†ซแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ
ํ•€ํ…Œํฌ(Fintech) แ„‘แ…ณแ„…แ…ตแ„Œแ…ฆแ†ซแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซํ•€ํ…Œํฌ(Fintech) แ„‘แ…ณแ„…แ…ตแ„Œแ…ฆแ†ซแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ
ํ•€ํ…Œํฌ(Fintech) แ„‘แ…ณแ„…แ…ตแ„Œแ…ฆแ†ซแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซStartupAlliance
ย 
์ œ2ํšŒ ํ•€ํ…Œํฌ ๋ฏธ๋‹ˆ์ปจํผ๋Ÿฐ์Šค_์ž„์ •์šฑ ์„ผํ„ฐ์žฅ
์ œ2ํšŒ ํ•€ํ…Œํฌ ๋ฏธ๋‹ˆ์ปจํผ๋Ÿฐ์Šค_์ž„์ •์šฑ ์„ผํ„ฐ์žฅ์ œ2ํšŒ ํ•€ํ…Œํฌ ๋ฏธ๋‹ˆ์ปจํผ๋Ÿฐ์Šค_์ž„์ •์šฑ ์„ผํ„ฐ์žฅ
์ œ2ํšŒ ํ•€ํ…Œํฌ ๋ฏธ๋‹ˆ์ปจํผ๋Ÿฐ์Šค_์ž„์ •์šฑ ์„ผํ„ฐ์žฅStartupAlliance
ย 
๊ธฐํš์ž๋ฅผ ์œ„ํ•œ OAuth
๊ธฐํš์ž๋ฅผ ์œ„ํ•œ OAuth๊ธฐํš์ž๋ฅผ ์œ„ํ•œ OAuth
๊ธฐํš์ž๋ฅผ ์œ„ํ•œ OAuthMinwoo Park
ย 
แ„Œแ…กแ„‡แ…ก แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ แ„‹แ…กแ†ซแ„แ…ต แ„‘แ…ขแ„แ…ฅแ†ซ
แ„Œแ…กแ„‡แ…ก แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ แ„‹แ…กแ†ซแ„แ…ต แ„‘แ…ขแ„แ…ฅแ†ซแ„Œแ…กแ„‡แ…ก แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ แ„‹แ…กแ†ซแ„แ…ต แ„‘แ…ขแ„แ…ฅแ†ซ
แ„Œแ…กแ„‡แ…ก แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ แ„‹แ…กแ†ซแ„แ…ต แ„‘แ…ขแ„แ…ฅแ†ซSungchul Park
ย 
OAuth2 - API ์ธ์ฆ์„ ์œ„ํ•œ ๋งŒ๋Šฅ๋„๊ตฌ์ƒ์ž
OAuth2 - API ์ธ์ฆ์„ ์œ„ํ•œ ๋งŒ๋Šฅ๋„๊ตฌ์ƒ์žOAuth2 - API ์ธ์ฆ์„ ์œ„ํ•œ ๋งŒ๋Šฅ๋„๊ตฌ์ƒ์ž
OAuth2 - API ์ธ์ฆ์„ ์œ„ํ•œ ๋งŒ๋Šฅ๋„๊ตฌ์ƒ์žMinwoo Park
ย 
แ„‡แ…งแ†ซแ„€แ…งแ†ผแ„‹แ…ฆ แ„€แ…กแ†ผแ„’แ…กแ†ซ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ, แ„‹แ…ฒแ„€แ…ตแ„Œแ…ฅแ†จ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ
แ„‡แ…งแ†ซแ„€แ…งแ†ผแ„‹แ…ฆ แ„€แ…กแ†ผแ„’แ…กแ†ซ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ, แ„‹แ…ฒแ„€แ…ตแ„Œแ…ฅแ†จ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซแ„‡แ…งแ†ซแ„€แ…งแ†ผแ„‹แ…ฆ แ„€แ…กแ†ผแ„’แ…กแ†ซ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ, แ„‹แ…ฒแ„€แ…ตแ„Œแ…ฅแ†จ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ
แ„‡แ…งแ†ซแ„€แ…งแ†ผแ„‹แ…ฆ แ„€แ…กแ†ผแ„’แ…กแ†ซ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ, แ„‹แ…ฒแ„€แ…ตแ„Œแ…ฅแ†จ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซSungchul Park
ย 
Docker๋ž€ ๋ฌด์—‡์ธ๊ฐ€? : Docker ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
Docker๋ž€ ๋ฌด์—‡์ธ๊ฐ€? : Docker ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•Docker๋ž€ ๋ฌด์—‡์ธ๊ฐ€? : Docker ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
Docker๋ž€ ๋ฌด์—‡์ธ๊ฐ€? : Docker ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•pyrasis
ย 
๋„์ปค ๋ฌด์ž‘์ • ๋”ฐ๋ผํ•˜๊ธฐ: ๋„์ปค๊ฐ€ ์ฒ˜์Œ์ธ ์‚ฌ๋žŒ๋„ 60๋ถ„์ด๋ฉด ์›น ์„œ๋ฒ„๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
๋„์ปค ๋ฌด์ž‘์ • ๋”ฐ๋ผํ•˜๊ธฐ: ๋„์ปค๊ฐ€ ์ฒ˜์Œ์ธ ์‚ฌ๋žŒ๋„ 60๋ถ„์ด๋ฉด ์›น ์„œ๋ฒ„๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!๋„์ปค ๋ฌด์ž‘์ • ๋”ฐ๋ผํ•˜๊ธฐ: ๋„์ปค๊ฐ€ ์ฒ˜์Œ์ธ ์‚ฌ๋žŒ๋„ 60๋ถ„์ด๋ฉด ์›น ์„œ๋ฒ„๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
๋„์ปค ๋ฌด์ž‘์ • ๋”ฐ๋ผํ•˜๊ธฐ: ๋„์ปค๊ฐ€ ์ฒ˜์Œ์ธ ์‚ฌ๋žŒ๋„ 60๋ถ„์ด๋ฉด ์›น ์„œ๋ฒ„๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!pyrasis
ย 
sungmin slide
sungmin slidesungmin slide
sungmin slidesungminlee
ย 

Viewers also liked (11)

Hibernate start (ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์‹œ์ž‘ํ•˜๊ธฐ)
Hibernate start (ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์‹œ์ž‘ํ•˜๊ธฐ)Hibernate start (ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์‹œ์ž‘ํ•˜๊ธฐ)
Hibernate start (ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์‹œ์ž‘ํ•˜๊ธฐ)
ย 
์กฐ๊ธˆ ๋” ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ( ๋ถ€์ œ: ์ปจํผ๋Ÿฐ์Šค์˜ ๋ฐœํ‘œ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ )
์กฐ๊ธˆ ๋” ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ( ๋ถ€์ œ: ์ปจํผ๋Ÿฐ์Šค์˜ ๋ฐœํ‘œ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ )์กฐ๊ธˆ ๋” ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ( ๋ถ€์ œ: ์ปจํผ๋Ÿฐ์Šค์˜ ๋ฐœํ‘œ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ )
์กฐ๊ธˆ ๋” ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ( ๋ถ€์ œ: ์ปจํผ๋Ÿฐ์Šค์˜ ๋ฐœํ‘œ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ )
ย 
ํ•€ํ…Œํฌ(Fintech) แ„‘แ…ณแ„…แ…ตแ„Œแ…ฆแ†ซแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ
ํ•€ํ…Œํฌ(Fintech) แ„‘แ…ณแ„…แ…ตแ„Œแ…ฆแ†ซแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซํ•€ํ…Œํฌ(Fintech) แ„‘แ…ณแ„…แ…ตแ„Œแ…ฆแ†ซแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ
ํ•€ํ…Œํฌ(Fintech) แ„‘แ…ณแ„…แ…ตแ„Œแ…ฆแ†ซแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ
ย 
์ œ2ํšŒ ํ•€ํ…Œํฌ ๋ฏธ๋‹ˆ์ปจํผ๋Ÿฐ์Šค_์ž„์ •์šฑ ์„ผํ„ฐ์žฅ
์ œ2ํšŒ ํ•€ํ…Œํฌ ๋ฏธ๋‹ˆ์ปจํผ๋Ÿฐ์Šค_์ž„์ •์šฑ ์„ผํ„ฐ์žฅ์ œ2ํšŒ ํ•€ํ…Œํฌ ๋ฏธ๋‹ˆ์ปจํผ๋Ÿฐ์Šค_์ž„์ •์šฑ ์„ผํ„ฐ์žฅ
์ œ2ํšŒ ํ•€ํ…Œํฌ ๋ฏธ๋‹ˆ์ปจํผ๋Ÿฐ์Šค_์ž„์ •์šฑ ์„ผํ„ฐ์žฅ
ย 
๊ธฐํš์ž๋ฅผ ์œ„ํ•œ OAuth
๊ธฐํš์ž๋ฅผ ์œ„ํ•œ OAuth๊ธฐํš์ž๋ฅผ ์œ„ํ•œ OAuth
๊ธฐํš์ž๋ฅผ ์œ„ํ•œ OAuth
ย 
แ„Œแ…กแ„‡แ…ก แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ แ„‹แ…กแ†ซแ„แ…ต แ„‘แ…ขแ„แ…ฅแ†ซ
แ„Œแ…กแ„‡แ…ก แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ แ„‹แ…กแ†ซแ„แ…ต แ„‘แ…ขแ„แ…ฅแ†ซแ„Œแ…กแ„‡แ…ก แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ แ„‹แ…กแ†ซแ„แ…ต แ„‘แ…ขแ„แ…ฅแ†ซ
แ„Œแ…กแ„‡แ…ก แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ แ„‹แ…กแ†ซแ„แ…ต แ„‘แ…ขแ„แ…ฅแ†ซ
ย 
OAuth2 - API ์ธ์ฆ์„ ์œ„ํ•œ ๋งŒ๋Šฅ๋„๊ตฌ์ƒ์ž
OAuth2 - API ์ธ์ฆ์„ ์œ„ํ•œ ๋งŒ๋Šฅ๋„๊ตฌ์ƒ์žOAuth2 - API ์ธ์ฆ์„ ์œ„ํ•œ ๋งŒ๋Šฅ๋„๊ตฌ์ƒ์ž
OAuth2 - API ์ธ์ฆ์„ ์œ„ํ•œ ๋งŒ๋Šฅ๋„๊ตฌ์ƒ์ž
ย 
แ„‡แ…งแ†ซแ„€แ…งแ†ผแ„‹แ…ฆ แ„€แ…กแ†ผแ„’แ…กแ†ซ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ, แ„‹แ…ฒแ„€แ…ตแ„Œแ…ฅแ†จ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ
แ„‡แ…งแ†ซแ„€แ…งแ†ผแ„‹แ…ฆ แ„€แ…กแ†ผแ„’แ…กแ†ซ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ, แ„‹แ…ฒแ„€แ…ตแ„Œแ…ฅแ†จ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซแ„‡แ…งแ†ซแ„€แ…งแ†ผแ„‹แ…ฆ แ„€แ…กแ†ผแ„’แ…กแ†ซ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ, แ„‹แ…ฒแ„€แ…ตแ„Œแ…ฅแ†จ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ
แ„‡แ…งแ†ซแ„€แ…งแ†ผแ„‹แ…ฆ แ„€แ…กแ†ผแ„’แ…กแ†ซ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ, แ„‹แ…ฒแ„€แ…ตแ„Œแ…ฅแ†จ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ
ย 
Docker๋ž€ ๋ฌด์—‡์ธ๊ฐ€? : Docker ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
Docker๋ž€ ๋ฌด์—‡์ธ๊ฐ€? : Docker ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•Docker๋ž€ ๋ฌด์—‡์ธ๊ฐ€? : Docker ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
Docker๋ž€ ๋ฌด์—‡์ธ๊ฐ€? : Docker ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
ย 
๋„์ปค ๋ฌด์ž‘์ • ๋”ฐ๋ผํ•˜๊ธฐ: ๋„์ปค๊ฐ€ ์ฒ˜์Œ์ธ ์‚ฌ๋žŒ๋„ 60๋ถ„์ด๋ฉด ์›น ์„œ๋ฒ„๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
๋„์ปค ๋ฌด์ž‘์ • ๋”ฐ๋ผํ•˜๊ธฐ: ๋„์ปค๊ฐ€ ์ฒ˜์Œ์ธ ์‚ฌ๋žŒ๋„ 60๋ถ„์ด๋ฉด ์›น ์„œ๋ฒ„๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!๋„์ปค ๋ฌด์ž‘์ • ๋”ฐ๋ผํ•˜๊ธฐ: ๋„์ปค๊ฐ€ ์ฒ˜์Œ์ธ ์‚ฌ๋žŒ๋„ 60๋ถ„์ด๋ฉด ์›น ์„œ๋ฒ„๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
๋„์ปค ๋ฌด์ž‘์ • ๋”ฐ๋ผํ•˜๊ธฐ: ๋„์ปค๊ฐ€ ์ฒ˜์Œ์ธ ์‚ฌ๋žŒ๋„ 60๋ถ„์ด๋ฉด ์›น ์„œ๋ฒ„๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
ย 
sungmin slide
sungmin slidesungmin slide
sungmin slide
ย 

Similar to Hibernate5.x

Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผ
Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผKsug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผ
Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผYounghan Kim
ย 
Sql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผ ๋ฐœํ‘œ์ž๋ฃŒ
Sql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผ ๋ฐœํ‘œ์ž๋ฃŒSql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผ ๋ฐœํ‘œ์ž๋ฃŒ
Sql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผ ๋ฐœํ‘œ์ž๋ฃŒssuser776e2d
ย 
Sql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผ
Sql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผSql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผ
Sql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผssuser776e2d
ย 
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ์šฉํ˜ธ ์ตœ
ย 
DDD Start Ch#3
DDD Start Ch#3DDD Start Ch#3
DDD Start Ch#3HyeonSeok Choi
ย 
[์ž๋ฐ”์นดํŽ˜] ์ž๋ฐ” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (2017)
[์ž๋ฐ”์นดํŽ˜] ์ž๋ฐ” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (2017)[์ž๋ฐ”์นดํŽ˜] ์ž๋ฐ” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (2017)
[์ž๋ฐ”์นดํŽ˜] ์ž๋ฐ” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (2017)์šฉํ˜ธ ์ตœ
ย 
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ค๋ธŒ์ ํ‹ฐ๋ธŒ C 2.0 (5/E) - 8์žฅ ์ƒ์†
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ค๋ธŒ์ ํ‹ฐ๋ธŒ C  2.0 (5/E) -  8์žฅ ์ƒ์†ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ค๋ธŒ์ ํ‹ฐ๋ธŒ C  2.0 (5/E) -  8์žฅ ์ƒ์†
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ค๋ธŒ์ ํ‹ฐ๋ธŒ C 2.0 (5/E) - 8์žฅ ์ƒ์†Keunhyun Oh
ย 
05_์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ๊ตฌํ˜„ํ•˜๊ธฐ
05_์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ๊ตฌํ˜„ํ•˜๊ธฐ05_์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ๊ตฌํ˜„ํ•˜๊ธฐ
05_์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ๊ตฌํ˜„ํ•˜๊ธฐnoerror
ย 
Daejeon IT Developer Conference Hibernate3
Daejeon IT Developer Conference Hibernate3Daejeon IT Developer Conference Hibernate3
Daejeon IT Developer Conference Hibernate3plusperson
ย 
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐScala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐJavajigi Jaesung
ย 
[16]Obfuscation 101 : ๋‚œ๋…ํ™”, ํ”„๋กœ๊ฐ€๋“œ, R8, ํŠธ๋žœ์Šคํฌ๋จธ API
[16]Obfuscation 101 : ๋‚œ๋…ํ™”, ํ”„๋กœ๊ฐ€๋“œ, R8, ํŠธ๋žœ์Šคํฌ๋จธ API[16]Obfuscation 101 : ๋‚œ๋…ํ™”, ํ”„๋กœ๊ฐ€๋“œ, R8, ํŠธ๋žœ์Šคํฌ๋จธ API
[16]Obfuscation 101 : ๋‚œ๋…ํ™”, ํ”„๋กœ๊ฐ€๋“œ, R8, ํŠธ๋žœ์Šคํฌ๋จธ APINAVER Engineering
ย 
DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜
DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜
DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜beom kyun choi
ย 
์ด์Šน์žฌ, M2 AI์ฝ”๋“œ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ ์‚ฌ๋ก€, NDC2013
์ด์Šน์žฌ, M2 AI์ฝ”๋“œ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ ์‚ฌ๋ก€, NDC2013์ด์Šน์žฌ, M2 AI์ฝ”๋“œ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ ์‚ฌ๋ก€, NDC2013
์ด์Šน์žฌ, M2 AI์ฝ”๋“œ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ ์‚ฌ๋ก€, NDC2013devCAT Studio, NEXON
ย 
[ ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ์˜์™ธ๋กœ ์‰ฌ์šด D3 ๊ทธ๋ž˜ํ”„ ํผ๋ธ”๋ฆฌ์‹ฑ
[ ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ์˜์™ธ๋กœ ์‰ฌ์šด D3 ๊ทธ๋ž˜ํ”„ ํผ๋ธ”๋ฆฌ์‹ฑ[ ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ์˜์™ธ๋กœ ์‰ฌ์šด D3 ๊ทธ๋ž˜ํ”„ ํผ๋ธ”๋ฆฌ์‹ฑ
[ ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ์˜์™ธ๋กœ ์‰ฌ์šด D3 ๊ทธ๋ž˜ํ”„ ํผ๋ธ”๋ฆฌ์‹ฑ์ •์„ ์–‘
ย 
2019 lightning talk_1
2019 lightning talk_12019 lightning talk_1
2019 lightning talk_1Dongho Yu
ย 
์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)
์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)
์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)์ค‘์„  ๊ณฝ
ย 
Design patterns
Design patternsDesign patterns
Design patternsJoshua Yoon
ย 
[D2 CAMPUS] tech meet up(Back-end) - ๊ต๋‚ด ์›น์„œ๋น„์Šค ๊ฐœ๋ฐœ ์ผ์ง€ (๋ฐ•์€์ฐฌ๋‹˜)
[D2 CAMPUS] tech meet up(Back-end) - ๊ต๋‚ด ์›น์„œ๋น„์Šค ๊ฐœ๋ฐœ ์ผ์ง€ (๋ฐ•์€์ฐฌ๋‹˜)[D2 CAMPUS] tech meet up(Back-end) - ๊ต๋‚ด ์›น์„œ๋น„์Šค ๊ฐœ๋ฐœ ์ผ์ง€ (๋ฐ•์€์ฐฌ๋‹˜)
[D2 CAMPUS] tech meet up(Back-end) - ๊ต๋‚ด ์›น์„œ๋น„์Šค ๊ฐœ๋ฐœ ์ผ์ง€ (๋ฐ•์€์ฐฌ๋‹˜)NAVER D2
ย 

Similar to Hibernate5.x (20)

Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผ
Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผKsug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผ
Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผ
ย 
Sql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผ ๋ฐœํ‘œ์ž๋ฃŒ
Sql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผ ๋ฐœํ‘œ์ž๋ฃŒSql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผ ๋ฐœํ‘œ์ž๋ฃŒ
Sql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผ ๋ฐœํ‘œ์ž๋ฃŒ
ย 
Sql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผ
Sql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผSql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผ
Sql ์ค‘์‹ฌ ์ฝ”๋“œ ํƒˆํ”ผ
ย 
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ
ย 
Java script
Java scriptJava script
Java script
ย 
DDD Start Ch#3
DDD Start Ch#3DDD Start Ch#3
DDD Start Ch#3
ย 
[์ž๋ฐ”์นดํŽ˜] ์ž๋ฐ” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (2017)
[์ž๋ฐ”์นดํŽ˜] ์ž๋ฐ” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (2017)[์ž๋ฐ”์นดํŽ˜] ์ž๋ฐ” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (2017)
[์ž๋ฐ”์นดํŽ˜] ์ž๋ฐ” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (2017)
ย 
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ค๋ธŒ์ ํ‹ฐ๋ธŒ C 2.0 (5/E) - 8์žฅ ์ƒ์†
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ค๋ธŒ์ ํ‹ฐ๋ธŒ C  2.0 (5/E) -  8์žฅ ์ƒ์†ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ค๋ธŒ์ ํ‹ฐ๋ธŒ C  2.0 (5/E) -  8์žฅ ์ƒ์†
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ค๋ธŒ์ ํ‹ฐ๋ธŒ C 2.0 (5/E) - 8์žฅ ์ƒ์†
ย 
05_์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ๊ตฌํ˜„ํ•˜๊ธฐ
05_์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ๊ตฌํ˜„ํ•˜๊ธฐ05_์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ๊ตฌํ˜„ํ•˜๊ธฐ
05_์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ๊ตฌํ˜„ํ•˜๊ธฐ
ย 
Daejeon IT Developer Conference Hibernate3
Daejeon IT Developer Conference Hibernate3Daejeon IT Developer Conference Hibernate3
Daejeon IT Developer Conference Hibernate3
ย 
Java collections framework
Java collections frameworkJava collections framework
Java collections framework
ย 
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐScala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
ย 
[16]Obfuscation 101 : ๋‚œ๋…ํ™”, ํ”„๋กœ๊ฐ€๋“œ, R8, ํŠธ๋žœ์Šคํฌ๋จธ API
[16]Obfuscation 101 : ๋‚œ๋…ํ™”, ํ”„๋กœ๊ฐ€๋“œ, R8, ํŠธ๋žœ์Šคํฌ๋จธ API[16]Obfuscation 101 : ๋‚œ๋…ํ™”, ํ”„๋กœ๊ฐ€๋“œ, R8, ํŠธ๋žœ์Šคํฌ๋จธ API
[16]Obfuscation 101 : ๋‚œ๋…ํ™”, ํ”„๋กœ๊ฐ€๋“œ, R8, ํŠธ๋žœ์Šคํฌ๋จธ API
ย 
DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜
DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜
DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜
ย 
์ด์Šน์žฌ, M2 AI์ฝ”๋“œ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ ์‚ฌ๋ก€, NDC2013
์ด์Šน์žฌ, M2 AI์ฝ”๋“œ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ ์‚ฌ๋ก€, NDC2013์ด์Šน์žฌ, M2 AI์ฝ”๋“œ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ ์‚ฌ๋ก€, NDC2013
์ด์Šน์žฌ, M2 AI์ฝ”๋“œ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ ์‚ฌ๋ก€, NDC2013
ย 
[ ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ์˜์™ธ๋กœ ์‰ฌ์šด D3 ๊ทธ๋ž˜ํ”„ ํผ๋ธ”๋ฆฌ์‹ฑ
[ ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ์˜์™ธ๋กœ ์‰ฌ์šด D3 ๊ทธ๋ž˜ํ”„ ํผ๋ธ”๋ฆฌ์‹ฑ[ ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ์˜์™ธ๋กœ ์‰ฌ์šด D3 ๊ทธ๋ž˜ํ”„ ํผ๋ธ”๋ฆฌ์‹ฑ
[ ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ์˜์™ธ๋กœ ์‰ฌ์šด D3 ๊ทธ๋ž˜ํ”„ ํผ๋ธ”๋ฆฌ์‹ฑ
ย 
2019 lightning talk_1
2019 lightning talk_12019 lightning talk_1
2019 lightning talk_1
ย 
์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)
์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)
์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)
ย 
Design patterns
Design patternsDesign patterns
Design patterns
ย 
[D2 CAMPUS] tech meet up(Back-end) - ๊ต๋‚ด ์›น์„œ๋น„์Šค ๊ฐœ๋ฐœ ์ผ์ง€ (๋ฐ•์€์ฐฌ๋‹˜)
[D2 CAMPUS] tech meet up(Back-end) - ๊ต๋‚ด ์›น์„œ๋น„์Šค ๊ฐœ๋ฐœ ์ผ์ง€ (๋ฐ•์€์ฐฌ๋‹˜)[D2 CAMPUS] tech meet up(Back-end) - ๊ต๋‚ด ์›น์„œ๋น„์Šค ๊ฐœ๋ฐœ ์ผ์ง€ (๋ฐ•์€์ฐฌ๋‹˜)
[D2 CAMPUS] tech meet up(Back-end) - ๊ต๋‚ด ์›น์„œ๋น„์Šค ๊ฐœ๋ฐœ ์ผ์ง€ (๋ฐ•์€์ฐฌ๋‹˜)
ย 

Hibernate5.x

  • 2. ์™œ JPA๋ฅผ ์“ฐ๋Š”๊ฐ€? โ€ข 1. ๊ธฐ์กด SQL ์ค‘์‹ฌ์ ์ธ ๊ฐœ๋ฐœ์‹œ ๋ถˆํŽธํ•˜๋‹ค โ€ข ์ฟผ๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ด์—๋”ฐ๋ฅธ ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค DTO๊ฐ์ฒด์˜ ๋ณ€๊ฒฝ๋„ ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ์ผ์–ด๋‚œ๋‹ค โ€ข ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ๊ด€๊ณ„๋ฅผ Mappingํ•˜๋Š” ์ผ์ด ๋งค๋ฒˆ ์ผ์–ด๋‚œ๋‹ค โ€ข !!SQL์˜์กด์ ์ธ ๊ฐœ๋ฐœ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
  • 3. ์™œ JPA๋ฅผ ์“ฐ๋Š”๊ฐ€? โ€ข 2. ๊ฐ์ฒด-๊ด€๊ณ„ ๊ฐ„ ๋ชจ๋ธ ๋ถˆ์ผ์น˜ DATABASE (1:N) public class User { Integer seq; String name; String password; private List<AuthComposite> auths; } public class AuthComposite { Integer seq; String auth; Date expiry; String auth_key } Object Maping (1:N)
  • 4. ์™œ JPA๋ฅผ ์“ฐ๋Š”๊ฐ€? โ€ข 3. ์ƒ์† ๋ถˆ์ผ์น˜ โ€ข ์ƒ์†์€ ๊ฐ์ฒด ์„ธ๊ณ„์—์„œ๋Š” ์ง€์›ํ•˜์ง€๋งŒ, ๊ด€๊ณ„ํ˜• ์Šคํ‚ค๋งˆ์—์„œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. โ€ข ์ƒ์†์€ ๋ชจ๋“  ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด, ํŠนํžˆ ์ž๋ฐ”์—์„œ ๋ฐ”๋Š˜๊ณผ ์‹ค์ฒ˜๋Ÿผ ๋—„ ์ˆ˜ ์—†๋Š” ํŠน์ง•์ž…๋‹ˆ๋‹ค โ€ข ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋Š” ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค-ํ…Œ์ด๋ธ”class-to-table ์ „๋žต์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • 5. ์™œ JPA๋ฅผ ์“ฐ๋Š”๊ฐ€? โ€ข 4. ๊ด€๊ณ„์™€ ์—ฐ๊ด€ ๊ด€๊ณ„์˜ ๋ถˆ์ผ์น˜ (SQL ์ค‘์‹ฌ์ ์ธ ๊ฐœ๋ฐœ์˜ ๋ฌธ์ œ์ ) โ€ข field ํ•˜๋‚˜์ถ”๊ฐ€์‹œ ์ฟผ๋ฆฌ๋„ ๋ฐ”๊ฟ”์•ผํ•˜๊ณ  VO๋„ ๋ฐ”๊ฟ”์•ผ๋˜๊ณ  View๋ฐ”๋€Œ๊ณ ... โ€ข SQL์— ์˜์กด์ ์ธ ๊ฐœ๋ฐœ์„ ํ”ผํ•˜๊ธฐ ์–ด๋ ต๋‹ค. โ€ข ๊ฐ์ฒด๋‹ต๊ฒŒ ๋ชจ๋ธ๋ง ํ• ์ˆ˜๋ก ๋งคํ•‘ ์ž‘์—…๋งŒ ๋Š˜์–ด๋‚œ๋‹ค
  • 6. ์™œ JPA๋ฅผ ์“ฐ๋Š”๊ฐ€? โ€ข ์žฅ์  โ€ข ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ ํ•  ์ˆ˜ ์žˆ๋‹ค โ€ข ํ…Œ์ด๋ธ” ์ƒ์„ฑ, ๋ณ€๊ฒฝ, ๊ด€๋ฆฌ๊ฐ€ ์‰ฝ๋‹ค. (JPA๋ฅผ ์ž˜ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ) ๋กœ์ง์„ ์ฟผ๋ฆฌ์— ์ง‘์ค‘ํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ๊ฐ์ฒด์ž์ฒด์— ์ง‘์ค‘ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ€ข ๋น ๋ฅธ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. โ€ข โ€ข ๋‹จ์  โ€ข ์–ด๋ ต๋‹ค. ์žฅ์ ์„ ๋” ๊ทน๋Œ€ํ™” ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์•Œ์•„์•ผ ํ• ๊ฒŒ ๋งŽ์Šต๋‹ˆ๋‹ค. โ€ข ์ž˜ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋Œ์•„๊ฐˆ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 7. ์ •๋ฆฌํ•ด๋ณด์ž๋ฉด ์™œ? Hibernate?? 1. SQL ์งœ๊ธฐ ์‹ซ์–ด!~ใ… ใ…  2. ๋งค๋ฒˆ ๊ฐ์ฒด ๋งตํ•‘ ์‹œํ‚ค๋Š”๊ฑฐ ๊ท€์ฐฎ์•„~ 3. ๋‚˜๋Š” ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ• ๊บผ์•ผ~
  • 8.
  • 11. Hibernate ์…‹ํŒ… compile(group: 'org.hibernate', name: 'hibernate-core', version: '5.2.5.Final') โ€ข Source ๋ ˆ๋ฒจ์—์„œ ๊ฐ€๋Šฅ โ€ข Config ํŒŒ์ผ๋กœ ๊ฐ€๋Šฅ โ€ข XML โ€ข properties โ€ข ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ€๋Šฅ
  • 12. @Entity โ€ข ํด๋ž˜์Šค๋ฅผ ์˜์†ํ™”ํ•˜๋ ค๋ฉด ๋จผ์ € ์—”ํ‹ฐํ‹ฐ๋กœ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. โ€ข @Id(key)๋Š” ๋ฌด์กฐ๊ฑดํ•˜๋‚˜์ด์ƒ ์กด์žฌํ•ด์•ผ๋จ
  • 13. ์‹๋ณ„์ž key โ€ข ๊ฐ ๊ฐ์ฒด๋Š” ์œ ์ผํ•œ ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜์†ํ™”๋˜์–ด ์•ผ ํ•œ๋‹ค. GenerationType.AUTO GenerationType.IDENTITY GenerationType.SEQUENCE GenerationType.TABLE
  • 14. ๋ณตํ•ฉ ์‹๋ณ„์ž ID (KEY) ๋ณตํ•ฉ composite-id ์‹๋ณ„์ž ์„ค์ •๊ณผ ๊ด€๋ จ๋œ ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• 1. @Embededdable 2. @EmbeddedId 3. @IdClass ID ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„ํ•ด์•ผ๋ ๊ฒƒ๋“ค 1. Default Constructor() 2. hashCode() 3. equals() 4. implements Serializable tip : Lombok lib์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์œ„ ๋‚ด์šฉ์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค€๋‹ค.( https://projectlombok.org/ )
  • 15.
  • 16. Join ์กฐ์ธ โ€ข 1:1 โ€ข 1:N, N:1 โ€ข N:N ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋Š” ๋‹ค์ค‘์„ฑ๊ณผ ๋ฐฉํ–ฅ์„ฑ์„ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค.
  • 17.
  • 18.
  • 19.
  • 20. ์ƒ์† ์ „๋žต โ€ข Entity ์ƒ์†์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด 3๊ฐ€์ง€ ์žˆ๋‹ค. 1. Table-per-Class ์ „๋žต 2. Table-per-Subclass ์ „๋žต 3. Table-per-Concrete-Class ์ „๋žต
  • 21.
  • 22.
  • 23.
  • 24. ์กฐํšŒํ•˜๊ธฐ โ€ข 1. ์ง€์—ฐ๋กœ๋”ฉ FetchType.LAZY (๊ธฐ๋ณธ๊ฐ’:OneToMany, ManyToMany) โ€ข @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) โ€ข 2. ์ฆ‰์‹œ๋กœ๋”ฉ FetchType.EAGER(๊ธฐ๋ณธ๊ฐ’:OneToOne, ManyToOne) โ€ข @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
  • 25. ElementCollection โ€ข ๋ณ„๋„์˜ Entity๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  Collection์„ ํ…Œ์ด๋ธ”๋กœ ์‚ฌ์šฉํ•˜์ž.
  • 26. @Embedded Objects โ€ข object๋ฅผ ํ•˜๋‚˜์˜ Entity์— ์†ํ•ด์žˆ๋Š”๊ฒƒ์ฒ˜๋Ÿผ ํ• ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•
  • 27. ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์งˆ์˜์–ด โ€ข HQL(Hibernate Query Language)์—์„œ๋Š” WHERE, ORDER BY, AVG, MAX ๋“ฑ์„ SQL์ฒ˜๋Ÿผ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ€ข HQL์€ ๊ฐ์ฒด(Entity)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ž๋ฆฌ์— ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด ํด๋ž˜์Šค๋ช…์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • 28. ํŽ˜์ด์ง€๋„ค์ด์…˜ โ€ข ๋ช‡ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋งŒ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด โ€ข setFirstResult(..), setMaxResults(..) ๋ฉ”์†Œ๋“œ์— ํ•œ๊ณ„์น˜์™€ ํ•จ๊ป˜ ํ˜ธ์ถœํ•จ์œผ ๋กœ์จ ํŽ˜์ด์ง€๋„ค์ด์…˜ Pagination ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
  • 29. Criteria โ€ข ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์—์„œ๋Š” criteria๋ฅผ ๋„์ž…ํ•˜์—ฌ ํ•„ํ„ฐ๋ง์˜ ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ• ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. โ€ข Criteria์™€ Restrictions ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์ข€๋” ํŽธํ•˜๊ฒŒ ํ•„ํ„ฐ๋ง ์„ ํ•ด๋ณด์ž๊ตฌ์š”~ ๋”๋ณต์žกํ•˜๊ฒŒ ๋Š๊ปด์ง€๋Š”๊ฑด ๊ธฐ๋ถ„ํƒ“์ธ๊ฐ€??
  • 31. ๋„ค์ž„๋“œ ์ฟผ๋ฆฌ โ€ข ํด๋ž˜์Šค ๋ ˆ๋ฒจ์—์„œ ์—”ํ‹ฐํ‹ฐ์˜ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด @NamedQuery์ด์šฉ ๋งคํ•‘ ํŒŒ์ผ์— ์„ ์–ธ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋‹ค.
  • 33. Groovy Template ์ด์šฉํ•˜์—ฌ Dynamic Query ์‚ฌ์šฉํ•˜๊ธฐ

Editor's Notes

  1. 1. ๊ธฐ์กด SQL ์ค‘์‹ฌ์ ์ธ ๊ฐœ๋ฐœ์‹œ ๋ถˆํŽธํ•˜๋‹ค -ย ย ย ย ย ย  ์ฟผ๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ด์—๋”ฐ๋ฅธ ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค DTO๊ฐ์ฒด์˜ ๋ณ€๊ฒฝ๋„ ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ์ผ์–ด๋‚œ๋‹ค -ย ย ย ย ย ย  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ๊ด€๊ณ„๋ฅผ Mappingํ•˜๋Š” ์ผ์ด ๋งค๋ฒˆ ์ผ์–ด๋‚œ๋‹ค. !!SQL์˜์กด์ ์ธ ๊ฐœ๋ฐœ์ด ์ด๋ฃจ์–ด์ง„๋‹ค. ย  2. ๊ฐ์ฒด-๊ด€๊ณ„ ๊ฐ„ ๋ชจ๋ธ ๋ถˆ์ผ์น˜ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ๋กœ์šฐ์™€ ์ปฌ๋Ÿผ์˜ 2์ฐจ์› ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค. ๋ฐ์ดํ„ฐ ๊ด€๊ณ„๋Š” ์™ธ๋ž˜ํ‚คforeign key ํ˜•ํƒœ๋กœ ํ‘œํ˜„๋œ๋‹ค. ๋ฌธ์ œ๋Š” ๋„๋ฉ”์ธ ๊ฐ์ฒด๋ฅผ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋กœ ์ €์žฅํ•  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐ์ฒด๋Š” ๋กœ์šฐ์™€ ์ปฌ๋Ÿผ ํ˜•ํƒœ๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ ๊ฐ์ฒด๋Š” ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์†์„ฑ(๋ณ€์ˆ˜)์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋„๋ฉ”์ธ ๊ฐ์ฒด ๊ทธ๋Œ€๋กœ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค. ์ด๋Ÿฌํ•œ ๋ถˆ์ผ์น˜๋ฅผ ๊ฐ์ฒด-๊ด€๊ณ„ ๊ฐ„ ์ž„ํ”ผ๋˜์Šค ๋ถˆ์ผ์น˜object-relational impedance mismatch๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ย  3. ์ƒ์† ๋ถˆ์ผ์น˜ ์ƒ์†์€ ๊ฐ์ฒด ์„ธ๊ณ„์—์„œ๋Š” ์ง€์›ํ•˜์ง€๋งŒ, ๊ด€๊ณ„ํ˜• ์Šคํ‚ค๋งˆ์—์„œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ƒ์†์€ ๋ชจ๋“  ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด, ํŠนํžˆ ์ž๋ฐ”์—์„œ ๋ฐ”๋Š˜๊ณผ ์‹ค์ฒ˜๋Ÿผ ๋—„ ์ˆ˜ ์—†๋Š” ํŠน์ง•์ž…๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ๊ด€๊ณ„ํ˜• ์Šคํ‚ค๋งˆ์—๋Š” ์ƒ์† ๊ฐœ๋…์ด ์—†์Šต๋‹ˆ๋‹ค. ํšŒ์‚ฌ์—์„œ ์ž„์›๊ณผ ์ง์›์˜ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๋ฉด. ์ž„์› ๊ฐœ์ธ๋„ ํšŒ์‚ฌ์˜ ์ง์›์ด์ฃ . ์ด ๊ด€๊ณ„๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์€ ํ…Œ์ด๋ธ” ๊ฐ„ ๊ด€๊ณ„ ์ˆ˜์ •์ด ํ•„์š”ํ•ด์„œ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒ์† ์—†์ด ํ˜„์‹ค ์„ธ๊ณ„์˜ ๋ฌธ์ œ ์ƒํ™ฉ์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ณต์žกํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ƒ์† ๊ด€๊ณ„์™€ ๊ฐ™์€ ํ˜•ํƒœ๋ฅผ ์•Œ์ง€ ๋ชปํ•˜์ง€์š”. ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•  ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€์—†์ง€๋งŒ, ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ ‘๊ทผ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ๋ฒ•์€ ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค-ํ…Œ์ด๋ธ”class-to-table ์ „๋žต์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 4. ๊ด€๊ณ„์™€ ์—ฐ๊ด€ ๊ด€๊ณ„์˜ ๋ถˆ์ผ์น˜ 1. SQL ์ค‘์‹ฌ์ ์ธ ๊ฐœ๋ฐœ์˜ ๋ฌธ์ œ์  ย - field ํ•˜๋‚˜์ถ”๊ฐ€์‹œย  ์ฟผ๋ฆฌ๋„ ๋ฐ”๊ฟ”์•ผํ•˜๊ณ ย  VO๋„ ๋ฐ”๊ฟ”์•ผ๋˜๊ณ  ... ย - SQL์— ์˜์กด์ ์ธ ๊ฐœ๋ฐœ์„ ํ”ผํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ย - ๊ฐ์ฒด๋‹ต๊ฒŒ ๋ชจ๋ธ๋ง ํ• ์ˆ˜๋ก ๋งคํ•‘ ์ž‘์—…๋งŒ ๋Š˜์–ด๋‚œ๋‹ค
  2. ๋น„์˜์† ์ƒํƒœ ํผ์‹œ์Šคํ„ดํŠธ ๊ฐ์ฒด๋ฅผ ์ฒ˜์Œ ๋งŒ๋“ค์—ˆ์„ ๋•Œ์˜ ์ƒํƒœ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์— ๊ด€๋ จ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉฐ, ์—ฐ๊ด€๋œ Session์ด ์—†๋‹ค. ย  ์˜์† ์ƒํƒœ ํ˜„์žฌ ํ™œ์„ฑํ™”๋œ Session๊ณผ ์—ฐ๊ฒฐ๋œ ํผ์‹œ์Šคํ„ดํŠธ ๊ฐ์ฒด. ์ด ์ƒํƒœ์˜ ํผ์‹œ์Šคํ„ดํŠธ ๊ฐ์ฒด๋Š” ๊ณ ์œ ์„ฑ์„ ๊ฐ€์ง€๋ฉฐ, ํ”„๋กœํผํ‹ฐ ๊ฐ’์˜ ๋ณ€๊ฒฝ์ด Session์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜๋œ๋‹ค. ย  ์ค€์˜์† ์ƒํƒœ ์˜์† ์ƒํƒœ์˜ ํผ์‹œ์Šคํ„ดํŠธ ๊ฐ์ฒด๊ฐ€ Session๊ณผ ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ๋ฉด ์ค€์˜์† ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. Hibernate์˜ ๊ด€๋ฆฌ๋ฅผ ๋ฐ›์ง€๋Š” ์•Š์ง€๋งŒ, ์˜์† ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.
  3. ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ์…‹ํŒ… ๋ฐฉ๋ฒ•์€ 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  4. GenerationType.AUTO ๊ธฐ๋ณธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์—๋„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ ์ ˆํ•œ ID๋ฅผ ์„ ํƒํ•œ๋‹ค. GenerationType.IDENTITY ์ด ์„ค์ •์€ ๋ช‡๋ช‡ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” identity ํ•จ์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค. ๋ฐ ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ณ ์œ ํ•œ ์‹๋ณ„์ž๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. GenerationType.SEQUENCE ๋ช‡๋ช‡ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ์—ฐ์†๋œ ์ˆซ์ž์— ๊ด€ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•˜๋Š”๋ฐ, ํ•˜์ด๋ฒ„ ๋„ค์ดํŠธ์—์„œ๋Š” ์ผ๋ จ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. GenerationType.TABLE ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ณ ์œ ํ•œ ์ปฌ๋Ÿผ ๊ฐ’์—์„œ ๊ธฐ๋ณธํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ TABLE ์ƒ์„ฑ์ž ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์‹œํ€€์Šคseqeunce ๋ฐฉ๋ฒ•์—์„œ๋Š” strategy์™€ generator ์†์„ฑ์„ ๋ชจ๋‘ ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค.
  5. Embeddable ์„ ์–ธ๋œ ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๋‚ด๋ถ€ ์— ์ž„๋ฒ ๋”ฉ๋˜๋Š” ํด๋ž˜์Šค๋ฆฌ๊ณ  ์„ ์–ธ๋˜๋Š”๊ฒƒ EmbeddedId ํด๋ž˜์Šค๋ฅผ ์ž„๋ฒ ๋”ฉํ•˜์—ฌ ์•„์ด๋””๋กœ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” IdClass ๋‚ด๊บผํ•„๋“œ์— ์—ฌ๋Ÿฌ ์•„์ด๋””ํ•„๋“œ์™€ ํƒ€ ํด๋ž˜์Šค๋ฅผIDclass๋กœ ๋งตํ•‘ํ•˜์—ฌ ์“ฐ๊ฒ ๋‹ค.
  6. ์—ฐ๊ด€ ๊ด€๊ณ„ ๊ฐ์ฒด ์˜์†ํ™” ์„ธ์ƒ์—์„œ๋Š” ์—ฐ๊ด€ ๊ด€๊ณ„assocation์™€ ๊ด€๊ณ„relationship์— ๋Œ€ํ•œ ์ดํ•ด๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์—ฐ๊ด€ ๊ด€๊ณ„์—์„œ ๋ฐ˜๋“œ์‹œ ๊ธฐ์–ตํ•  ๋‘ ๊ฐ€์ง€๋Š”ย ๋‹ค์ค‘์„ฑmultiplicity๊ณผย ๋ฐฉํ–ฅ์„ฑdirectionality์ž…๋‹ˆ๋‹ค ย  ๋‹ค์ค‘์„ฑ ์ผ๋Œ€์ผย 1:1 ํ•œ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ ๋ ˆ์ฝ”๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ” ์˜ย  ๋ ˆ์ฝ”๋“œ ํ•œ ๊ฐœ์™€ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค.ย ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋Š”ย 0์ผ ์ˆ˜๋„ ์žˆ๋‹ค. ์ž๋™์ฐจ ํ•œ ๋Œ€๋Š” ์˜ค์ง ํ•œ ๊ฐœ์˜ ์—”์ง„๋งŒ ๊ฐ€์ง„๋‹ค. 1:N,ย  N:1 ํ•œ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ ๋ ˆ์ฝ”๋“œ๋Š” ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ย 0๊ฐœย  ๋˜๋Š” ๊ทธ ์ด์ƒ์˜ ๋ ˆ์ฝ”๋“œ์™€ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค. ์˜ํ™” ํ•œ ํŽธ์€ ๋งŽ์€ย  ๋ฐฐ์šฐ๋ฅผ ๊ฐ€์ง„๋‹ค(์ผ๋Œ€๋‹ค) ๋ฐฐ์šฐ ํ•œ ๋ช…์€ ์—ฌ๋Ÿฌ ์ž‘ํ’ˆ์—์„œ ์—ฐ๊ธฐํ•  ์ˆ˜ ์žˆ๋‹คย (๋‹ค๋Œ€์ผ). N:N ์–‘์ชฝ ํ…Œ์ด๋ธ” ๋ชจ๋‘ ๊ฐ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅธ ์ชฝ ํ…Œ์ด๋ธ”์˜ 0๊ฐœ ๋˜๋Š” ๊ทธ ์ด์ƒ์˜ ๋ ˆ์ฝ”๋“œ์™€ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค. ย  ย  ๋ฐฉํ–ฅ์„ฑ Car์™€ย Engine์˜ ๊ด€๊ณ„์—์„œย Car์˜ ์†์„ฑ์„ ์งˆ์˜ํ•ด์„œย Engine์„ ์ฐพ์•„๋‚ผ์ˆ˜์žˆ์Šต๋‹ˆ๋‹ค.ย  car -> engin Carย ํด๋ž˜์Šค์™€ย Ownerย ํด๋ž˜์Šค์˜ ๊ฒฝ์šฐ ์ฃผ์–ด์ง„ย Carย ๊ฐ์ฒด๋กœ ์ž๋™์ฐจ์˜ ์ฃผ์ธ์ด ๋ˆ„๊ตฌ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉฐ,ย  Ownerย ๊ฐ์ฒด๋กœ ์ฐจ์ฃผ์˜ ์ž๋™์ฐจ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ์–‘๋ฐฉํ–ฅ์„ฑ ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋กย Ownerย ๊ฐ์ฒด์—ย Car์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ œ๊ณตํ•˜ ๊ณ , Carย ๊ฐ์ฒด์—๋Š” Owner์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  7. ์กฐ์ธ์ „์— ๋จผ์ € ์•Œ์•„์•ผ๋ ย Cascade ๋ถ€๋ชจ ๊ฐ์ฒด์™€ ์ž์‹ ๊ฐ์ฒด์˜ ์ข…์†์„ฑ ์„ค์ •ย :ย ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์—์„œ๋Š”ย "๋ถ€๋ชจ"๊ฐ์ฒด๊ฐ€ ์‹คํ–‰๋˜๋ฉดย "์ž์‹"ย ํ˜น์€ย "์˜์กด"ย ๊ฐ์ฒด๊นŒ์ง€ ์ „์ด๋˜๋Š” ์—ฐ์‚ฐ์„ย cascadeย ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.ย ์ด ๊ธฐ๋Šฅ์€ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ปฌ๋ ‰์…˜๊ณผ ์—ฐ๊ด€์— ์ ์šฉ๋œ๋‹ค. ํƒ€์ž… ํ–‰์œ„ ์–ธ์ œ CascadeType.DETACH ์—”ํ‹ฐํ‹ฐ๊ฐ€ย Persistence Context์—์„œ ์ œ๊ฑฐ๋˜๋ฉดย (์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ถ„๋ฆฌ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค)์ด ์ž‘์—…์€ ๊ด€๊ณ„์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. Finished Persistence Contextย  ๋˜๋Š”ย entityManager.detach () entityManager.clear () CascadeType.MERGE ์—”ํ‹ฐํ‹ฐ์— ์—…๋ฐ์ดํŠธ ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด์ด ์ž‘์—…์ด ๊ด€๊ณ„์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๊ฐฑ์‹ ๋˜๊ณ  ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜๊ฑฐ๋‚˜, entityManager.merge () CascadeType.PERSIST ์ƒˆ๋กœ์šด ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์œ ์ง€๋˜๋ฉด์ด ์กฐ์น˜๊ฐ€ ๊ด€๊ณ„์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์ด ๋๋‚˜๊ฑฐ๋‚˜, entityManager.persist () CascadeType.REFRESH ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋™๊ธฐํ™” ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์งˆ ๋•Œ์ด ์กฐ์น˜๊ฐ€ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค entityManager.refresh () CascadeType.REMOVE ์—”ํ„ฐํ‹ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ญ์ œ๋˜๋ฉด ํ–‰๋™์ด ๊ด€๊ณ„์— ๋ฐ˜์˜ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. entityManager.remove () CascadeType.ALL ์œ„์˜ ์กฐ์น˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ย JPAย ๋˜๋Š” ๋ช…๋ น์— ์˜ํ•ด ํ˜ธ์ถœ ๋  ๋•Œ,์ด ์กฐ์น˜๋Š” ๊ด€๊ณ„์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ์œ„์— ์„ค๋ช… ๋œ ๋ช…๋ น์ด๋‚˜ ํ–‰๋™. ์‰ฝ๊ฒŒ ๋งํ•˜๊ธฐย :ย ๊ฐ์ฒด ์ƒํƒœ ์ „์ด ํƒ€์ž…ย  (๋ณดํ†ตย ALL์„ ์‚ฌ์šฉํ•œ๋‹ค) ย 
  8. Table Per Class ์ƒ์†๊ด€๊ณ„์— ์—์žˆ๋Š” ํด๋ž˜์Šค๋“ค์„ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋กœ ์ฒ˜๋ฆฌํ•˜๊ฒ ๋‹ค Table Per SubClass ๋ถ€๋ชจ์˜ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜๋ฉฐ ์ž์‹ Entity๋Š” ๋ถ„๋ฆฌ๋œ ํ…Œ์ด๋ธ”๋กœ ์ฒ˜๋ฆฌํ•˜๊ฒ ๋‹ค. Table Per Concarete Class ๋ถ€๋ชจ์™€๋„ ์™„์ „ํžˆ ๋ณ„๊ฐœ์˜ ๋ถ„๋ฆฌ๋œ ํ…Œ์ด๋ธ”๋กœ ์ฒ˜๋ฆฌํ•˜๊ฒ ๋‹ค.
  9. HQL(Hibernate Query Language)์—์„œ๋Š”ย WHERE, ORDER BY, AVG, MAXย ๋“ฑ์„ย SQL์ฒ˜๋Ÿผ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HQL์€ ๊ฐ์ฒด(Entity)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ย ํ…Œ์ด๋ธ”์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ž๋ฆฌ์— ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด ํด๋ž˜์Šค๋ช…์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  10. ๋„ค์ดํ‹ฐ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•œ๋‹ค HQL์ด ์‚ฌ์šฉํ•˜๊ธฐ ๊ฐ„ํŽธํ•œ๋ฐ ์™œ ๋„ค์ดํ‹ฐ๋ธŒย SQL์„ย ???ย  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒค๋”์˜ ํŠน์ • ํ•จ์ˆ˜ ๋˜๋Š” ์ƒ์„ฑ์— ์˜์กด์ ์ธ ์ฟผ๋ฆฌ๋ฌธ์ด ์žˆ์„ ๋•Œย (์˜ˆย :ย ํ†ต๊ณ„ ์—…๋ฌด) ๋„ค์ดํ‹ฐ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ• ์ˆ˜๋ฐ–์— ์—†๋‹ค