목록2024/10 (43)
The Debugging Chronicles : "코드의 미학"
핵심기능, 핵심관점, 비즈니스 메서드, 서비스, CRUD 비즈니스 메서드는 애플리케이션의 핵심 비즈니스 로직을 수행하는 메서드를 의미한다. 비즈니스 메서드는 주로 서비스 계층(Service Layer)에 위치하며, 애플리케이션의 주요 기능을 구현한다.1. 데이터 계층과의 상호작용: 비즈니스 메서드는 데이터 계층(DAO 또는 Repository)을 통해 데이터베이스와 상호작용한다. 보통 서비스 계층에서 DAO 또는 Repository를 호출하여 데이터를 조회, 저장, 업데이트하는 작업을 처리한다.2. DTO를 통한 데이터 변환: 비즈니스 메서드는 클라이언트와 상호작용하기 위해 데이터를 특정 형식으로 변환하는 경우가 많다. 이때, 서비스 계층에서 DTO(Data Transfer Object)를 사용하여 ..
최종 프로젝트 마감일이 코앞으로 다가왔다. 프로젝트를 하다가 스프링에서 문제가 생겨서 이클립스를 지우고 다시 설치하는 것을 권유 받았다. 이럴 바에는 사용하기 힘든 이클립스를 사용하지 말고 인텔리제이를 사용해야겠다는 생각이 들었다.강사님께 여쭤보니 완전 강추 받아서 적극적인 신입으로 보일 겸 인텔리제이를 결제했다. 설치하고 설정을 알고 실행되기까지 오래 걸렸지만 프로젝트를 원할하게 돌리는 데까지 성공!조원들도 같이 결제해서 함께 인텔리제이로 갈아탔다. 그러면서 깃도 연결해서 사용하기로 결정! 카톡과 노션에서 코드 복붙하는 일은 이제 바이바이! 노션 관리를 하고있음 >> 이미 하고있으니까 이부분어필 노션관리 어필을 어떻게 할지 ---------------------------깃을 버전관리를 ..
create table image( imageid int primary key auto_increment, path varchar(10000) not null, bid int not null ); 사용할 image table과 데이터 필요! 이미지를 변경하거나 업로드하는 로직 추가 view에서 넘겨 줘야할 데이터 hidden으로 보내주고 있음 미리보기 preview.js 파일 board.jsp로 올 때 data만 보내는 것이 아니라 image의 path도 전달 해야하기 떄문에command 객체를 추가 이미지 업로드를 활요하는 DTO에 멤버변수로 MultipartFile타입을 추가!!스프링에서 제공해주고 있다. commons-fileupload commons-fileu..
1. 팀 프로젝트에서 DBMS에서 사용하는 곳과 왜 사용했는지 2. DB 설계 할 때 중요하게 생각한 부분이 있다면 설명해 주세요.정규화 3. join 프로젝트에서 사용한 것 이야기 해주세요정규화를 했다면 4. 페이지네이션에 대해서 설명해주세요 5. 팀에서 페이지네이션에서 구현 어떻게 했는지 6. typecating에 대해서 설명해주세요.웹에서는 대부분 스트링으로 돌아다니는데 7. typecating 사용한 예시에 대해서 설명해주세요 8. 9. DOM객체에 대해서 설명해주세요. 10. this가 무엇인지 설명해주세요.자기 자신 객체11. this 사용한 경험에 대해서 설명해주세요. 12. 패턴에 두가지 정도 설명해주세요.싱글 톤 : 객체가 하나만 사용MVC:팩토리 패턴 13. 생성자에 대해 설명..
[트랜잭션]기능의 단위이다. 예)사용자가 1000원을 지불하여쿠키를 10개 구입하면쿠키 2개를 이용하여 웹툰 1화를 미리보기 만약에 와이파이가 끊겨서 1000원이 환불이 되었으면 1 트랜잭션이다. 만약에 와이파이가 끊겼을 때 쿠키남아있고 1000원 돌아왔다면2 트랜잭션이다. 트랜잭션 처리할 때 Advice를 사용구매라는 종단기능에 트랜잭션이 횡단으로 기능 주입 1. 스키마 추가 2.트랜젝션 관리자 추가 커넥션 확보를 위해 dataSource 3. advice 사용 만약에 select류만 다른 설정한다면 추가한다. 4. poincut과 연결트랜잭션에서는 apsect 가 아닌 advisor를 사용한다.txAdvice 가 우리에게 있지 않고 스프링에게 있기 때문이다. 하나의 서비스가 제대로 처..
개발자가 성능을 개선 시킬 때 ctrl+c,v하는 곳을 보는 것이 좋다 반복되는 로직을 캡슐화하는 것을 템플릿이라고 한다.어려운(복잡한) 로직을 캡슐화한다. 재사용이 용이하다. JDBC가 아주 대표적인 템플릿 적용하기 좋은 실습이다.Util 클래스 또한 일종의 템플릿이라고 볼수 있다. 지금까지 배운 패턴들을 되짚어보면MVC, 템플릿, 싱글톤, 팩토리, .... 가 있다. 템플릿을 적용해 보자 JDBC Template 클래스를 사용해보자! 스프링에서 제공해주고 있다. ===> 핵심! 1. JDBC Template 클래스에서 사용하게 될 dataSource 클래스의 객체를 등록== 의존성이 있다.== Phone이 Watch를 사용한다고 느껴져야한다. Data source 클래스는== conn(커넥션) 객체를..
pointCut들을 모아두기참조용 메서드들이여서 실제로 동작하지 않기 때문에 new 대상이 아니다그래서 어노테이션 service를 달지 않는다. pointcut 삭제 후 연결 pointcut도 aspect의 대상이므로 aspect 어노테이션을 달아주어야한다. pointcutCommon.javapackage com.koreait.app.biz.common;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;@Aspectpublic class PointcutCommon { @Pointcut("execution(* com.koreait.app.biz..*Impl.*(..))") public void ..
AOP 설정 Advice은 횡단 관심이다 Bean 태그들은 New이기 때문에 component 어노테이션 같지만핵심 로직은 Service이다 횡단 관심사들과 겹치므로 Service라고 쓴다.component-scan 대상이므로 넣어 준다. pointcut 설정 먼저 바꾸어보기19번째줄 먼저 바꾸기참조 메서드pointcut 경우 대소문자 잘 확인해서 어노테이션 넣어주기 누구랑 언제 결합할지를 정해야한다.어노테이션 before는 시점에 대한 설정이다.동작을 어느 시점에 누구랑 결합지를 썼고@Aspect는 결합 자체이다. 반환이 있는 경우에는바인드 변수를 써준다두개 이상 쓸때는 returing 속성까지 써주어야한다.
누가 등록했는지가 BoardDTO boardDTO에 저장되어 있다. weaving 처리 대상이다. 인자에 나의 비즈니스 메서드 정보를 가져다 달라고 스프링 컨테이너에게 부탁할 수 있다. 모든 CURD를 조인포인트라고 한다. 자동으로 나한테 해당하는 조인 포인트를 넘겨준다. 바인드 변수라고 한다. joinPoint에서 정보를 얻어 보자getSignature() 포인트 컷의 매개변수의 정보를 얻어 올수 있다. BoardService의 insert와 연결되어서 boardDTO가 하나가 나온다. returning을 사용하는 추가 실습 관리자 로그인 트래킹할 때 쓴다.슈퍼 계정(물건을 엄청 싸게 살수 있는 계정)에서 로그인 시 관리자가 개발자가 확인할 수 있도록하는 것이다. [한글코딩]로그인을 한..
IoC ====> 결합도를 낮추고AOP ====> 응집도가 높다 스프링은 유지보수 용이하다!!! AOP 적용은 쉽다.설정대로 하라는 대로 하면 된다.하지만 용어에 초점을 맞추어 봐야한다. 핵심관심, 비즈니스, CURD를 분리해준다. Advice란?== 횡단 관심== 공통 로직 로그를 찍는 공통 로직. 로그는 CRUD가 잘 수행되어서 잘 진입해는지 확인하기 위해 찍는다.개발자 new 하지 않는다멤버변수로 만들어 주입한다.어노테이션 주입 그런데 로그를 모든 곳에 찍어야 한다면?로그 성능을 업데이트 해야한다면? 객체지향프로그래밍(OOP)의 한계; Advice를 교체할때 코드가 많이 변경되므로 개발시간, 컴파일 비용이 많이 필요해진다. 해결 방법>> 스프링 컨테이너야.너 객체 생성 및 관리 할수 있잖아?네..