전체 글
-
이직 전에 받았던 질문 정리학습/회고록 2022. 10. 11. 15:19
3년동안 뭐했어? 1년차 - 회사 프레임워크 및 회사 도메인 이해 - 주 업무 인 가상계좌 시스템 유지보수 파악 - 사내 서비스 대부분은 JSP, JavsService64로 구성된 배치프로그램으로 구성 - 사내 프레임워크로 개발 - 서비스 유지보수 무엇을 배웠나? - 주석 - 로직상 문제가 없는 코드 2년차 - 사내 서비스의 문제점 개선 1년차에서 하고있던 유지보수들을 개선 - 이중수납 개선 - 메일 자동화 작성 - 모니터링 알람 설정 - 로그 추가 등 기존 유지보수들은 서비스의 문제로 생기는 것들이 대부분이였고, 서비스를 개선하다보니 유지보수의 양이 줄어들었다. - 이직 준비 무엇을 배웠나? - 서비스에 대한 이해 3, 4년차 - 신규 프로젝트 이직 면담 - 사내 서비스 개선에만 몰두 - 개발자 공부에..
-
[JPA] 식별관계, 비식별 관계, 복합키기초/JPA 2022. 10. 11. 13:01
식별관계 부모 테이블의 기본키(FK) + 현재 테이블의 기본키를 합쳐서 기본키로 사용하는 형태 Owner ID (PK) CHILD owner_id(PK, FK) id (PK) 비식별관계 필수적 비식별 관계 : 외래 키 NULL (X) 선택적 비식별 관계 : 외래 키 NULL (O) 복합 키 : 비식별 관계 매핑 Id가 하나일 경우 @Entity public class TEST { @Id private String id; } 키가 2개 이상일 경우 - 아래와 같은 복합키에 관련된 로직을 구현해야 한다. - hasCode와 equals를 구현하여 @IdClass - 관계형 데이터베이스 설계 중심 @EmbeddedId - 객체지향 중심
-
[JPA] 객체간의 매핑기초/JPA 2022. 10. 11. 11:40
상속 DB에는 상속 개념이 없지만 DB모델링 기법중 슈퍼타입 - 서브타입 모델링 기법이 상속 개념과 비슷하다. 1. 조인전략 - 각각의 엔티티를 만든다. - 자식 테이블은 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용하는 전략 - 부모 테이블에서는 자식테이블을 구분하는 컬럼을 생성 Character ID 이름 능력치 Jobs (자식 구분 컬럼) Warrior Mage Rogue Character_ID (PK, FK) 힘(power) Character_ID (PK, FK) 지능(intellect) Character_ID (PK, FK) 행운(luck) @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(na..
-
[JPA] 연관관계기초/JPA 2022. 10. 8. 18:20
방향 DB테이블의 관계는 항상 양방향이다. 객체는 한 쪽만 참조할 수 있고, 양쪽 모두 참조할 수 있다. 양방향 관계 양쪽 객체가 단방향으로 서로를 참조할수 있는 관계다. 연관관계 주인 ( Owner ) 객체가 양방향 관계가 되면 주인을 정해야 한다. 객체 그래프 탐색 관계가 형성된 객체는 참조를 통해 연관관계를 탐색할 수 있다. School school = student1.getSchool(); 객체 관계 매핑 ex) Studen (M) : School (1)의 관계 @Entity public class Student{ @Id private String id; @ManyToOne @JoinColumn(name="SCHOOL_ID") private School school; public void setS..
-
[JPA] JPA 어노테이션기초/JPA 2022. 10. 8. 17:04
@Entity 더보기 JPA가 관리하는 테이블과 매핑할 클래스 - 기본 생성자 필수 ( 파라미터가 없으며 public protected 생성자 ) - final, enum, interface, inner 클래스에 사용할 수 없다. 실제로 구현되며 변경가능한 클래스에만 적용가능 @Table @Id 더보기 기본키 @GenerationType 더보기 - IDENTITY : DB에 위임 - 데이터베이스가 식별자를 구하므로 쓰기 지연이 동작하지 않는다. (DB와 한번통신) - SEQUENCE : DB 시퀀스를 활용한 기본키 - DB의 시퀀스를 사용하므로 DB와 2번통신한다. - allocationSize : sequence 전략 최적화, 미리 지정된 갯수만큼 시퀀스를 등록한다. - TABLE : 키 생성 테이블을..
-
[JPA] 영속성 컨텍스트기초/JPA 2022. 10. 8. 15:45
영속성 컨텍스트 엔티티를 영구히 저장하고 관리하는 공간 1. 영속성 컨텍스트와 식별자 값 (@Id로 테이블의 기본 키와 매핑한 값) 영속성 컨텍스트는 엔티티를 식별자 값으로 구분한다. 따라서 영속 상태는 식별자 값이 반드시 있어야 한다. 식별자 값이 없으면 예외가 발생한다. 2. 영속성 컨텍스트와 데이터베이스 저장 Flush : JPA가 보통 트랜잭션을 커밋하는 순간 영속성 컨텍스트에 새로 저장된 엔티티를 데이터베이스에 반영하는 작업 3. 영속성 컨텍스트가 엔티티를 관리 성능 이점. - 1차 캐시 - 동일성 보장 - 트랜잭션을 지원하는 쓰기 지연 - 변경감지 - 지연로딩 1차 캐시 : 영속성 컨텍스트가 내부에서 엔티를 관리하고 있는 장소 조회 로직 1) 1차캐시에 엔티티가 존재하는 경우 find > 1차..
-
[JAVA] Stream groupingBy기초/JAVA 2022. 9. 12. 23:09
리스트를 그룹화 할 코드가 생겼다. 혹시나 java에서도 SQL처럼 group by를 할 수 있을까 하여 검색하다가 발견했다. 기존 Map을생성하고 반복문을 돌려 put하던 소스를 아래 소스와 같이 stream / groupingBy로 작성할 수 있다. 공식 API 문서 : https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html Collectors (Java Platform SE 8 ) Returns a Collector implementing a "group by" operation on input elements of type T, grouping elements according to a classification fun..
-
[우아한테크PRO]를 마치며학습/프로젝트 2022. 7. 11. 13:19
배운점 좋았던점은 리뷰분들의 피드백을 통해 공부의 방향을 정할 수 있었다. 크게 리펙토링 미션과 인프라 미션이 존재했다. 리펙토링 도메인과 디자인 패턴에 대해 집중적으로 공부할 수 있었다. 이전 회사에서 컨벤션에 대한 공부는 해왔지만, 전체적인 코드의 설계에 대해 관심이 많았다. 잘 짜는 코드가 무엇일까? 고민해왔던 해답을 찾을 수 있는 시간이였다. 특히 리뷰어 분들의 리뷰에서 힌트를 많이 얻을 수 있었다. 인프라 평소 궁금했던 도커와 AWS대해 공부할 수 있었다. AWS는 예전에 배웠던 CISCO 장비의 분할과 비슷해서 공부할 때 CISCO장비와 매칭하면서 공부하니 더 재밌게 할 수 있었다. 또한 도커의 기능을 조금 이해할 수 있었다. ** 같은 로직에 대해 다른 코드를 참고할 수 있었다. 틈틈히 다른..