FrameWork
1. 프레임워크란?
홍캣
2019. 12. 2. 18:47
2019.12.02
1. 프레임워크
Framework란, 개발자가 소프트웨어를 개발함에 있어 코드를 구현하는 개발 시간을 줄이고, 코드의 재사용성을 증가시키기 위해 일련의 클래스 묶음이나 뼈대, 틀을 제공하는 라이브러리를 구현해 놓은 것.
->정리되지 않은 코드를 강제화 시켜서 미디어, 스크립트, css별로 나눌 수 있다.
2. 프레임워크의 특징
- 개발자가 따라야 하는 가이드를 제공한다.
- 개발할 수 있는 범위가 정해져 있다.
- 개발자를 위한 다양한 도구, 플러그인을 지원한다.
3. 장점
- 개발 시간을 줄일 수 있음
- 정형화 되어 있어 일정 수준 이상의 품질을 기대할 수 있음
- 유지보수가 쉬움
4. 단점
- 너무 의존하는 경우 개발자들의 능력이 떨어져서 스스로 직접 개발하는 것이 어려워짐
- 습득에 걸리는 시간이 필요함
5. 프레임워크의 종류
종류 | 설명 | 예시 |
영속성 프레임워크 | 데이터의 저장, 조회, 변경,삭제를 다루는 클래스 및 설정 파일들을 라이브러리화 하여 구현한 프레임워크 | mybatis, Hibernate |
자바 프레임워크 | JAVA EE를 통한 웹 어플리케이션 개발에 초점을 맞추어 필요한 요소들을 모듈화하여 제공하는 프레임 워크 | spring, 전자정부 표준,struts |
화면 구현 프레임워크 | front-end보다 쉽게 구현할 수 있게 틀을 제공하는 프레임워크 | bootstrap, foundation, MDL |
기능 및 지원 프레임워크 | 특정 기능이나 업무 수행에 도움을 줄 수 있는 기능을 제공하는 프레임워크 | Log4j, JUnit5 |
6. Mybaits
데이터의 입력, 조회, 수정, 삭제(CRUD)를 보다 편하게 사용하기 위해 xml로 구조화한 Mapper설정 파일을 통해서JDBC를 구현한 영속성 프레임워크
controller -> service -> dao -> Database
-> Mybatis 설정파일(dao에서 처리하던 것을 Mybatis 설정파일에서 처리한다)
7. Ibatis와 Mybatis
- Apache Project에서 ibatis를 운영하던 팀이2010년 5월 9일에 Google팀으로 이동하면서 Mybatis로 이름을 바꾸었다.
- Mybatis는 기존의 ibatis의 한계점이었던 동적 쿼리와 어노테이션 처리를 보강하여 더 나은 기능을 제공하고 있다.
- Ibatis는 현재 비활성화 상태이며, 기존에 ibatis로 만들어진 애플리케이션의 지원을 위해 라이브러리만 제공하고 있다.
Mybatis라이브러리 다운
8. Mybatis에서 사용하는xml파일
mybatis-config.xml
- Mybatis를 이용하기 위한 설정들이 저장 되어있는 파일
- xml파일 상단에 mybatis-config파일이 라는 선언문을 선언하여 사용한다
mapper.xml
- 실제 Database에서 수행 할 query문들을 저장하는 파일
- xml파일 상단에 mybatis-mapper파일이라는 선언문을 선언하여 사용한다
9. Mybatis-config.xml사용 태그
태그명 | 설명 | 예시 |
<configuration> | 최상위 태그로 내부에 필요한 설정들을 작성 | <configuration>.....</configuration> |
<setting> | Mybatis구동 시 선언할 설정들을 작성 | null값이 발생할 경우 빈칸이 아닌 null로 인식하라 |
<typeAliases> | Mybatis에서 사용할 자료형의 별칭을 선언 | <typeAliases> type에는 패키지 명까지 전부 기술해주어야 한다. </typeAliases> |
<mappers> | 사용하고자 하는 쿼리가 정의된 mapper파일을 등록한다. | <mappers></mappers> |
<environments> | Mybatis 에서 연동할 Database정보를 등록(JDBCTemplate에서 했던 코드들) |
<environments default="development"> environment id를 구분하여 연결한 DB를 여러 개 구성할 수 도 있다. </environments> |
<transactionManager> | -트랜잭션 관리를 누가 할 것인가에 대한 설정 -JDBC:JDBC commit과 rollback을 처리하기 위해 connection을 가지고 온다.(직접 처리) -MANAGED:commit과 rollback을 하지 않고, 대신 컨테이너가 트랜잭션을 관리하고 커넥션을 닫아주는 설정 |
|
<dataSource> | - 데이터 베이스 연결을 관리하는 설정 -POOLED:Connection객체를 pool영역에 저장해 두고 이후 Connection객체를 생성할 때 이를 재사용한다. -UNPOOLED:Connection객체를 별도로 저장하지 않고, 객체 호출 시 매번 새로 생성하여 사용 |