java

공부 etc.

[Java] final에 관하여

초기값을 변경하지 않고 그대로 사용하기 위해 사용한다.(수정x) final 변수 변수를 선언할 때 초기화된 값을 수정할 수 없도록 제한. 변수 선언과 동시에 초기화 or 생성자에서 초기화 가능 초기값을 변경하지 않고 그대로 사용하기 위해 사용 파이와 같은 수학적 값을 사용하기 위해 사용 주민번호, 학번과 같은 유일값을 사용하기 위해 사용 final 메소드 메소드를 오버라이딩 할 수 없게 제한 > 자식 클래스에서 메소드 내용을 변경하지 못한다. final 클래스 해당 클래스를 다른 클래스에서 상속할 수 없도록 제한 > 해당 클래스를 수정 없이 그대로 사용하려는 목적이다.

Spring Framework

[Spring] 의존성 주입, DI(Dependency Injection)

의존성 주입(DI) 이란? 객체가 필요로하는 어떤 객체를 생성자 혹은 세터(Setter)를 통해서 주입하는 것을 말한다. 의존관계는 new 라는 키워드를 통해 생성된다. 코드를 짤 때 이런 강결합을 일으키는 요소를 많이 사용하기 시작하면 나중에 큰 유지보수 비용이 든다. 의존성 주입은 IoC(의존성 역전) 원칙 하에 객체 간의 결합을 약하게 해주어 유지보수에 용이한 코드를 만들어 준다. 의존성이 줄어든다. 앞서 설명했듯이, 의존한다는 것은 그 의존대상의 변화에 취약하다는 것이다.(대상이 변화하였을 때, 이에 맞게 수정해야함) DI로 구현하게 되었을 때, 주입받는 대상이 변하더라도 그 구현 자체를 수정할 일이 없거나 줄어들게 된다.

백준

[백준/java] 15552번 빠른 A+B

이 문제는 scanner와 system.out.println() 를 이용해서는 안된다. 속도 제한이 걸린 문제로서 BufferReader 와 BufferWriter를 이용해야한다. 바로 전송하는 것 보다, 중간에 메모리 버퍼를 두어서 데이터를 묶어 이동하는 것이 빠르기 때문이다. public class Baek15552 { public static void main(String[] args) throws IOException { BufferedReader bf= new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); //입력 in..

Java

BufferedReader & BufferedWriter

scanner와 System.out.println() 를 대신하여 사용 할 수 있다. 속도 측면에서 훨씬 빠르기 때문에 데이터 처리의 효율성이 좋다. 바로 전송하는 것 보다, 중간에 메모리 버퍼를 두어서 데이터를 묶어 이동하는 것이 빠르기 때문이다. 대신에 받은 데이터는 String으로 인식하므로 가공과정이 추가로 필요하다. BufferedReader BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //선언 String str = bf.readLine(); //String 입력받음 int i = Integer.parseInt(bf.readLine()); //입력을 int로 형변환 입력은 readLine()이라는 메서드를 ..

Java

extends와 implements 차이

객체지향 OOP(Object-Oriented Programming)의 특징 중 상속성에 관한 이야기이다. 프로젝트를 진행하며 자주 사용하게 되었는데 차이점이 궁금하였다. extends 부모 객체에서 선언, 정의를 모두 한다. 자식에서 오버라이딩을 할 필요가 없다. 부모의 메소드, 변수를 그대로 사용 가능하다. 나의 경우에는 프로젝트를 진행할때 - entity를 구성시 계속 중복되는 필드들을 따로 class에 담아 extends해 주는 방식으로 자주 사용하였다. - Repository 를 사용할때 extends JpaRepository를 하여 JPA에서 기본으로 제공하는 메서드를 이용했다. implements 부모 객체는 선언만 한다. 자식에서 정의를 하는 오버라이딩(재정의)가 필요하다. 나의 경우에는 -..

SpringBoot Project

[SpringBoot] 게시판 Pagination(Pageable 이용한 페이징), 리스트 불러오기

게시판 페이징을 구현하여 게시글 리스트를 불러오려고 한다. 아래의 사진과 같이 구현하고자 하였다. 게시물 5개씩 불러오기 Pagination 부분에 7개 고정하기 먼저 Board Entity에서 리스트로 끌어올때 필요한 정보들을 모아둔 DTO를 구성했다. @Getter public class BoardListDTO { private long bno; private String title; private int readCount; private String writer; private LocalDateTime updatedDate; private LocalDate toDay; private String writerId; //Entity를 -> BoardListDTO(BoardEntity ent) publi..

SpringBoot Project

[SpringBoot] 게시판 게시물 조회수 기능

게시물을 클릭하면 조회수가 증가하는 쿼리를 추가해 주려고 한다. 우선 엔티티에 조회수 컬럼을 넣어주고 private int readCount; //BoardEntity 에 있는 조회수 컬럼 그리고 이제 repository에 조회수 증가 쿼리를 작성해주었다. @Modifying @Query("update BoardEntity b set b.readCount = b.readCount +1 where b.bno = :bno") //entity 의 readCount를 업데이트하는 쿼리 int updateReadCount(@Param("bno")Long bno); 나같은 경우는 @Param("bno") 를 추가하지 않으면 실행이 되지 않아 추가를 해주었다. 그리고 service process에 아래와 같이 메소드..

SpringBoot Project

[SpringBoot] 게시판 게시물 삭제하기(delete)

게시물 삭제 과정은 간단하다. JPA에서 delete를 제공하기 때문이다. //삭제 @DeleteMapping("/boards/{bno}") public String genDelete(@PathVariable long bno) { service.delete(bno); return "redirect:/boards"; } 이제 ServiceProcess에 delete를 구현 해보자. @Override public void delete(long bno) { repository.deleteById(bno); } Id인 bno(게시물 번호)를 이용하여 삭제하는 deleteById는 JPA에서 기본으로 제공하는 메서드이다. 이제 게시물 대시보드에서 삭제 버튼을 구현했다. 게시물 삭제

꿈꾸는야오옹
'java' 태그의 글 목록