<프레임워크?>
Java: OOPL
DB: RDBMS
데이터를 표현하는 방식이 다름
객체 <-> 튜플, 릴레이션
프레임워크의 사용방법에 집중하기보다 동작구조의 원리를 보아야함
프레임워크: 미리 짜놓은 코드의 집합
=>프레임워크: IoC(Inversion of Control)됨, DI(Dependency Injection)패턴을 따르게 됨. Control권한이 역전되어 이제 개발자는 프레임워크를 따라야함
프레임워크와 라이브러리의 차이: Control이 inversion됐냐 안됐냐. e.g. common-lang3(라이브러리) 쓸때 우리는 우리 맘대로 했는데 iBatis의 구조는 개발자가 따라야만 함.
<IBatis와 MyBatis의 역할>
1. SQLMapper로서의 역할
- 커넥션과 쿼리객체를 대신 생성. (ibatis: #인라인파라미터# 를 pstmt의 ?로 바꾼다)
커넥션을 위해서는 DB의 username, pw 등을 줘야함 (sqlConfig.xml: configuration file)
쿼리객체를 위해서는 쿼리, 쿼리ID를 줘야함 (query mapping file)
2. DataMapper로서의 역할
- 생성된 쿼리 객체들을 Map에 저장(모든 쿼리는 id를 식별자로 가지고있음)
- consumer로부터 요청이 오면 db가 쿼리 실행하고 보낸 결과를 ibatis가 받아서 변환, 매핑
2가지 라이브러리 씀 SqlSession이랑 SqlSessionFactory(싱글톤)
SqlSession = 매 트랜잭션마다 다른 sqlSession 씁니당 (non-Singleton)
+ Persistence Layer 지원 framework
Mybatis쓸때
1. Jar넣고 XML에서 sqlmapConfig.xml 생성 (for Connection)
2. SqlSessionFactory 빌드하기
뫄뫄가 Mapper proxy 생성해줌
Mybatips
NULL 데이터 있으면
iBatis 공백으로 치환해서 넣음 => 큰일 나죠~~~
MyBatis NULL 그대로 넣기 위해 #{mem_hp, jdbcType=VARCHAR} 이런식으로 해줌
세션이 힘들지 않게 해주기위해 최대한 가볍게 인증정보를 구성하라
만약 회원가입창(registForm.jsp)를 이용해 회원정보 수정을 한다면?
req.setAttribute("command", "update") 로 지금 뭘 할건지 구성
command가 update면
registForm.find("input[name]").prop("readonly", true); => name이 있는 인풋들을 찾아 readonly 가 되게 함
registForm.find("input.editable").prop("readonly", false); => editable 속성을 가진 인풋을 찾아 readonly 해제
+최프때 customException 적극 활용하기
'WEB Application' 카테고리의 다른 글
웹 프로그래밍 (xml resultMap 사용법, has many, xml 매핑) (0) | 2020.09.22 |
---|---|
20/09/18 웹 프로그래밍 (slf4j, 페이징 처리, DataTables) (2) | 2020.09.18 |
20/09/16 웹 프로그래밍 기초 (Annotation, constraints, jquery event propagation) (0) | 2020.09.16 |
20/09/15 웹 프로그래밍 기초 (Reflection, 이클립스 정규표현식 대체, annotation) (1) | 2020.09.15 |
20/09/14 웹 프로그래밍 (db properties 연결, DBCP) (1) | 2020.09.14 |