๐ŸŒ Backend

๋‹จ๊ณ„๋ณ„๋กœ ์„ฑ์žฅํ•˜์ž!
2022.06.29 SOLID ์›์น™ ์ข‹์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ 5๊ฐ€์ง€ ์›์น™ SRP: ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(Single Responsibility principle) OCP: ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™(Open/closed principle) LSP: ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™(Liskov Substitution principle) ISP: ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™(Interface Segregation principle) DIP: ์˜์กด๊ด€๊ณ„ ์—ญ์ „ ์›์น™(Dependency Inversion Principle ) 1. SRP ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ ํ•œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ง„๋‹ค. ํ•˜๋‚˜์˜ ์ฑ…์ž„์ด๋ผ๋Š” ๊ฒƒ์€ ๋ฌธ๋งฅ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ ํด ์ˆ˜๋„ ์žˆ๊ณ  ์ž‘์„ ์ˆ˜๋„ ์žˆ๊ธฐ์— ๋ชจํ˜ธํ•˜๋‹ค. ๋ณ€๊ฒฝ์ด ์ค‘์š”ํ•œ ๊ธฐ์ค€์ด๋‹ค. ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ ํŒŒ๊ธ‰ํšจ๊ณผ๊ฐ€ ์ ๋‹ค๋ฉด SRP๋ฅผ ์ž˜ ๋”ฐ๋ฅธ ๊ฒƒ..
AOP(Aspect Oriented Programming) 1. AOP๊ฐ€ ํ•„์š”ํ•œ Example public Long join(Member member){ long start = System.currentTimeMillis(); try{ //๊ฐ™์€ ์ด๋ฆ„์ด ์žˆ๋Š” ์ค‘๋ณต ํšŒ์›X ๋ผ๊ณ  ๊ฐ€์ • validateDuplicateMember(member); //์ค‘๋ณต ํšŒ์› ๊ฒ€์ฆ memberRepository.save(member); return member.getId(); }finally { long finish = System.currentTimeMillis(); long timeMs = finish - start; System.out.println("join = " + timeMs + "ms"); } } ๋งŒ์•ฝ ์œ„์™€ ๊ฐ™์ด ..
2022.06.27 I. JPA 1. ํŠน์ง• (1) Connection, PreparedStatement, Resultset ๋“ฑ ๋ฐ˜๋ณต ์ฝ”๋“œ๋Š” ๋ฌผ๋ก ์ด๊ณ , ๊ธฐ๋ณธ์ ์ธ SQL๊นŒ์ง€ JPA๊ฐ€ ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ์‹คํ–‰ํ•ด์คŒ (2) SQL๊ณผ ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์˜ ์„ค๊ณ„์—์„œ ๊ฐ์ฒด ์ค‘์‹ฌ์˜ ์„ค๊ณ„๋กœ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ „ํ™˜ ํ•  ์ˆ˜ ์žˆ๋‹ค. (3) ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ๋œ๋‹ค. (4) JPA๋Š” ์ž๋ฐ” ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค์ด๊ณ , ๊ตฌํ˜„์ฒด๋Š” Hibernate๋“ฑ๋“ฑ์˜ vendor๋“ค์ด ์žˆ์Œ. (5) JPA๋ฅผ Spring์—์„œ ํ•œ๋ฒˆ ๊ฐ์‹ธ์„œ ์ œ๊ณตํ•˜๋Š”๊ฒŒ Spring Data JPA์ž„. 2. ์ดˆ๊ธฐ ์„ค์ • (1) build.gradle์— jpa์ถ”๊ฐ€ implementation 'org.springframework.boot:spring-boot-starter-data-jpa' (2) re..
2022-06-24 ํŒ€ ํ”„๋กœ์ ํŠธ 3๊ฐœ.. + ๊ธฐ๋ง๊ณ ์‚ฌ๋กœ ์ธํ•ด 20์ผ๋งŒ์— ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.. ์˜ค๋žœ๋งŒ์— ๋ณด๋Š” ๊ฒƒ์ด๋‹ˆ ๋งŒํผ ์•ž์— ์ •๋ฆฌํ•œ ๋‚ด์šฉ๋“ค์„ ์ฝ์–ด๋ณด๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ํ•œ๋‹ค Spring JdbcTemplate 1. ํŠน์ง• Pure Jdbc์™€ ๋™์ผํ•œ ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰ Mybatis์™€ Spring JdbcTemplate์€ JDBC API์—์„œ ์ด์ „์— ๋ดค๋˜ Connection์—ฐ๊ฒฐํ•˜๊ณ  ๋“ฑ๋“ฑ์˜ ๊ณผ์ •์—์„œ ๋ฐ˜๋ณต๋œ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•ด์คŒ. SQL์€ ๊ทธ๋Œ€๋กœ ์ง์ ‘ ์ž‘์„ฑํ•ด์•ผ ํ•จ. 2. Example public class JdbcTemplateMemberRepository implements MemberRepository{ private final JdbcTemplate jdbcTemplate; @Autowired public JdbcTemp..
2022.06.04 Spring์—์„œ JDBC๋กœ DB ์ ‘๊ทผ ํ•˜๋Š” ๋ฐฉ๋ฒ• 1. ์ดˆ๊ธฐ ์„ค์ • (1) build.gradle์— jdbc, h2 ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' (2) resources/application.properties์— ์Šคํ”„๋ง ๋ถ€ํŠธ db ์—ฐ๊ฒฐ ์„ค์ • ์ถ”๊ฐ€ spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=khs 2. JdbcMemeberReposito..
2022.06.02 Spring DB ์ ‘๊ทผ ๋ฐฉ๋ฒ• H2 DB Pure JDBC ์Šคํ”„๋ง JDBCTemplate JPA ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA 1. H2 DB (1) ์„ค์น˜ ๋ฐ ์‹คํ–‰ https://www.h2database.com ๋ฅผ ํ†ตํ•ด H2๋ฅผ ์„ค์น˜ํ•œ๋‹ค. cmd์—์„œ ์„ค์น˜ํ•œ ๊ฒฝ๋กœ๋กœ ๋“ค์–ด๊ฐ€์„œ h2.batํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ฉด(๋งค๋ฒˆ ์“ธ๋•Œ๋งˆ๋‹ค ์‹คํ–‰ํ•ด์•ผ ํ•จ) ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒˆ๋กœ์šด cmd์ฐฝ์ด ๋‚˜์˜ค๋ฉด์„œ h2๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์ฐฝ๋„ ๊ฐ™์ด ๋‚˜์˜ด ์ด๋Ÿฌํ•œ ์ฐฝ์ด ๋‚˜์˜จ๋‹ค! (2) ์ตœ์ดˆ์— DB ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ์ ‘์† ๋ฐฉ๋ฒ• DBํŒŒ์ผ์ด ์†ํ•ด์žˆ์„ ๊ฒฝ๋กœ+dbํŒŒ์ผ์ด๋ฆ„์„ JDBC URL ๋ถ€๋ถ„์— jdbc:h2: ๋’ค์— ์ž…๋ ฅํ•œ๋‹ค. ex) jdbc:h2:D:\Spring\Spring_Inflearn\dbTest\test ์—ฐ๊ฒฐํ•˜๋ฉด ํŒŒ์ผ 2๊ฐœ๊ฐ€ ์ƒ์„ฑ๋จ ์ฐธ๊ณ ) ํ•˜์ง€๋งŒ, ..
DevPoong
'๐ŸŒ Backend' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (4 Page)