반응형

web

    sequelize 사용시 테이블 이름 변동없이 고정 Alias 사용방법

    sequelize는 마찬가지로 ORM을 사용하다보니 직접적으로 쿼리를 사용하는 것보다 정확하게 알지못하면 역시 개발속도도 늦어지고 문제가 많아지는 단점이 있다. 이번에는 sequelize를 사용하는데 조인할 때 테이블 이름이 갑자기 User에서 Users로 바뀌는 이슈가 발생했다. 이 이슈를 해결하기 위해서 sequelize Document를 검색했고 거기서 freeTableName 옵션을 발견했다.1234567891011121314151617181920212223242526const Bar = sequelize.define('bar', { /* bla */ }, { // don't add the timestamp attributes (updatedAt, createdAt) timestamps: fals..

    sequelize에서 timezone 설정 추가

    sequelize를 통해 datetime 필드에 값을 삽입해봤을 때 계속해서 값이 UTC 시간대로 들어가게 되었다. 그래서 해당 블로그(http://ggamu.com/81)에서 제공하는 방식대로 database 자체에 timezone을 서울로 변경하였다. 하지만 그래도 계속해서 값이 UTC로 들어갔고 그래서 혹시 몰라 삽입하는 코드에 new Date('2018-10-18 11:11:11').toLocalString()를 설정해줬다. 하지만 그래도 역시나 ㅜㅜ 그래서 sequelize 라이브러리 자체에 설정을 하는 부분이 있는지 싶어서 확이해봤는데, 설정 자체에 timezone을 설정하는 부분이 있었다. 그래서 sequelize 객체를 만들때 사용하는 option에 timezone옵션을 부여해줬다.1234..

    node.js oauth2 server 만들기

    스프링 프로젝트에서는 자주 oauth2를 사용했었는데 node.js는 해본적이 없어서 공부할 겸 node-oauth2-server 라이브러리를 사용하여 진행해보고 있다. 확실히 힘든 부분이 있고 설명이 어려워서 외국에서 예로 인터넷에 올려논 부분을 실제로 돌려보면서 수정하여 진행하고 있다. 설명과 소스는 git repository에 계속 수정해서 올릴 예정이다.현재는 Authorization_code와 password 방식만 올려놓았다. implict와 refresh_token 하는 기능도 수정해서 올려야겠다. Git Repository 주소https://github.com/weduls/node-aouth2-server-example

    [공유] spring에서 생성자 의존성 주입

    spring에서 사용하는 의존성 주입에 경우 @Autowired만을 사용하면 나중에 테스트 케이스를 만들때 어려움이 생긴다. 그래서 생성자 주입을 사용하는데 잘 정돈된 사이트가 있어 공유한다. http://multifrontgarden.tistory.com/214

    Promise에서 Unhandled Rejection 설명

    Rejection은 프로미스에서 발생하는 에러를 칭한다. Es6에서는 비동기 동작의 상태 표현으로 "pending", "fulfilled", "rejected" 세가지가 정의 되었다. pending은 비동기 작업중인 것을 나타내고 fulfilled는 비동기 동작이 완료된것을 표현한다. 그리고 rejected는 비동기가 실패한 것을 표현해준다. promise에서 작업이 성공할 경우에는 resolve를 실행하고 실패할 경우에는 reject를 수행한다. 그럼 Promise에서 에러가 발생했을 때는 어떻게 처리하는게 좋을 까? 대부분은 에러가 발생했을 때는 promise chaining을 사용해서 .catch(err => { } );로 잡을 수 있다. 그럼 이런 경우에도 정상적으로 잡힐까? 12new Promi..

    node js에서 stream pipe 사용시 에러 처리 방법

    node js에서 데이터를 stream을 사용하여 처리하고 pipe를 사용해서 계속해서 stream을 가지고 작업을 이어나갈 수 있다. 그런데 pipe를 통해서 작업을 진행하다 보니까 중간에 오류가 발생했을 때 try / catch 로는 정상적으로 처리하지 못하는 경우가 발생했다. 나에 경우에는 에러가 발생했을 때 try / catch에서 잡히지 않아서 프로그램이 Unhandled Promise Rejections를 출력 하며 죽어버렸다. 그 예는 다음과 같이 request를 통해서 받은 이미지를 sharp 라이브러리를 통해서 이미지 크기를 변경하려고 할 때 발생했다.1try { await request('https://image.toast.com/aaaaab/ticketlink/TKL_3/ion_mai..

    스프링 부트에서 사용하는 JPA 기능 정리

    스프링 프레임워크에서 제공하는 JPA는 별도의 구현 클래스 없이 인터페이스만을 사용할 수 있도록 제공한다. 제공되는 인터페이스 JpaRepository는 실행시점에 자동으로 인터페이스 내용을 연결하는 엔티티에 맞게 자동으로 구현해준다. 만약 스프링 JPA 인터페이스에서 제공하지 않는 기능을 사용하고 싶을 때는 메서드명을 특정한 규칙대로 만들어서 사용하면 인터페이스가 알아서 그 이름에 맞는 JPQL을 만들어서 실행해준다. 스프링 JPA 인터페이스는 Mysql같은 RDBMS 뿐만 아니라 Mongodb, Redis와 같은 NoSQL에도 동일한 인터페이스를 사용해서 기능을 사용할 수 있도록 제공해준다. 공통으로 사용할 수 있기에 아주 편리하다. 우선 스프링 부트에 JPA를 사용하기 위해서 Gradle에 라이브러..

    @MappedSuperclass를 이용한 부모 매핑정보 사용하기

    기존에는 부모의 엔티티에 접근해서 정보를 가져와서 사용했다. 하지만 그러면 너무 비용이 크기 때문에 이를 위해서 부모클래스의 매핑정보만 가지고와서 사용할 수 있는 방법이 있다.@MappedSuperClass 어노테이션을 사용하면 부모 엔티티 접근 없이 부모 클래스의 매핑정보를 사용할 수 있다. 예를들어 선생님과 학생을 담당하는 클래스에서 id와 name은 공통 속성이다. 이런 고유 속성을 부여해주는 부모클래스를 만들고 이를 상속받은 Student와 Teacher 클래스를 만들어보자. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647/** * springboottest * * @author wedul *..

    JPA 상속관계 매핑 전략

    객체 지향으로 데이터베이스 중심 매핑을 변경하기 위해서 가장 애매한게 상속이다. 이런 상속관계속에서 테이블로 구현할 때 3가지 방법을 선택할 수 있다. 1) 각각의 테이블로 변환 : 각각을 모두 테이블로 만들고 조회할 때 조인을 사용. 2) 통합 테이블로 변환 : 테이블을 하나만 사용해서 통합 3) 서브타입 테이블로 변환 : 서브 타입마다 하나의 테이블을 만드는 방식. 순서대로 하나씩 정리해보자. ㅁ 각각의 테이블로 변환 (조인전략) - 부모와 각각의 자식 엔티티를 모두 각자의 테이블로 만들고 부모의 기본키와 자식의 외래키를 사용하여 조인하여 사용한다. - 자식 엔티티의 타입을 구별하기 위한 DTYPE 컬럼을 구분컬럼으로 추가하여 사용한다. (없어도 무관) 1234567891011121314@Entity..

    JPA 관계 유형별 엔티티 설정 방법

    JPA에서 관계 유형별로 엔티티를 설정하는 방법을 정리해보자. 1. 다대일 (단방향) -> 다쪽에 @ManyToOne 으로 설정 12345678910111213141516171819202122232425262728@Entity@Table(name = "student")@Data@NoArgsConstructor@AllArgsConstructorpublic class Student { @Id @Column(name = "STUDENT_ID") private String id; @Column(name = "name") private String name; @ManyToOne @JoinColumn(name = "CLASSES_ID") private Classes classes; public void setCla..

반응형