내가 보려고 정리하는/Spring

웹 : DomainLayer myBatis 적용 : 0327

보동이용용 2023. 3. 27. 11:15
반응형

🚩오늘할일 : 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"

맵으로 바인딩 안해줘서 오토맵핑으로 자동으로 맵핑한다.

반응형