코로나가 심해지면서 교육이 비대면으로 전환됐다. 먼거리를 이동하며 교육을 듣던 나에게는 좋은 소식이었지만, 집에서 온라인으로 교육을 듣다보니 확실히 집중력을 유지하는게 어려운 일이었다.
물론 오프라인에서도 집중력이 좋았다는 건 아니다ㅎ평소 백엔드 직무를 희망하고 있는 나로서는 이번에 진행하는 스프링에 집중하여 공부할 필요가 있었다. 그렇기에 교육에 최대한 집중해 원하는 배움을 얻을 것이다!!
SpringBoot + Oracle + Mybatis 웹 서비스 CRUD 실습을 진행했다.
# Oracle
spring.datasource.hikari.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.hikari.jdbc-url=jdbc:oracle:thin:@localhost:1521:XE
spring.datasource.hikari.username=DB아이디
spring.datasource.hikari.password=DB비밀번호
// build gradle file
implementation ('lib/ojdbc8.jar')
// DatabaseConfiguration.java
...
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception{
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:/mybatis/**/*.xml"));
return sqlSessionFactoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory){
return new SqlSessionTemplate(sqlSessionFactory);
}
...
Web Browser <--> Controller <-> Service <-> DAO(Mapper) <-> Oracle DB
@Controller
public class MemberController {
@Autowired
private MemberService memberService;
...
@RequestMapping("/admin/list")
public String list(HttpServletRequest request) {
...
List<MemberDTO> list = service.list(map);
...
request.setAttribute("list", list);
return "/member/list";
}
}
@Service
public class MemberService {
@Autowired
private MemberMapper mapper;
public List<MemberDTO> list(Map map) {
return mapper.list(map);
}
}
// interface memberMapper class
public interface MemberMapper {
...
List<MemberDTO> list(Map map);
}
<!-- member.xml -->
<select id="list" parameterType="Map" resultType="MemberDTO">
select *
from member
</select>
import lombok.Data;
@Data
public class MemberDTO {
private String id ;
private String passwd ;
private String name ;
...
}
하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다는 개념의 전송방식을 결합