๐Ÿซ ํ•™๊ณผ ๊ณต๋ถ€
06-File-Management Directory File Directory Directory๋„ ์ผ์ข…์˜ ํŒŒ์ผ์ด๋‹ค ํ•ด๋‹น ํŒŒ์ผ FCB์˜ ์‹๋ณ„์ž๋งŒ ์ €์žฅํ•œ๋‹ค inode (index node) Unix์—์„œ๋Š” FCB์™€ inode๊ฐ€ ๊ฐ™๋‹ค ๋ชจ๋“  ํŒŒ์ผ, ํด๋”๊ฐ€ Uniqueํ•œ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. (root๋Š” 2๋กœ ๊ณ ์ •) File Systems ํŒŒํ‹ฐ์…˜์˜ ๊ตฌ์กฐ boot block, super block, FCB list, data blocks Partition Control block (Super block) blocks ๊ฐœ์ˆ˜, free data blocks ๊ฐœ์ˆ˜, free data blocks list ์ €์žฅ inode table, free inode ๊ฐœ์ˆ˜, free inode list ์ €์žฅ File Control Block (FCB) UNIX์—์„œ 128byte์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค ํŒŒ์ผ ์ด๋ฆ„, ํŒŒ์ผ ํฌ๊ธฐ, uid, gid, ํŒŒ์ผ ์ฃผ์†Œ ๋“ฑ๋“ฑ ์ €์žฅ Management of Data Blocks Contiguous Allocation ๊ฐ๊ฐ์˜ ํŒŒ์ผ์„ ์—ฐ์†์ ์œผ๋กœ ์ €์žฅ Direct Access File grow problem ์กด์žฌ External fragmentation, Internal fragmentation ๋ฐœ์ƒ Chained Allocation Direct acess File grow problem X External fragmentation X Poor data safety (์•ž ๋ธ”๋ก์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๋’ค ๋ธ”๋ก๋„ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ) Indexed Allocation (ํ˜„๋Œ€์— ์‚ฌ์šฉ) Direct access File grow problem X External fragmentation X Medium level data safety (index block๋งŒ ๊ดœ์ฐฎ์œผ๋ฉด ๋œ๋‹ค) Index block์ด ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•˜๋‹ค Free-Space Management Counting N-M… N๋ฒˆ๋ถ€ํ„ฐ M๊ฐœ์˜ ๋ธ”๋ก์ด ๋น„์–ด์žˆ๋‹ค.
IoC (Inversion of Control) ์ œ์–ด์˜ ์—ญ์ „ ๋ฉ”์†Œ๋“œ๋‚˜ ๊ฐ์ฒด์˜ ํ˜ธ์ถœ ์ž‘์—…์ด, ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋ผ, ์™ธ๋ถ€์—์„œ ๊ฒฐ์ •๋˜๋Š” ๊ฒƒ ๊ฐ์ฒด ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ์ค„์ด๊ณ  ์œ ์—ฐํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ํ•œ๋‹ค IoC Container IoC๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๊ณณ, IoC๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋Œ€์ƒ IoC ํด๋ž˜์Šค ์˜ˆ์ œ 1 public class OrderContext { 2 public OrderRepository orderRepository() { 3 return new OrderRepository(); 4 } 5 6 public OrderService orderService() { 7 return new OrderService(voucherService(), orderRepository()); 8 } 9 } ์œ„ ์˜ˆ์ œ์—์„œ OrderContext ํด๋ž˜์Šค๊ฐ€ IoC ์ปจํ…Œ์ด๋„ˆ ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋‹ค BeanFactory Spring container์˜ ์ตœ์ƒ์œ„ interface Bean์„ ์ƒ์„ฑํ•˜๊ณ  ์˜์กด๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ IoC ์ปจํ…Œ์ด๋„ˆ Lazy-loading ๋ฐฉ์‹ ์‚ฌ์šฉ : Bean์„ ์‚ฌ์šฉํ• ๋•Œ loading -> ๊ฒฝ๋Ÿ‰ ์ปจํ…Œ์ด๋„ˆ ApplicationContext BeanFactroy์˜ ๊ตฌํ˜„์ฒด Eager-loading ๋ฐฉ์‹ : Runtime์— Bean์„ loading <-> Lazy-loading AnnotationConfigApplicationContext ApplicationContext์˜ ๊ตฌํ˜„์ฒด Annotation ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ์‹ <-> XML๋ฐฉ์‹
์ƒํ™ฉ ์†Œ๋น„์ž๊ฐ€ ํŒ๋งค์ž์˜ ๋ฌผ๊ฑด์„ ๊ตฌ๋งคํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ ์ค‘์ด๋ผ๊ณ  ํ•˜์ž ๋ฌผ๊ฑด์„ ์ƒ€์„๋•Œ, ๋ฌผ๊ฑด์˜ ๊ฐ€๊ฒฉ๋งŒํผ ํŒ๋งค์ž์˜ ๋ˆ์€ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , ์†Œ๋น„์ž์˜ ๋ˆ์€ ๊ฐ์†Œ์‹œ์ผœ์•ผํ•œ๋‹ค ํŒ๋งค์ž์˜ ๋ˆ์€ ์ฆ๊ฐ€์‹œ์ผฐ๋Š”๋ฐ, ์†Œ๋น„์ž์˜ ๋ˆ์„ ๊ฐ์†Œ์‹œํ‚ค๋Š” ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค ์˜ค๋ฅ˜๊ฐ€ ๋‚œ ๊ฒฝ์šฐ, ํŒ๋งค์ž์˜ ๋ˆ์„ ์ฆ๊ฐ€์‹œํ‚ค๊ธฐ ์ด์ „์œผ๋กœ Rollback ํ•ด์•ผ ํ•œ๋‹ค ์œ„์˜ ๋‘๊ฐ€์ง€ ์—ฐ์‚ฐ์€ ํ•˜๋‚˜์˜ Transaction์œผ๋กœ ๋ฌถ์—ฌ์„œ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค Transaction ๊ด€๋ฆฌ์˜ ์ข…๋ฅ˜ Programmatic transaction management (ํ”„๋กœ๊ทธ๋ž˜๋ฐ์  ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ) Transaction ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ž‘์„ฑ ์˜ˆ์ œ - TransactionManager ์‚ฌ์šฉ 1// Bean ๋“ฑ๋ก 2@Bean 3public PlatformTransactionManager platformTransactionManager(DataSource dataSource) { 4 return new DataSourceTransactionManager(dataSource); 5} 6// ์‚ฌ์šฉํ•  ๋•Œ 7// ์ƒˆ๋กœ์šด ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•œ๋‹ค 8var transaction = transactionManager.
Bean Validation Annotation์„ ๋‹ฌ์•„์„œ Validation์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฃผ๋กœ jakarta.validation๊ณผ hibernate.validator ๋‘ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. Dependency Diagram ๊ตฌ์กฐ spring-boot-starter-validation -> hibernate-validator -> jakarta.validation-api jakarta.validation์—์„œ ์ง€์›ํ•˜๋Š” annotation Annotation Description @NotNull null์ด ์•„๋‹Œ๊ฐ€ ("", " " => ํ†ต๊ณผ) @NotEmpty null์ด ์•„๋‹ˆ๊ณ , size๊ฐ€ 0์ธ๊ฐ€ (" " => ํ†ต๊ณผ) @NotBlank null์ด ์•„๋‹ˆ๊ณ , trimํ•œ ๊ฒฐ๊ณผ๊ฐ€ empty์ธ๊ฐ€ @Size ๋ฌธ์ž์—ด, ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ํ•ด๋‹น ๋ฒ”์œ„์— ์žˆ๋Š”๊ฐ€ @Min ์ˆซ์ž๊ฐ€ ํ•ด๋‹น ๋ฒ”์œ„์— ์žˆ๋Š”๊ฐ€ @Max ์ˆซ์ž๊ฐ€ ํ•ด๋‹น ๋ฒ”์œ„์— ์žˆ๋Š”๊ฐ€ @Email ์ด๋ฉ”์ผ ํ˜•์‹์— ๋งž๋Š”๊ฐ€ @Pattern Regex(์ •๊ทœ์‹)์— ๋งž๋Š”๊ฐ€ @Past ๊ณผ๊ฑฐ์˜ ๋‚ ์งœ์ธ๊ฐ€ @Future ๋ฏธ๋ž˜์˜ ๋‚ ์งœ์ธ๊ฐ€ @Digits ์ •์ˆ˜, ์†Œ์ˆ˜ ์ž๋ฆฟ์ˆ˜๊ฐ€ ํ•ด๋‹น ๋ฒ”์œ„์— ์žˆ๋Š”๊ฐ€ @DecimalMin, @DecimalMax ์ž๋ฆฟ์ˆ˜๊ฐ€ ํ•ด๋‹น ๋ฒ”์œ„์— ์žˆ๋Š”๊ฐ€ (์†Œ์ˆ˜ ์ดํ•˜ ์ž๋ฆฟ์ˆ˜ ํฌํ•จ) @Positive, @PositiveOrZero, @Negative, @NegativeOrZero hibernate.