Post

πŸ—‚οΈ Faker ν…ŒμŠ€νŠΈ 데이터

πŸ—‚οΈ Faker ν…ŒμŠ€νŠΈ 데이터

Faker λ„μž… κ·Όκ±°

  • ν•„μžλŠ” ν…ŒμŠ€νŠΈ λ°μ΄ν„°λŠ” λ§Œλ“€μ–΄μ§„ κΈ°λŠ₯을 톡해 생성해야 ν•œλ‹€κ³  μƒκ°ν–ˆλ‹€.
  • κΈ°μ‘΄ Sequence에 영ν–₯을 μ£Όκ±°λ‚˜ νŠΉμ • κΈ°λŠ₯에 연쇄 λ˜μ–΄ 생성해야 ν•˜λŠ” 데이터가 μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— SELECT 쿼리 μ™Έμ—λŠ” DBλ₯Ό ν†΅ν•œ 데이터 μ‘°μž‘μ„ μ§€μ–‘ν•΄μ™”λ‹€.
  • 그런데, λ°˜λŒ€λ‘œ μƒκ°ν•˜λ©΄ κΈ°μ‘΄ λ°μ΄ν„°λ‚˜ λ‹€λ₯Έ ν…Œμ΄λΈ”μ— 영ν–₯을 μ£Όμ§€ μ•ŠλŠ” μ„ μ—μ„œλŠ” DB μ‘°μž‘μ„ 톡해 데이터λ₯Ό 생성해도 λ¬΄λ°©ν•˜λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€.
  • μ •μž‘ 데이터λ₯Ό μƒμ„±ν•˜λ €λ‹ˆ, μ–΄λ–€ 값을 μ£Όμž…ν•΄μ•Ό ν• μ§€ μƒκ°ν•˜λŠ” 것에 λ²ˆκ±°λ‘œμ›€μ„ 느껴 μ‰½κ²Œ 더미 데이터λ₯Ό 생성할 수 μžˆλŠ” Faker 라이브러리λ₯Ό 찾게 λ˜μ—ˆλ‹€.

μ˜μ‘΄μ„± μ£Όμž…

1
2
/* Faker */
implementation 'net.datafaker:datafaker:2.2.2'

더미 데이터 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@SpringBootApplication
class Application

fun main(args: Array<String>) {
	runApplication<Application>(*args)
	
	val faker = Faker()
	val url = "jdbc:log4jdbc:postgresql://localhost:5432/postgres"
	val user = "postgres"
	val password = "1234"
	
	DriverManager.getConnection(url, user, password).use { conn ->
		val sql = "INSERT INTO tbl_notice (id, title, content, created_at, updated_at, writer_email) VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT (id) DO NOTHING"
		conn.prepareStatement(sql).use { stmt ->
			for (i in 1..101) {
				stmt.setInt(1, i)
				stmt.setString(2, faker.dog().name())
				stmt.setString(3, faker.dog().sound())
				stmt.setTimestamp(4, faker.date().birthday())
				stmt.setTimestamp(5, faker.date().birthday())
				stmt.setString(6, "test1@test.com")
				stmt.executeUpdate()
			}
			stmt.close()
		}
		conn.close()
	}
}
  • Kotlin μ–Έμ–΄λ‘œ μž‘μ„±λœ μ½”λ“œμ΄λ‹€.
  • ν”„λ‘œμ νŠΈλ₯Ό μ‹€ν–‰ν•˜λ©΄ 이제 main() λ©”μ„œλ“œμ™€ ν•¨κ»˜ INSERT문이 μ‹€ν–‰λœλ‹€.
  • ν”„λ‘œμ νŠΈλ₯Ό λ‹€μ‹œ μ‹€ν–‰ μ‹œ 더미 데이터가 이미 μ‘΄μž¬ν•  경우 IDκ°€ μ€‘λ³΅λ˜λŠ” 문제λ₯Ό κ³ λ €ν•΄μ•Ό ν•œλ‹€.

  • 101개의 데이터가 잘 μƒμ„±λ˜μ—ˆλ‹€.
This post is licensed under CC BY 4.0 by the author.