웹(Web) 67

2023 Go-lang(Go 언어) 장단점/추이

개요 지난 2~3년간 Go언어에 대해 집중적으로 관심이 좁혀졌던 것에 비해, 최근(2023)에는 Go-lang에 대한 관심이 식은것같아 시장 상황이 궁금하여 다음과 같은 글을 작성하게 되었다. 선요약 대한민국에서 Go언어로 주력으로 나가기는 어렵다. Go를 첫언어로 선택하기보다는 Java, Python 등이 많음. Go는 Type강제가 심한 언어이므로, OOP를 추구하는 다른언어들과 특징이 다르므로 선뜻 선택하기는 어려운편. C언어를 대체로 리팩토링하기에는 이르다고 생각. Go언어 특징 • 편의성 :동시성 기능 중 일부는 언어 자체에 내장. 'http 패키지'와 같은 고 표준 라이브러리 패키지로 제공된다. 자동 메모리 관리 기능을 지원. 파이썬 등의 스크립팅 언어와 달리 고 코드는 빠르게 실행되는 네이티..

Spring Data JPA 페이징

Spring Data JPA 에서 페이징 및 슬라이스에 대해 알아보겠다. Paging(페이징) 페이징을 하기 위한 메소드는 아래와 같이 구성한다. public interface MemberRepository extends Repository { Page findByAge(int age, Pageable pageable); } data : 5, offset : 3 으로 나누는것을 아래처럼 보여준다. @Test public void page() throws Exception { //5개의 데이터 given memberRepository.save(new Member("member1", 10)); memberRepository.save(new Member("member2", 10)); memberReposito..

Spring Data JPA @Query 활용법(JPQL, DTO)

이 글에서는 SpringBoot 환경에서 JpaRepository를 인터페이스에서 활용하는 방식과 일반 JPA 방식을 비교하는 내용을 다룬다. @Query 메서드에 JPQL 작성하는 방식 public interface MemberRepository extends JpaRepository { @Query("select m from Member m where m.username= :username and m.age = :age") List findUser(@Param("username") String username, @Param("age") int age); } @Query, 값, DTO 조회하는법 1. 단순 엔티티 호출은 아래와 같다. public interface MemberRepository exte..

Java로 배우는 디자인패턴

디자인패턴 별로 사용하는 이유에 대해서 알아보았다. 1. 반복패턴(Iterator) : for문이 아니라 Iterator를 사용하는 이유는 구현에 의존하지 않기 때문! ex) class Book{List list 선언} => class Book{Vector 선언} 으로 바꾸는 경우 for문의 구현부분도 다시 변경해야하는데, Iterator를 사용하면 이러한 구현의 변경점에 의존하지 않고 반복문을 실행 할 수 있다. 2. 어댑터패턴(Adapter) - 바꿔서 재이용하기 : 기존의 클래스를 개조해서 필요한 클래스를 만든다. 이 패턴으로 필요한 메소드를 발빠르게 만들 수 있다. 만약 버그가 발생해도 기존의 클래스에는 버그가 없으므로 Adapter역할의 클래스를 중점적으로 조사하면 되고, 프로그램 검사도 상당히..

HTML 요약

AttributeDescription id 유일한 식별자(id)를 요소에 지정한다. 중복 지정이 불가하다. class 스타일시트에 정의된 class를 요소에 지정한다. 중복 지정이 가능하다. hidden css의 hidden과는 다르게 의미상으로도 브라우저에 노출되지 않게 된다. lang 지정된 요소의 언어를 지정한다. 검색엔진의 크롤링 시 웹페이지의 언어를 인식할 수 있게 한다. style 요소에 인라인 스타일을 지정한다. tabindex 사용자가 키보드로 페이지를 내비게이션 시 이동 순서를 지정한다. title 요소에 관한 제목을 지정한다. NEW 태그 header 헤더를 의미한다 nav 내비게이션을 의미한다 aside 사이드에 위치하는 공간을 의미한다 section 본문의 여러 내용(article)..

VScode 단축키 및 숏컷

Visual Studio Code에서 자주 사용하는 단축키를 모아보았다. 같은 변수 이름 한번에 바꾸기 (★) ctrl + f2 블럭 주석 처리 (★) Alt + Shift + A 행을 위로 이동( 현재 행을 윗줄로 옮길때) alt + (↑)화살표 커서 위치 행 삭제 Ctrl + Shift + K 전체 파일에서 찾기 Ctrl + Shift + F 현재페이지 문자열 수정하기 (★) Ctrl + H 폴더 모든 페이지 문자열 수정하기 (★) Ctrl + Shift + H 자동 정렬(★) ★ ALT + Shift + F 또는 Ctrl + A 후 Ctrl + K + F

Spring JPA 쿼리메소드

메소드 이름 안에서 지원되는 키워드 출처:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation Spring에서 JPA가 지원해주는 쿼리 메소드는 아래와 같이 사용한다. interface상에서 이름으로만 정의해주면 메소드가 알아서 쿼리를 생성하여 활용 할 수 있다. * Intellij Ultimate버전에서만 위 기능 자동완성을 지원해준다. KeywordSampleJPQL snippet Distinct findDistinctByLastnameAndFirstname select distinct …​ where x.lastname = ?1 and x.firstname = ?2 And ..

Spring 공통속성 JPA Auditing, EntityListener, MappedSupperclass

MappedSuperclass : 공통된 속성 표현하기 위해서 사용 ex) Id, 생성일자, 수정일자 JPA Auditing : 엔티티 별로 누가, 언제 접근했는지 기록하여 감시체계를 꾸리는것. -> Spring Data JPA에서 이 기능 사용하기 위해서는 @EnableJpaAuditing 사용 @CretatedDate : 생성 시점 자동 주입 @CreatedBy : 생성 주체 @LastModifiedDate : 수정 시점 자동 주입 @LastModifiedBy : 수정 주체 +) @EntityListener : 엔티티 객체를 데이터베이스에 적용하기 전/후에 콜백 요청