You are using an outdated browser. Please upgrade your browser to improve your experience.

11/7

코드를 객체지향적으로 설명할수있따면 6~7년을 단축할수있다.

doFilter는 왜 또 그냥 쓸쑤 있는데..? 이해가 안돼

인터페이스 존나모르겟어 샹

퍼시스턴스(지속성) 프레임워크

JDBC프로그래밍 캡슐화 -> 우리가 직접 JDBC API를 사용하는게 아니라 퍼시스턴스 프레임워크를 통해 JDBC API를 호출하는것, 즉 JDBC API를 호출하는 자바 코드를 클래스로 만들어 제공하는 것을 의미한다.

JDBc API를 없애는게 아니라 대신 호출하게 해주는거다!!! 착각하지말 것.

퍼시스턴스 프레임워크의 종류

  1. SQL Mapper

    • SQLID

    • DBMS에 맞춰서 작성해야 한다.
    • DBMS에 종속됨
    • DBMS에 최적화를 시킬 수 있어 성능을 극한으로 끌어올릴 수 있따!\
    • DBMS의 전용 SQL에 통달한 개발자만이 느낄 수 있는 최적화라는 단점이 있음
  2. OR Mapper

    • HSSQL

    • DBMS에 상관없이 사용할 수 있다.
    • DBMS의 일반 기능만 쓰기 때문에 성능이 좋진 않으니 DBMS에 종속되지 않음.

스프링 프레임워크들

egovframwork : 정부 관공서에서 많이 씀, 스프링 프레임워크를 가공한 것

anyframe : 삼성이 만들었음.

기존에 있던 시스템을 가리키는 말 : 레거시

src/main/resources

자바소스파일들은 src/main/java에 두고 사용할 리소스들은 리소스 폴더 밑에 둔다.(자바가 사용하는 설정파일들)

11/10

mybatis에서 원시타입 , 래핑클래스 값 꺼내려면 : 파라미터값을 지정하는 이름을 내 맘대로 줘도 된다.

  <select id="findByNo" parameterType="java.lang.Integer" resultMap="BoardMap">
  select
    b.no,
    b.title,
    b.content,
    b.cdt,
    b.vw_cnt,
    m.no writer_no,
    m.name
  from pms_board b
   inner join pms_member m on b.writer=m.no
  where
   b.no = #{no} //   이름을 마음대로 줘도 되지만 의미있는 이름을 지어주는게 좋다.
  
  </select>

sql문에서 파라미터값을 2개로 넘길 수 없으니 Map객체로 받는다.

  <select id="findByEmailPassword" parameterType="java.util.Map" resultMap="MemberMap">
  select 
   no,
   name, 
   email, 
   photo, 
   tel, 
   cdt
 from pms_member
 where email = #{email} and password = password(#{password})
  </select>
    <association property="owner" javaType="com.eomcs.pms.domain.Member">
      <result column="owner_no"   property="no"/>
      <result column="owner_name" property="name"/>
    </association>
   </resultMap>

자바타입에 얻고싶은 클래스를 명시하고 프로퍼티에 얻고싶은 값을 입력한다.

  <collection property="members" ofType="com.eomcs.pms.domain.Member">
      <result column="member_no" property="no"/>

어레이리스트가 members에 들어간다.

번호, 프로젝트명, 시작일 ~ 종료일, 관리자, 팀원
11, aaaProject, 2020-01-01 ~ 2020-02-02, b(787738361), [a(1888442711),b(1754894440),c(1998767043)]
10, test200, 2020-02-02 ~ 2020-03-03, x1(1642030774), [x3(607932305),x4(168366)]
8, test100, 2020-01-01 ~ 2020-01-02, x1(1357563986), []
7, test2, 2020-01-01 ~ 2020-02-02, x1(384587033), []
6, test1, 2020-01-01 ~ 2020-02-02, x1(49752459), []
5, fff, 2020-02-02 ~ 2020-03-03, a(514455215), [a(411506101)]
4, ddd, 2020-01-01 ~ 2020-02-02, a(551479935), [a(1780034814),b(1360657223),c(1905485420)]
3, c, 2020-02-02 ~ 2020-03-03, c(501107890), [a(58940486)]
2, b, 2020-02-02 ~ 2020-03-03, a(959869407), [b(1997859171),c(550402284)]
1, aba, 2020-02-02 ~ 2020-01-01, a(116237769), [x1(1449263511)]

해쉬코드값이 같은 관리자인데도 다 다르다 : 매번 새 객체를 생성한다는 뜻

해결책 : 아래코드

    <collection property="members" ofType="com.eomcs.pms.domain.Member">
      <id column="member_no"   property="no"/>
      <result column="member_name" property="name"/>
    </collection>

result였던 column을 id로 바꿔준다.

id컬럼이 같으면 같은 데이터로 취급해서 프로젝트 객체를 하나만 만들고 거기에 담는다. 그래서 id컬럼을 이상한 값으로 주면 안됌!

join했던 테이블의 pk를 꼭 들고와야함.

member_project테이블에 멤버 비활성화 컬럼 추가하기

비활성화된 멤버 0으로 출력하게하기 (탈퇴된 회원 게시글이 없어지고 나머지 댓글은 다 보이게 하는 거)

=> taskDaoImpl에서 delete수정

트랜젝션 : 프로젝트와 테스크를 하나로 엮어야만 기능수행이 되도록 하는것. (쇼핑몰 결제..)