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๋ฅผ ์ ๋ฐ๋ฅธ ๊ฒ..
๐ Backend
๋จ๊ณ๋ณ๋ก ์ฑ์ฅํ์!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๊ฐ๊ฐ ์์ฑ๋จ ์ฐธ๊ณ ) ํ์ง๋ง, ..