2022.06.29 1. Spring์ ํ์ ์๋ฐ ์ง์์ EJB(Enterprise Java Beans)๋ผ๋ ๊ธฐ์ ์ด ์์๋ค. ์ง๊ธ์ผ๋ก ๋ฐ์ง๋ฉด Spring + Jpa๋ฅผ ๋ค ํฉ์ณ ๋์ ๊ธฐ์ . ์ปจํ
์ด๋, ๋ถ์ฐ ๋ฑ์ ๊ธฐ์ ์ด ํ๊ธฐ์ ์ด์๋๋ฐ ๊ฐ๊ฒฉ์ด ์์ฒ๋ง์์ผ๋ก ๋น์๋ค.. ์ด๋ก ์ ์ผ๋ก๋ ์ข์๋ฐ EJB์ ์์กด์ ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ณต์กํ๊ณ ๋๋ฆฐ๋ฐ๋ค๊ฐ ๋น์ธ๊ธฐ๊น์ง ํ๋ ๊ฐ๋ฐ์๋ค์ด ๋ง์ด ํ๋ค์๋ค๊ณ ํ๋ค. ์ด๋ ๊ฒ ๋๋ ๋ค์ ์ค๋๋ ๋ฐฉ์์ ๊ฐ๋จํ ์๋ฐ๋ก ๋์๊ฐ์ ํด์ ๋์จ ์ฉ์ด๊ฐ POJO(Plain Old Java Object)๋ค. ๊ทธ๋์ ๊ฐ๋ฐ์๋ค์ด ์ง์ ์คํ๋ง, hibernate๋ฑ์ ์คํ ์์ค๋ฅผ ๋ง๋ค๊ฒ ๋์๋ค. ์คํ๋ง์ EJB ์ปจํ
์ด๋๋ฅผ ๋์ฒดํ๊ณ ๋จ์ํ์๋ค. Hibernate๋ EJB์ ์ํฐํฐ๋น ๊ธฐ์ ์ ๋์ฒดํ์๊ณ ,..
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..