SPRING 17

강의14

AOP에서는 @Around가 가장 중요하다 이건 자바리플렉션이다 리플렉션은 주어와 목적어가 바뀌는것 class를 로딩할때 사용하는메서드 Class.forName() pjp.proceed() 는 invoke()같은것이다 (메서드를 실행하는것) 흔히 트랜잭션이라고 하면 이것을 데이터베이스 용어라고 생각하는데 정확히 단어의 뜻은 거래라는 뜻이고 비즈니스 용어이다. 그래서 트랜잭션의 단위가 비즈니스의 단위인것이다. 트랜잭션을 가장쉽게생각하는것은 ALL or Nothing -> 되면 다되고 아니면 다안되는것 트랜잭션은 ACID원칙을 따라간다 반정규화는 언제하나? => 스토리지를 손해보면서 성능의 향상을 원할때 한다. 정규화를 하면 중복된 데이터를 제거해 스토리지를 효과적으로 쓰는것이다. 아무조건없이 join하는것..

SPRING/강의 2021.06.24

강의14

aop는 Aspect Oriented Programming Aspect -> Cross concern - > 횡단관심사/ 공통관심사 이것들의 의미하는 것은 핵심로직은 아니지만 선조건, 부가기능 등등을 cross concern이라고 한다. db에서 close를 하면 내부적으로는 socket연결이 끊어지는것이다 근데 커넥션풀을 이용한다면 close를 하면 안되는건데 왜 autoclose를 할까? 프록시덕분에... 스프링은 AOP설정만 해주면 autoProxy해준다 지금부터 모든 서비스의 실행시간을 찍어(같은 명세(logging, 보안, 트랜젝션등..) 그래서 추상이라고 생각해도 된다) advice -> 실제로 우리가 만들어낸 코드(로거를 찍거나 하는것) pointcut -> 그 객체라는 여러개의 메소드중에 ..

SPRING/강의 2021.06.24

강의 13

ajax시 문제가 생기는 부분중 하나가 cors이다. input type file 은 유일하게 인풋중 readOnly이다. (경로를 수정하면 해킹이 되어버리니까) cors를 해결하기위한 몇가지 방법이 있다 첫번째는 allow origin 두번째는 스프링에서 @CrossOrigin 다른방법은 JSONP를 이용해서 가능하다 -> GET방식으로만 가능하다 (p는 pandding.. 지연이라는 소리이다) jsonp는 자바스크립트 파일을 달라는 것이랑 같다. 그러면 resource라고 여겨지지 않기 때문에 cors에 걸리지 않는다. jquery cdn걸면 그 링크에 있는 자바스크립트의 파일을 가져와서 돌리는것이기 때문에 보안모델에 걸리지 않는다.(cors) proxy를 가장 쉽게 이해할 수 있는것은 영화 본아이덴..

SPRING/강의 2021.06.24

강의11

전달할때 page번호나 size는 uri로 받으면 안된다. 왜냐하면 동일한페이지에서는 동일한내용들만 있어야한다 (id값이기때문에) 그래서 이런경우에는 쿼리스트링으로 받는게 맞다. 응답은 -> 목록리스트, 페이지정보, 그리고 전달받았던애들도 그대로 돌려주는게 편하다. 3단구현이란 제일처음 인터페이스를 만들고 상속받아 추상클래스에서 어느정도 구현을하고 진짜 쓸 클래스에서 상속받아 쓴다

SPRING/강의 2021.06.23

강의 10

2번째 시대 :웹 어플리케이션의 시대 웹페이지의 시대에서 가장 중요하게 작용한것이 검색엔진이라 생각한다. url의 중요성이 대두되면서 rest라는 방식이 대두된다. (이전에는 쿼리스트링을 통해 페이지를 분기했다) url은 locator를 이야기하는것이고 uri 는 identifier이다 (즉 id라는 말이라 전세계에서 유니크해야한다) 웹과 앱의 가장 큰 차이점은 공유이다 (웹은 공유가 너무 쉬운데 앱은 기능에 초점이기때문에 공유하기 쉽지않다) 웹 어플리케이션이라는 시대는 왜 열렸나? -> 기존에 url이동을하면 전체를 다 랜더링하기때문에 너무 느려서 열렸다. ajax가 출현하면서 부분부분에 대한 바꿔치기가 가능하다는 개념들이 열리기 시작했다. 이러면서 생긴 개념이 CSR (Client Side Rende..

SPRING/강의 2021.06.23

강의 9

sql에서 중요한것들 정리를 한번 해보자면 - 빨리실행되야한다(3초를 limit로 둔다) - 필요한 만큼만 빼와야한다 - close가 가장 중요하다. 솔직히 말하면 springJDBC가 좋다고 생각한다~ 마이바티스는 getter setter로 리플렉션 동작을 한다. 웹은 고객이 전문가이다 (어렸을때부터 제일 좋은 사이트만 보고 이용해왔기 떄문에 눈높이가 높다) 고객이 요구하는 부분 1. 화려한 UI 2.Client Server환경에서 벗어나지 못한다 (applicaion환경의 수준을 웹에서 요구하는 경우가 많다 // 엑셀에서 수만개의 데이터를 보는것처럼 웹에서도 그렇게 보기를 바란다.) 웹은 여러개의 정보를 볼수있게 해주는것 앱은 많은 정보를 보는것이 포커스가 아니라 한정적인 기능을 전문적으로 하게해주는..

SPRING/강의 2021.06.23

강의8

DTO -> 전달용 / read write 둘다가능 규칙이없음 Entity - > JPA에서 주로사용 가장중요한건 @id 어노테이션이다. (pk) VO -> 동등성을 많이 따진다. 개발을할떄 VO만 만들거냐 DTO까지 만들거냐에 대한 가이드 -DTO의 특징:화면친화적 :화면에서 필요한 정보를 다 담아서 이동 -VO : DB친화적 가능하면 VO를 먼저 만들고 나서 DTO를 만들지 고민을 하는게 좋다. 가급적이면 기본자료형은 쓰지 않는것이 좋다 (기본자료형은 0을 기본으로 갖기때문에 널체크를위해 객체형 자료형을쓴다) @Builder를 쓸때는 AllargsConstructor와 NoArgsConstructor를 써줘야 오류가 안난다.

SPRING/강의 2021.06.22

강의6

DB에서 면접에서 물어보는것중에 INDEX써본적있냐? 가 있따 데이터베이스의 인덱스는 B-tree(Balanced tree)로 구성되어 있다 색인이 없으면 찾을때 Full scan 한다. pk를 잡으면 기본적으로 색인이 만들어진다. tree구조의 가장 큰 장점은 빠르다는것 데이터베이스에서는 모든것을 오브젝트로 본다. 국내에서는 sql 튜닝이 필요한 일이 많아서 jpa보다 네이티브sql을 많이 쓰게 된 경향이 있다 마이바티스의 핵심은 게터세터를 쓰는것이다 마이바티스를 개발하는 순서 1. sql을 먼저짠다 (마이바티스를 절대로 먼저만들면안댄다) (실무에서는 어노테이션으로 하지많고 무조건 xml로 마이바티스를 이용한다)

SPRING/강의 2021.06.22