๐Ÿ‘ฉ๐Ÿป‍๐ŸŒพ

[์šฐ๋ฆฌFISA ํด๋ผ์šฐ๋“œ ์—”์ง€๋‹ˆ์–ด๋ง] 4์ฃผ์ฐจ ํšŒ๊ณ  ๋ณธ๋ฌธ

Activity/์šฐ๋ฆฌFISA

[์šฐ๋ฆฌFISA ํด๋ผ์šฐ๋“œ ์—”์ง€๋‹ˆ์–ด๋ง] 4์ฃผ์ฐจ ํšŒ๊ณ 

์ฅฌ์Šค์ด 2024. 8. 4. 22:20
728x90

3์ฃผ์ฐจ ํ•™์Šต์ผ์ง€๋Š” ์ •์ฒ˜๊ธฐ ์‹ค๊ธฐ ๋ง‰ํŒ ๋ฒผ๋ฝ์น˜๊ธฐํ•˜๊ณ  ์‹œํ—˜ ๋ณธ๋‹ค๊ณ  ๋ชป ์ผ์ง€๋งŒ,,,(๊ฐ€์ฑ„์  ๊ฒฐ๊ณผ ํ•ฉ๊ฒฉ,,,โญ๏ธ) 4์ฃผ์ฐจ๋Š” ๋‹ค์‹œ ์—ด์‹ฌํžˆ ์จ๋ณด๋„๋ก!

4์ฃผ์ฐจ์— ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€ ํฌ๊ฒŒ ๋‚˜๋ˆ ๋ณด๋ฉด,

JPA ํ•™์Šต / ํ˜„์ง์ž๋ถ„๋“ค์˜ ํŠน๊ฐ• / ํ”„๋กœ์ ํŠธ ๊ธฐํš

์ด ์žˆ์—ˆ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ ๊ฐ™๋‹ค!


1๏ธโƒฃ JPA ํ•™์Šต

JPA๋ž€?

  • Java Persistence API
  • ORM(Object-Relational Mapping) ๊ธฐ์ˆ ์˜ ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค
  • Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ RDBMS๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ด๋ฅผ ๊ฐ์ฒด์™€ ๋งคํ•‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค
  • JPA๋ฅผ ์œ„ํ•ด์„œ ๊ตฌํ˜„์ฒด๊ฐ€ ํ•„์š”ํ•œ๋ฐ, Hibernate๊ฐ€ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋จ

์˜ˆ์‹œ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์•Œ์•„๋ณด๋Š” JPA ์–ด๋…ธํ…Œ์ด์…˜ ์‚ฌ์šฉ๋ฒ•

@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor

@Getter
@Setter
@ToString

@SequenceGenerator(name = "team_seq", sequenceName = "team_seq_id", initialValue = 1, allocationSize = 50)
@Entity
public class Team {
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "team_seq")
	@Column(name = "team_id")
	private long teamId;

	@NonNull
	@Column(name = "team_name", length = 20)
	private String teamName;
}
  • @SequenceGenerator : ์‹œํ€€์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ (= ์‹œํ€€์Šค ์ƒ์„ฑ๊ธฐ)
  • @Entity : Team ํด๋ž˜์Šค๋ฅผ DB ๋‚ด์— ํ…Œ์ด๋ธ”๋กœ ์ƒ์„ฑ
  • @Id : ๊ธฐ๋ณธํ‚ค๋กœ ์„ค์ •
  • @GeneratedValue 
    • strategy : ์‹œํ€€์Šค๋ฅผ ์‚ฌ์šฉํ•œ ํ‚ค ์ƒ์„ฑ ์ „๋žต
    • generator : ์‚ฌ์šฉํ•  ์‹œํ€€์Šค ์ƒ์„ฑ๊ธฐ ์ด๋ฆ„
  • @NonNull : 
  • @Column(name = " ? ? ? ") : ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์˜ ํ•„๋“œ๋ฅผ DB ํ…Œ์ด๋ธ”์˜ column์— ๋งคํ•‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
@Getter
@Setter
@ToString

