웹 : DomainLayer myBatis 적용 : 0327
🚩오늘할일 : relation 구조를 반영할 수 있는 domain layer
1. 도메인 레이어 변경해야해
2. 그전에 요구사항을 변경해야해
3. prod로 요구사항을 변경해보자.
1.일단 개발환경 정리하자
String때문에 자꾸 TOCHAR해야했던 DAO! -> LDT으로 바꾸는 과정을 해보았다. 17버전
그런데 17버전은 많이 사용하는 버전이 아니라서 다른 버전 깔아보자.
jdk download로 검색하여 무료버전 중 최신 버전을 받으려고 한다.
< jdk1.8.0_202 >
그리고 D.L를 두개로 나누어 사용해볼수도 있다.
Mybatis에의해 도메인 레이어의 형태로 엔터티를 잡는 것을 넘겨버렸다.
mybatis는 R.S 또는 커서 형태로 결과를 받아오고, POJO로 풀어해쳐서 리플렉션 하는 것 또한 마이바티스의 DataMapper역할을 한다. 혹자는 이것을 ORM이라고 부른다. 진짜 ORM은 쿼리 개념이 없다. 그래서 orm방식이 각광받는다. 그래서 우리는 mybatis를 orm방식에 맞춰 사용해볼 것이다.
1.다운로드
<input type="datetime-local"
문자를 로컬데이터타입으로 받을 수 있어야 이 인풋타입을 사용할 수 있다.
그기능을 populate.java에서 변환하고 있다.
PROD_DETAIL CLOB 아주 큰 문자데이터 toString에 포함시키지 않는다.
상품조회 ,
기본정보 PROD,
분류명 LPROD,
거래처명 BUYER,
구매자수 조회 CART, 집계에 의한 논리 컬럼.
SELECT CART_PROD, COUNT(DISTINCT CART_MEMBER) MEM_COUNT
FROM CART
GROUP BY CART_PROD;
public class BuyerVO implements Serializable {
private String buyerId;
private String buyerName;
private String buyerLgu;
private String buyerBank;
private String buyerBankno;
private String buyerBankname;
private String buyerZip;
private String buyerAdd1;
private String buyerAdd2;
private String buyerComtel;
private String buyerFax;
private String buyerMail;
private String buyerCharger;
private String buyerTelext;
private List<ProdVO> prodList; // hass many관계 - 1:N관계
}
public class ProdVO implements Serializable{
private String prodId;
private String prodName;
private String prodLgu;
private String lprodNm;
private String prodBuyer;
private String buyerName;
private Integer prodCost;
private Integer prodPrice;
private Integer prodSale;
private String prodOutline;
private String prodDetail;
private String prodImg;
private Integer prodTotalstock;
private LocalDate prodInsdate;
private Integer prodProperstock;
private String prodSize;
private String prodColor;
private String prodDelivery;
private String prodUnit;
private Integer prodQtyin;
private Integer prodQtysale;
private Integer prodMileage;
private int memCount;
//inline view로할경우 null값이 잇으므로 integer
//인라인뷰도 맵퍼로 널처리할 수 있다.
//포함관계 has관계
private BuyerVO buyer; // has a 관계 - 1:1 관계
}
1.
2. 1이 누구냐 : 기준이 되는 것
3. has관계
수동으로 규칙성 주기
has a / has many 관계로 릴레이션을 적용해볼 수 있다.
>>복합객체를 만들 수 있다.
>>하나의 객체를 갖는다. / 하나의 객체가 여러 객체를 컬렉션의 형태로 갖는다.
<resultMap type="ProdVO" id="prodMap" autoMapping="true">
<id property="prodId" column="PROD_ID"/>
<association property="buyer" javaType="BuyerVO" autoMapping="true" />
<collection property="memberList" ofType="MemberVO" autoMapping="true" />
</resultMap>
id: 프라이머리키 를 바인딩할수있는 규칙성을 가지고 있다.
result는 생략이 가능 >> 자동으로 선언되기 때문 autoMapping="true"
association 1:1
collection 1 : N
resultMap : 네스티드 맵방식
1.쿼리문 작성한다. 2. 테이블 관계 확인한다. 3.vo와 vo사이에 관계를 반영한다. 4.
-- 중첩 쿼리
-- 1. INLINE VIEW : FROM 절에 중첩됨.
-- 2. SUBQUERY : WHERE 절에 중첩됨.
-- 3. SCALA QUERY : SELECT 절에 중첩됨.
1대다인경우
자식이 여러개라면 이 모든게 하나의 상품이라는 중복의 판단 기준인 id라는 엘리먼트가 필수적으로 필요하다.
스칼라데이터와 벡터 데이터 : 차이 : 방향이 있는가?
34 -> 스칼라 데이터
34, 34
234, 34 ->벡터 데이터
,PROD_BUYER "buyer.buyerName"
맵으로 바인딩 안해줘서 오토맵핑으로 자동으로 맵핑한다.