티스토리 뷰
1. DAO,DTO(=VO, Value Object)
DAO : data에 접근용으로 하나 만들어놓고 계속 사용하는 객체
--> DB와 연결할 Connection 객체 생성
--> DB와 연결
--> 작업 후 리소스를 시스템에 돌려준다.
DTO : Controller,DB,View로 데이터를 뿌려주는 객체
--> getter,setter만 존재
VO : DTO와 역할 같지만 getter만 존재한다.(Read Only)
2. DTO vs VO
둘다 데이터 가지고있고, 전송하는 클래스들이지만
VO는 넓은범위에서 쓰이며, 좀더 영속적인 정보들을 담고있고, mapper와 연결한다.
하지만, DTO는 View -> Controller 같이 레이어 이동시 꼭 필요한 정보만
최소한으로 담고, 영속적이지 않아도 되는 데이터를 주로 운반한다.
3. @Slf4j (Lombok)
해당 클래스의 로거를 자동으로 생성해준다.
ex) private static final org.slf4j.Logger log
= org.slf4j.LoggerFactory.getLogger(LogExample.class);
4. @EnableScheduling, @Scheduled
@EnableScheduling 어노테이션을 설정 클래스에 작성하고,
원하는 메소드에 @Scheduled(cron={"크론문법시간"}) 을 통해서 스케줄 등록.
그러면, 스프링에서 bean scanning 과정에서 위의 @Scheduled 어노테이션을 찾고
Scheduled가 붙은 메소드를 ThreadPoolScheule 클래스가 자동으로 생성되며
스케줄링 작업을 설정할 수 있게 된다.
5. @EntityScan(basePackages={ 패키지 목록 }), @EnableJpaRepositories
--> JPA 관련 빈들을 등록하는 어노테이션
--> @EntityScan은 basePackages 속성에 정의된 패키지 하위에서
JPA 엔티티들(@Entity 어노테이션 설정된 도메인 클래스)을 스캔한다.
6. 스프링 db 커넥션 관련설정
spring.datasource.test-while-idle=true // idle 상태일 때 테스트 실행여부
spring.datasource.tomcat.test-on-borrow=true // 커넥션 가져올때 테스트 수행여부
spring.datasource.tomcat.validation-query=select 1 // 테스트 수행문
spring.datasource.tomcat.time-between-eviction-runs-millis=3600000 // idle상태가 3600초 지속되면 테스트 수행하라
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
7. Mybatis 반복되는 쿼리 다른곳에서 재사용하기(sql id)
<sql id="a">
SELECT * FROM TABLE1
</sql>
<select id="getList" resultType="hashmap">
<include refid="a" />
WHRE name = #{value}
</select>
8. mybatis #{}와 ${}의 차이점
#{} : 파라미터가 ''로 감싸지는, string 형태로 들어온다.(쿼리주입예방)
${} : 파라미터가 입력한대로 들어온다.(테이블명 or 컬럼명 전달시 사용)
--> 보안적으로, 사용자의 입력을 문자열로 감싸는 #을 쓰는게 좋다.