@SequenceGenerator(name = "member_seq", sequenceName = "member_seq_id", allocationSize = 50, initialValue = 1)
@Table(name = "ce_member") // ์‹ค์ œ ์ƒ์„ฑ๋˜๋Š” table ์ด๋ฆ„
@Entity
public class Member {
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "member_seq")
	@Column(name = "member_id")
	private long memberId;

	@NonNull
	@Column(length = 20)
	private String name;

	@NonNull
	@OneToOne // To ๊ธฐ์ค€ ์•ž์— ์žˆ๋Š”๊ฒŒ ๋ฉค๋ฒ„(์ฃผ์ฒด), ๋’ค์— ์žˆ๋Š”๊ฒŒ ํŒ€ -> ๊ฐ ์„ ์ˆ˜๋Š” ํ•œ ํŒ€์— ์†Œ์† 
	@JoinColumn(name = "team_id")
	private Team teamId;
}
  • @OneToOne : JPA์˜ ๊ด€๊ณ„ ๋งคํ•‘ ์• ๋„ˆํ…Œ์ด์…˜์œผ๋กœ, ์ผ๋Œ€์ผ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋ƒ„
  • @JoinColumn : ์™ธ๋ž˜ํ‚ค๋ฅผ ์ง€์ • -> ์œ„ ์ฝ”๋“œ์—์„œ๋Š” team_id ๋ฅผ ์™ธ๋ž˜ ํ‚ค๋กœ ์‚ฌ์šฉ

๋‘ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ์ด์™€ ๊ฐ™์€ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋จ

+ properties ์„ค์ • ๋ฌธ์„œ

์•„๋ž˜ ์„ค์ • ๋ฌธ์„œ์—์„œ <property name="hibernate.hbm2ddl.auto" value="?" />์—์„œ value๊ฐ€ none์ผ ๊ฒฝ์šฐ์—๋Š” ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๊ณ , "create"์ผ ๊ฒฝ์šฐ์—” ์กด์žฌํ•˜๋˜ ํ…Œ์ด๋ธ”์„ dropํ•˜๊ณ  ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์„œ crud๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ

<!-- oracle ์„ค์ • ์ •๋ณด -->
<properties>
    <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver" />
    <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@127.0.0.1:1521:xe" />
    <property name="javax.persistence.jdbc.user" value="scott" />
    <property name="javax.persistence.jdbc.password" value="tiger" />
    
    <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
    <property name="hibernate.show_sql" value="true" /> 
    <!-- <property name="hibernate.format_sql" value="true" /> -->
    
    <property name="hibernate.hbm2ddl.auto" value="none" /> 
</properties>

2๏ธโƒฃ IT ํ˜„์ง์ž๋ถ„๋“ค์˜ ํŠน๊ฐ•

ํ’€์Šคํƒ, ๋ฐ์ดํ„ฐ, ํด๋ผ์šฐ๋“œ, ์ด๋ ‡๊ฒŒ ์„œ๋กœ ๋‹ค๋ฅธ ๋ถ„์•ผ์˜ ํ˜„์ง์ž 3๋ถ„๊ป˜์„œ ์˜ค์…”์„œ ํŠน๊ฐ•์„ ์ง„ํ–‰ํ•ด์ฃผ์…จ๋‹ค.

3๋ถ„ ๋ชจ๋‘ ๋น„์ „๊ณต์ž์…จ๊ณ , ์ฝ”๋”ฉ์„ ๋Šฆ๊ฒŒ ์ ‘ํ•˜์…จ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋„ˆ๋ฌด ๋Œ€๋‹จํ•œ ์ปค๋ฆฌ์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ๊ณ„์…”์„œ ์†์œผ๋กœ ๊ณ„์† '์™€,,,, ๋Œ€๋‹จํ•˜๋‹ค,,,,'๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค ๐Ÿ˜ฎ

์ทจ๋ฝ€๋ฅผ ์œ„ํ•œ ๊ฟ€ํŒ๐Ÿฏ๋“ค๋„ ๋งŽ์ด ์•Œ๋ ค์ฃผ์…จ๋Š”๋ฐ ์ •๋ง ์ƒ๊ฐ์ง€๋„ ๋ชปํ•œ ๋ถ€๋ถ„๋“ค๋„ ์žˆ์—ˆ๊ณ , '์ด๋Ÿฐ ๋ฐฉ๋ฒ•์œผ๋กœ๋„ ์ ๊ทน์ ์œผ๋กœ ์‹œ๋„ํ•ด๋ด์•ผ๊ฒ ๋‹ค' ์‹ถ์€ ๋‚ด์šฉ๋“ค๋„ ๋งŽ์•„์„œ ๋„ˆ๋ฌด ์œ ์ตํ•œ ์‹œ๊ฐ„์ด์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  3๋ถ„ ์ค‘์— ๋งˆ์นจ ๋‚ด๊ฐ€ ์˜ฌํ•ด ์ƒ๋ฐ˜๊ธฐ์— ์ตœ์ข…๋ฉดํƒˆ๐Ÿฅฒํ•œ ๊ธฐ์—…์ด ์†ํ•œ ๊ทธ๋ฃน ๊ณ„์—ด์‚ฌ์—์„œ ๊ทผ๋ฌดํ•˜๊ณ  ๊ณ„์…จ๋˜ ํ˜„์ง์ž๋ถ„์ด ๊ณ„์…จ๊ณ ,

