1. 통보 사항
- 전반적으로 과제물은 다들 잘 작성했음
- 팀원 모두 각자 만든 엔티티에 대한 레포지토리 인터페이스를 잘 생성해줬기 때문에, 레포지토리의 save() 메소드를 통해 일관되게 데이터를 DB에 저장할 수 있었고 DB 저장 로직에서 EntityManager를 직접 사용할 필요가 사라졌음
2. 블로그 강의 내용★
1) @Primary 어노테이션
- EntityManagerFactoryBean, DataSource, TransactionManager bean은 각각 2개이기 때문에, 다음과 같이 자바 코드에서 bean의 이름을 통해 구분해야 했다.
@Transactional("transactionManager")
public void saveAllSampleData() {
...
}
- @Primary로 선정된 bean은 1순위로 적용되는 bean이기 때문에, 자바코드에서 이름을 명시하지 않아도 곧바로 적용된다.
@Bean
@Primary
public PlatformTransactionManager transactionManager() {
JpaTransactionManager jpaTransactionManager = new JpaTransactionManager(entityManagerFactory().getObject());
jpaTransactionManager.setDataSource(dataSource());
return jpaTransactionManager;
}
@Bean
public PlatformTransactionManager userTransactionManager() {
JpaTransactionManager jpaTransactionManager = new JpaTransactionManager(userEntityManagerFactory().getObject());
jpaTransactionManager.setDataSource(userDataSource());
return jpaTransactionManager;
}
@Transactional() // "transactionManager"가 자동으로 적용됨
public void saveAllSampleData() {
...
}
2) 특정 오브젝트만 검증하기
- @InitBinder의 파라미터에는 검증을 원하는 특정 오브젝트를 명시할 수도 있다.
@PostMapping("/test")
public String testResult(@Valid SQLData sqlData, BindingResult result, Model model){
...
}
@InitBinder("sqlData")
protected void initBinder(WebDataBinder binder) {
binder.setValidator(new SQLValidator());
}
3) 웹 페이지에 이미지 삽입하기
(1) applicatoin.properties 설정
- static-path-pattern은 요청 형식이고, static-locations는 실제 정적 파일을 저장할 경로다.
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/
위의 설정을 해석하면, /static/** 형식의 요청을 정적 파일에 대한 요청으로 간주하고, classpath:/static/ 에서 정적 파일을 찾는다. classpath는 기본경로가 src/main/java, src/main/resources다.
요청 예시는 바로 뒤에서 살펴볼 것이다.
(2) <img> 태그 사용
<!-- <img>의 src 속성으로 이미지 경로를 지정할 수 있음 -->
<img src="/static/img/sql.png" width="300px" height="300px">
※ src, width, height 외에도 더 많은 속성이 있음
(3) 결과
3. 디자인
1) 로그인
- 홈을 제외한 모든 메뉴에는 로그인 없이 접근할 수 없게 만들 것
- 로그인은 Session을 이용하여 접속 유지를 시킬 것
- 로그인을 하지 않은 상태라면 회원가입 및 로그인 버튼을 출력
- 로그인 상태라면 해당 영역에 닉네임과 현재 학습 진행도를 progress bar로 표시하고 로그아웃 버튼을 출력
2) UI 초안
- 형태를 완전히 똑같이 할 것은 아니고 이러한 느낌으로 할 예정이라고 이해하면 됨
<홈>
가장 마지막에 설계할 예정
<SQL 학습 토픽 목록>
해당 토픽을 누르면 해당 <SQL 학습> 페이지로 이동
<SQL 학습>
개념 설명1 -> 예제1 -> 개념 설명2 -> 예제2 -> 개념 설명3 -> 예제3 -> .... 로 반복
하단에는 해당 토픽의 <SQL 테스트> 페이지로 이동할 수 있도록 함
<SQL 테스트 토픽 목록>
<SQL 테스트>
자유 형식으로 하되, ajax를 사용하여 채점 결과를 페이지 넘김 없이 확인할 수 있도록 표시할 예정
<게시판>
버그 게시판, 자유 게시판으로 나눌 예정
게시글 목록에는 각 게시글의 글 번호, 제목, 작성자, 댓글 수, 조회 수, 작성자를 표시한다.
<게시글>
게시글 조회 : 이름, 제목, 내용을 표시하고 그 밑에는 댓글을 표시
게시글 및 댓글 작성/편집 : 이름, 비밀번호, 내용을 표시
게시글 및 댓글 삭제 : 비밀번호로 검증
3) SQL 학습 및 테스트 범위
http://www.tcpschool.com/mysql/intro
(1) 첫 번째 토픽
- SELECT를 제외한 MySQL의 기초 지식을 학습
(2) 두 번째 토픽 ~
SELECT문(출력) 학습에 집중
자세한 범위는 다음 회의 때 결정하도록 합시다.
'개발 프로젝트 > [팀] Web - SQL 교육 사이트' 카테고리의 다른 글
[팀 프로젝트] SQL 교육 사이트 - 20221009 중반 작업 안내 (0) | 2022.10.07 |
---|---|
[팀 프로젝트] SQL 교육 사이트 - 20220925 안내 사항 (0) | 2022.09.25 |
[팀 프로젝트] SQL 교육 사이트 - 20220912 안내 사항 (0) | 2022.09.12 |
[팀 프로젝트] SQL 교육 사이트 - 20220823 안내 사항 (0) | 2022.08.23 |
[팀 프로젝트] SQL 교육 사이트 - 20220806 작업 사항 (0) | 2022.08.06 |
댓글