GitHub

https://github.com/Backcoder-June

BackCoder 기록 그리고 숙달

분류 전체보기 171

[ WebSquare5 ] + [exBuilder6 ] 사용법

[ WebSquare란? ] - WebSquare는 통상 MVC패턴 => 프론트엔드 단에서 '코딩' 으로 이루어지던 작업들을 '클릭' 으로 진행할 수 있게 만들어주는 개발을 도와주는 편리한 도구 라고 보아도 좋을 것 같습니다. ( 마치 CLI 로 진행되던 작업을 GUI 로 하게끔 도와주는 것이죠. ) HTML, CSS, JavaScript, 그리고 동기/비동기 통신할 때 쓰이던 스크립트들 까지 GUI 형식으로 만들어내도록 해줍니다. 직접 '코딩' 작업할 때 걸리는 시간을 단축할 수 있고, 오타에 의한 오류를 방지할 수 있고, 규모가 큰 프로젝의 경우, 웹스퀘어를 이용해 만들어진 코드들은 최소한의 안전성, 일관성을 갖게되는 등 많은 장점을 갖는 것 같습니다. [ 구조 / 환경 ] WebSquare5 기준 ..

[ CSS ] 정렬 / 배치

[ reset ] : 태그에 걸려있는 CSS 초기화 CSS 적용 전에 h, a 등 태그에 default 로 걸려있는 CSS 를 초기화 시키고 작업 시작 => reset 템플릿 사용 ( reset css cdn https://cdn.jsdelivr.net/npm/reset-css@5.0.1/reset.min.css"> [ css 적용 우선순위 ] - 로컬에 가까운 순서대로 적용 - 로컬에서 우선순위 1. 직접 걸어둔 style 태그 2. id 3. class ( !important 부모 태그 부터 타고들어가서, ID로 CSS 를 줬다거나, 바로 class 로만 CSS 를 줬다거나 타고 들어가는 방법에 따라 점수합쳐서 우선순위 적용 => 부모 태그에서 들어가는 식으로 줘서 씹히지 않도록 => 개발자도구 st..

Back to the CSS 2023.02.01

[ JPA ] JPA <=> DB , Entity / Repository

DB를 조작, 정의하고자 할 때 SQL 문, 쿼리문을 사용해야 합니다. SQL문을 사용해 DB 와 연결하는 과정에서, 매 쿼리문 마다 반복되는 코드가 많았고, JDBC => Spring JDBC => SQL Mapper ( Mybatis ) 이를 간결하게 만들기 위한 방법들이 발전해오며, Mybatis도 여전히 많이 사용되고 있습니다. 하지만 SQL문에 의존적인 면이 있어서, 이를 자동화시키고, 객체지향적 쿼리를 만들고자 => Hibernate ( open source ) 가 등장하게 되었고, => Spring JPA 로 발전 해 오게 되었습니다. 여전히 DB 에는 SQL 문을 통해 전달하지만, 개발자 입장에서는 JPA에서 미리 만들어 놓은 findByEmail(); 등과 같은 메소드만 사용하면 sele..

Back to the JPA 2023.01.29

사용자의 요청DTO => @Validated 검사

[ Validation ] : 사용자의 요청 입력 값이 요구되는 조건에 맞는지 검사 - 사용자 입력값을 받는 requestDTO 에서 validate 해줘야 합니다. ( responseDTO (X) / entity (X) ) - 클라이언트 단에서도 validate 를 하겠지만 서버로 바로 접근하는 '공격' 을 막지 못하므로 => 1.클라이언트 2.서버 3.DB 각 단에서 validate 를 해주어야 합니다. [ 서버에서 validation ] 1. validation 라이브러리 설치 spring => jakarta bean validation api boot => spring boot starter validation 2. requestDTO 각 Column 에 필요한 validation 어노테이션 사용..

Back to the Spring 2023.01.18

JPA Paging 처리 (Page, Pageable)

JpaRepository 를 상속해서 사용할 수 있는 메소드 중 findAll() 메소드는 Page findAll(Pageable pageable); 위와 같이 Page 처리에 대한 정보를 담고있는 Pageable 객체를 매개변수로 받아서, 목표로 하는 T 객체를 페이징처리하여 Page 객체타입으로 받아내는 기능을 제공합니다. Pageable 는 Pageable pageable = PageRequest.of( pageRequestDTO.getPage() - 1, pageRequestDTO.getSizePerPage(), Sort.Direction.DESC, "createdDate" ); PageRequest (자식) 객체를 이용해서, PageRequest.of( 1.현재페이지, 2.페이지당 데이터개수, ..

Back to the Spring 2023.01.18

[ Spring ] RestAPI 만능 객체 ResponseEntity<?>

@RestController 에서 JSON 타입으로 객체를 return 할 때, 원래는 { A : a, B : b } 와 같은 JSON 형태로 return 값을 보내줘야 하지만 객체 자체를 return 해도 위와 같은 JSON 형태로 변환해서 보내주는게 jackson 라이브러리 이죠. 예를들어, 게시판 DTO 객체인 BoardDTO 를 return 하면 VIEW 단에서는 AJAX 등을 통해 res.title / res.contents 와 같은 형식으로 JSON 값을 가져다 쓸 수 있습니다. 하지만 이렇게 객체 자체만을 return 해주는 것에서 더 나아가서 [ 객체자체 + 응답 상태 코드 + header 내용 ] 추가적인 정보까지 함께 응답해 줄 수 있게 해주는 만능 객체 그릇이 바로 ResponseEn..

Back to the Spring 2023.01.15

[ Spring ] 프레임워크, DI, Entity / DTO

[ Spring Framewrok ] - 스프링에서는 MVC 패턴의 프레임워크를 정해두었습니다. 각자의 역할을 가지는 객체를 정해두었고, 이런 규칙을 잘 따르면 편리한 기능들을 제공해 줍니다. @Controller 는 DB랑 클라 요청처리 받아서 연결해주는 역할, @Service 단에서는 데이터 선처리 후처리 등 작업, @DAO 는 데이터 관리 ... 정해놓은 규칙 정도이지, 간단한 api라면 service 단 없이, Controller 단에서 데이터처리까지 해줄 수 있습니다. 하지만 규모가 조금만 커지면 Controller 단에서는 맵핑해주는 역할과 데이터 처리하는 역할이 뒤섞이고 다른 개발자가 봤을 때 가독성이 떨어지게 되겠죠. 폴더별로 파일을 정리하는 것 처럼 프레임워크가 정해놓은 규칙에 따라서 객..

Back to the Spring 2023.01.15

[ Stream] 기본 문법

- 기본적으로 Lambda 식과 함께 이용됩니다. - JavaScript 에서는 '화살표 함수' 로 함수를 전달 할 수 있는 기능과 유사합니다. https://backcoder.tistory.com/48 Lambda 식 ( ) -> { }; 사용조건 1. 인터페이스 일때만 가능하고 2. 인터페이스에 메소드가 하나만 있을때 가능하다. 람다식은 포켓몬 진화 완전체 같은거다. ( 기본 인터페이스 사용 ) - 이상해씨 interface A{ v backcoder.tistory.com [ 점점 더 간단하게 ] 직접 '클래스' 를 만들고 interface 를 상속해서 사용 => 내부 클래스로 사용 => 익명객체로 사용 => Lambda 식 [ Stream ] 자료구조들에서 특정 조건에 해당하..

Back to the Java 2023.01.13

[ eGovFrame ] Jackson 설정

[ Jackson 설정 ] : @ResponseBody 를 사용하지 않고, xml 설정 및 jsonView 사용 방식 1. pom.xml jackson core / jackson data-bind 설치 필요 ( JDK 와 버전 일치 필요 8-2.4.3 / 11-2.9.9 ) com.fasterxml.jackson.core jackson-core 2.9.9 com.fasterxml.jackson.core jackson-databind 2.9.9 2. dispatcher-servlet.xml 빈 등록 필요 3. Controller @RequestMapping(value="/oneboard.do", method=RequestMethod.POST, produces= {"application/json; chars..

.equals( ) 메소드 override => 객체 비교하기

[ 객체 끼리 비교 ] Product p1 = new Product("laptop", "lenovo"); Product p2 = new Product("laptop", "lenovo"); 두 개의 객체가 같은 값을 가지고 있더라도, 주소값이 다르므로 자바는 두 객체를 서로 다른 객체로 인식합니다. 1. equals == 는 주소 값 다르게 잡혀있어서 당연히 다르게 나오고 equals 로도 기본은 false 잡히는데 이건 override 해서 주소값은 무시하고 값만으로 비교할 수 있게 해서 사용하기도 합니다. 예시 ) @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.g..

Back to the Java 2023.01.11