๋‚ด๊ฐ€ ๋ฉด์ ‘ ๋•Œ ๋ฐ›์€ ์งˆ๋ฌธ๊ณผ ๊ด€๋ จํ•œ ๊ธฐ์ˆ ์„ ๋‹ค๋ฃจ๋Š” ๋ถ€์„œ์—์„œ ๊ทผ๋ฌดํ•˜์‹ ๋‹ค๊ณ  ํ•ด์„œ ํŠน๊ฐ• ๋๋‚˜๊ณ  ํ•ด๋‹น ๊ธฐ์ˆ ์— ๊ด€๋ จํ•˜์—ฌ ์ด๊ฒƒ์ €๊ฒƒ ๋ฌผ์–ด๋ณด๊ธฐ๋„ ํ–ˆ๋‹ค!(์™„์ „ ๋Ÿญํ‚ค๋น„ํ‚ค๐Ÿ€๐Ÿ€๐Ÿ€ + ๋ช…ํ•จ๋„ ๋ฐ›์•˜๋‹ค,,,ํ›„ํ•˜ํ›„ํ•˜)


๋‚˜๋Š” ์Šคํ‹ฐ๋ธŒ ์žก์Šค์˜ 'Connecting the dots' ์—ฐ์„ค์ด ๋‚ด ๊ฐ€์น˜๊ด€๊ณผ ์ž˜ ๋ถ€ํ•ฉํ•ด์„œ ์ข‹์•„ํ•œ๋‹ค!
๊ฐ‘์ž๊ธฐ ์ด ์–˜๊ธฐ๋ฅผ ์™œ ํ•˜๋ƒ๋ฉด, ๋‚ด๊ฐ€ ํ•˜๋Š” ๋ชจ๋“  ๊ฒฝํ—˜์ด ๊ฒฐ๊ตญ ๋‹ค ์—ฐ๊ฒฐ๋˜์–ด ๋‚˜์—๊ฒŒ ํฐ ๊ฐ€์น˜๋ฅผ ์ค€๋‹ค๋Š” ๊ฒƒ์„ ํ˜„์ง์ž๋ถ„์˜ ๊ฒฝํ—˜์„ ๋“ค์œผ๋ฉด์„œ ํ•œ ๋ฒˆ ๋” ๋Š๊ผˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋‚˜๋„ ๊ณ„์†ํ•ด์„œ ๋‚ด๊ฐ€ ๋†“์ธ ์ƒํ™ฉ์— ๋งค ์ˆœ๊ฐ„ ์ตœ์„ ์„ ๋‹คํ•ด ํฐ ๊ฒฐ์‹ค์„ ์–ป๊ธฐ๋ฅผ ๊ฐ„์ ˆํžˆ ๋ฐ”๋ผ์•ผ์ง€,,,๐Ÿ”ฅ๐Ÿ™๐Ÿป

 

๐Ÿ”— ======== ์Šคํ‹ฐ๋ธŒ ์žก์Šค ์—ฐ์„ค์ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์•„๋ž˜ ๋งํฌ ํด๋ฆญ ======== ๐Ÿ”—

https://studying-it.tistory.com/19

 

์Šคํ‹ฐ๋ธŒ์žก์Šค์˜ ๋ช…์—ฐ์„ค(Connecting the dots)

"Connecting the dots" ์• ํ”Œ์˜ CEO ์Šคํ‹ฐ๋ธŒ ์žก์Šค(Steve Jobs)์˜ ์—ฐ์„ค ์ค‘ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ๊ฒƒ์€ Stanford ๋Œ€ํ•™๊ต์—์„œ์˜ ์—ฐ์„ค์ด๋‹ค. Stanford ๋Œ€ํ•™๊ต์—์„œ ์Šคํ‹ฐ๋ธŒ ์žก์Šค๋Š” ์ž์‹ ์˜ ์ธ์ƒ์— ๊ด€๋ จ๋œ ์ด์•ผ๊ธฐ 3๊ฐ€์ง€๋ฅผ ํ–ˆ๋Š”๋ฐ ๊ทธ

