게으른개발자 썸네일형 리스트형 SSH 터널링을 통한 데이터베이스 백업 방법 배경 Bastion Host 방식 을 통해 구성된 RDS(Amazon Relational Database Service) 의 데이터를 로컬 PC에 덤프를 해야하는 상황 해결법 SSH 터널링 을 통해 RDS의 데이터 로컬PC로 직접 dump 절차 sudo ssh -N -v -L 9001:[replace with host url for the database]:5432 -i key_file.pem [replace with user for the server]@[replace with ec2/server ip/url] //위 명령에서 포트 22(기본값)를 통해 키 파일과 사용자 이름을 사용하여 서버에 연결하고 완성되면 데이터베이스 서버에 연결 //ex) sudo ssh -N -v -L 9001:db-test-.. 더보기 JPA 를 사용하여 JSON 문자열을 객체에 매핑하기 Json 문자열 형태를 저장하는 Column 을 가진 Table 을 JPA를 통해 Entity 를 구현할때 단순히 String 형태의 자료형을 사용할 수 있다. 그러나 로직에서 JsonObject를 통해 파싱해야하는 번거로움이 있다. DB에서 해당 데이터를 읽어올때 부터 특정 객체에 매핑을 해서 가져온다면 로직 구현이 용이해 진다. Member 테이블에 information 이라는 Json형태의 문자열을 저장하는 Column 이 있다고 가정한다. 해당 테이블에는 아래와 같이 information Column에 Json 문자열이 들어가게 사용되고 있다고 가정한다. - 예제 문자열: { "name":"Goslim", "age":31, "city":"Seoul" } information Column에 저장되는.. 더보기 JPA 외래키로 복합키 만들기 JPA 복합 키를 사용하려면 별도의 식별자 클래스를 만들어야 한다. @EmbeddedId 를 적용한 식별자 클래스는 다음 조건을 만족해야 한다. @EmbeddedId 어노테이션을 붙여줘야 한다. Serializable 인터페이스를 구현해야 한다. 기본 생성자가 있어야 한다. 식별자 클래스는 public 이어야 한다. //예제 @Embeddable public class RobotId implements Serializable { private Long armId; private Long bodyId; private Long headId; private Long legId; } 그리고 해당 복합키를 외래키로 구성을 하기를 원한다면 아래와 같이 @MapsId 어노테이션(https://goslim56.tist.. 더보기 @Query Annotation 사용시 null 매개변수 무시하는 방법 JPA로 구성된 레퍼지토리에서 @Query Annotation 을 사용하여 쿼리를 작성할 경우 매개변수로 null 이 넘어 오면 아래와 같이 null 조건이 검색된다. @Repository public interface MemberRepository extends JpaRepository { @Query("SELECT m FROM Member m WHERE m.name = :name") List findByName(String name); // name 으로 null 이 넘어온경우 -> SELECT * FROM Member WHERE name = null } 만약 null 로 매개변수가 올경우 무시하고 싶다면 아래와 같이 구성하면된다. @Repository public interface MemberRep.. 더보기 JPA 외래키를 기본키로 사용하기 JPA 를 사용할때 , 아래의 예제 처럼 외래키를 기본키로 설정하는 방법 -> @MapsId 활용 (매핑한 연관관계를 기본 키에도 매핑하겠다는 뜻) 예제. Member 테이블과 Member 의 id를 외래키이자 기본키로 갖는 Vip 테이블 JPA Entity 구성 //Member 엔티티 @Entity @Getter @Builder @NoArgsConstructor @AllArgsConstructor public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String name; } //Vip 엔티티 @Entity @Getter @Bu.. 더보기 트랜잭션 정의: 안전하게 수행되는것을 보장하는 성질 성질 Atomicity(원자성): All OR Nothing (모두 반영, 전혀 반영 x) Consistency(일관성): 트랜잭션 각각의 독립성 보장 Isonlation(독립성): 트랜잭션 각각의 독립성 보장 Durability(지속성): 트랜잭션 성공시 결과가 영구히 반영 트랜잭션 격리수준: 트랜잭션성질(ACID)도 지키면서 성능 보장을 위해 동시에 DB에 접근할때 그 접근을 어떻게 제어할지에 대한 설정 이름설명이미지비고 read-uncommitted 커밋 전의 트랜잭션의 데이터 변경 내용을 다른 트랜잭션이 읽는 것을 허용 Drity Read 현상 발생 가능성 있음 read-committed 커밋이 완료된 트랜잭션의 변경사항만 다른 트랜잭션에서 조회 가능 N.. 더보기 Fluentd로 Kafka 전송하기 설정파일 및 SSL 적용 docs.fluentd.org/output/kafka kafka docs.fluentd.org 해당글은 위의 문서를 기반을 작성하였습니다. 설정파일 예제 @type kafka2 # list of seed brokers brokers :,: use_event_time true # buffer settings @type file path /var/log/td-agent/buffer/td flush_interval 3s # data type settings @type json # topic settings topic_key topic default_topic messages # producer settings required_acks -1 compression_codec gzip 각종 설정 설명 @type (.. 더보기 Spring Boot 의존관계 주입방법 의존관계 주입은 4가지가 있습니다. - 필드 주입 - 생성자 주입 더보기 이전 1 2 3 4 다음