studying-it.tistory.com


3๏ธโƒฃ ํ”„๋กœ์ ํŠธ ๊ธฐํš ๋‹จ๊ณ„

08.13 ~ 08.16์— ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•  ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธฐํšํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.

์ด๋•Œ, ๊ฐ•์‚ฌ๋‹˜๊ป˜์„œ ๋ง์”€ํ•ด์ฃผ์‹  ์š”๊ตฌ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1. ELK๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋กœ๊ทธ ๋ถ„์„
2. ์ˆ˜์ต๊ตฌ์กฐ ๊ณ ๋ ค
3. RDBMS ํ”„๋กœ์‹œ์ € ํ•˜๋‚˜ ๊ตฌ์ถ•ํ•ด์„œ ์ ์šฉ

 

์ด์™ธ์—๋„ ๋‹ค๋ฅธ ์ œ์•ฝ์กฐ๊ฑด๋“ค๋„(ex. gitbash ์‚ฌ์šฉ) ์žˆ์—ˆ์ง€๋งŒ, ์œ„ 3๊ฐœ์˜ ์กฐ๊ฑด์„ ์ถฉ์กฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ์ฃผ์ œ๋ฅผ ์„ ์ •ํ•˜๋Š” ๋ฐ์— ์žˆ์–ด์„œ ์–ด๋ ค์›€์ด ์žˆ์—ˆ๋‹ค.

๊ทธ๋ž˜๋„ ๋‹คํ–‰ํžˆ ์ข‹์€ ์ฃผ์ œ๊ฐ€ ๋‚˜์™”๊ณ , ์žฌ๋ฏธ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ๋  ๊ฑฐ ๊ฐ™๋‹ค! (HINT : ๐Ÿ”ฅ โœˆ๏ธ ๐Ÿ’ณ ๐Ÿ‘ฉ๐Ÿป‍๐ŸŽค ๐Ÿง‘๐Ÿป‍๐ŸŽค ๐Ÿ˜†)

ํ”„๋กœ์ ํŠธ๋ช…์€ ๋‚ด๊ฐ€ ์•„์ด๋””์–ด ๋‚ธ '์œ„๋•'์œผ๋กœโœŒ๐Ÿป

๋ชฉ์š”์ผ ์ˆ˜์—… ๋ง‰๋ฐ”์ง€์— ์ฃผ์ œ๋ฅผ ์žก์•„์„œ ๊ธˆ์š”์ผ์—๋Š” ERD ์ž‘์—…๊ณผ ๋Œ€๋žต์ ์ธ UI๋ฅผ ๊ตฌ์ƒํ–ˆ๋Š”๋ฐ, ์˜ค๋žœ๋งŒ์— DB ๋ชจ๋ธ๋ง ํ•˜๋ ค๋‹ˆ๊นŒ ๋จธ๋ฆฌ๊ฐ€ ์ž˜ ์•ˆ ๋Œ์•„๊ฐ”,,,,๋‹ค,,,,

๋Œ์•„์˜ค๋Š” ์ฃผ์— ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ๋งˆ๋ฌด๋ฆฌ ํ•˜๊ณ , ๊ธฐ๋Šฅ๋ช…์„ธ์„œ ์ž‘์„ฑ๋„ ํ•˜๊ณ  ํ•ด์•ผ๊ฒ ๋‹ค,,!! ๋ณธ๊ฒฉ์ ์ธ ๊ฐœ๋ฐœ ์ „์— ๋‚จ์€ ์ผ์ฃผ์ผ ๋™์•ˆ ๋ฌธ์„œ ์ž‘์—… ๋‹ค ํ•˜๊ณ  ํ•˜๋ ค๋ฉด ๋˜ ๋ฐ”์˜๋”” ๋ฐ”์œ ํ•œ ์ฃผ๊ฐ€ ๋˜๊ฒ ๊ตฐ 5์ฃผ์ฐจ๋„ ์ดํŒ…ํ™”๐Ÿ‘Š๐Ÿป๐Ÿ”ฅ

728x90
Comments