본문 바로가기

java9

Spring JPA / @MappedSuperclass 안녕하세요. 이번 포스팅에서는 JPA에서 사용하는 @MappedSuperclass 어노테이션에 대해서 작성을 해보려고 합니다. 먼저 JPA에서는 3가지의 상속관계 매핑이 존재하며 @MappedSuperclass 어노테이션은 상속관계 매핑과는 전혀 무관합니다. 상속관계 매핑과는 무관하다고 하면서 JPA에 3가지 상속관계 매핑이 존재한다고 얘기를 했냐면 DB에서의 상속 관계와는 무관하지만 객체 지향 관점에서 중복되는 컬럼을 하나의 클래스로 정의를 하고 해당 클래스를 상속을 받기 때문입니다. JPA의 상속관계에 대해 잘 모르시는 분들은 이 말이 이해가 잘 안가실 수 있습니다. 위에 얘기가 잘 이해가 안가시는 분들은 일단 머리속에서 JPA의 3가지 상속관계 매핑이라는 개념을 지우고 @MappedSuperclas.. 2023. 7. 12.
Spring JPA / 양방향 연관관계 주의사항 안녕하세요. 지난 포스팅에서는 JPA Entity의 연관관계에 대해서 작성을 했었는데요. 포스팅 마지막 부분에서 양방향 연관관계의 주인을 설정하는 방법까지 작성을 했었습니다. 이번 포스팅에서는 양방향 연관관계에서의 주의사항을 이어서 작성을 하도록 하겠습니다. 양방향 연관관계 사용 시 주의 사항 1. 객체 지향적 코드를 생각을 했을 때는 양방향 객체 참조 필드 모두 값을 넣어주는게 좋다. public class TestService { public void entityTest(){ // 엔티티 매니저 객체 생성 EntityManager em = emf.createEntityManager(); // 트랜잭션 시작 em.getTransaction().begin(); Team team = new Team(); .. 2023. 6. 27.
Spring JPA / Entity 연관관계 지난 포스팅에서는 JPA의 Entity에 대해서 작성을 했었는데요. Entity란 JPA에서 관리하는 DB와 매핑이 되는 객체를 뜻하며 객체 클래스 위에 @Entity을 사용해서 JPA에게 '해당 객체는 Entity로 사용을 할 것이다' 라고 명시를 했습니다. 그렇다면 이번 포스팅에서는 'JPA에서는 DB의 연관 관계를 어떻게 사용을 하는 것인가?', '두개의 테이블을 join을 어떻게 객체화 시키지?' 라는 주제로 Entity의 연관 관계에 대해서 알아보도록 하겠습니다. RDB Table의 연관관계 프로젝트에서 사용하는 DB는 Mysql, MariaDB, Oracle 등 RDB (관계형 데이터 베이스)를 사용을 하는데 이러한 RDB에서는 FK (Foreign Key)를 사용해서 두 테이블간의 연관 관계.. 2023. 6. 27.
Spring JPA / JPA 안녕하세요. 예전에 JDBC, JdbcTemplate, Mybatis까지의 포스팅을 했었는데요. 이번에는 최근(?)이라기 보다는 몇년 전부터 떠오르고 있는 JPA에 대해서 작성을 하려고 합니다. 아직 대부분의 회사에서 Mybatis를 사용하는거로 알고있는데 JPA는 우아한 형제들, 쿠팡 등 규모가 있는 회사에서 JPA를 사용을 하고 있고 또 많은 기업들이 JPA로 개발을 하려는 시도를 하고 있다고 생각을 하고 있습니다. 저도 회사에서 JPA를 사용을 하다가 Mysql의 Stored procedure로 전환을 하면서 최근에는 회사 프로젝트에서 JPA를 사용할 일이 많이 없어졌지만 그래도 꾸준히 JPA를 공부를 하면서 다시 프로젝트에 적용 시킬 준비를 하고 있습니다. JPA JPA는 Java Persiste.. 2023. 6. 20.
Spring AOP 지난 포스팅에서 @Async 어노테이션을 사용하여 비동기 멀티 스레드를 구현하는 방식에 대해서 포스팅을 했었다. 해당 기능은 Spring AOP의 기능이라고 작성을 했었는데 이번 포스팅에서는 Spring AOP가 무엇인지, 또 어떻게 사용을 하는지 포스팅을 하고자 한다. AOP란. AOP(Aspect-Oriented Programming)는 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법으로 OOP를 보완하는 수단으로 사용. 프로젝트 전반적으로 여러 메소드들에서 반복되는 코드 또는 로직을 모듈화 하여 재사용 할 수 있게 해주는 기능 가장 흔한 예를 들자면 로깅을 하는 기능이 있다고 했을 때 각 메소드 마다 성능 측정 로깅을 넣는다고 하면 메소드 내부에 반복되는 코드들이 계속 늘어날 것이며 유지보.. 2023. 6. 13.
Object Storage 이미지 출력 안녕하세요. 이번 포스팅에서는 요즘 프로젝트에서 안쓸 수 없는 Object Storage에서 이미지에 접근하는 방법을 포스팅 하려고 합니다. 회사에서 지난 프로젝트의 경우 Cloud 환경의 NAS를 이용하여 각 서버에 마운트 시켜 파일을 관리를 했던 반면 이번 프로젝트는 Object Storage를 이용한 파일 관리를 진행하기로 해서 프로젝트를 진행하면서 발생했던 이슈에 대해서 해결하는 과정을 작성하도록 하겠습니다. 1. 전체 공개 파일과 public url 접근 Object Storage를 사용하면서 개발 초반에는 버킷에 모두 공개 권한으로 파일을 업로드를 하고 클라이언트에게 해당 버킷의 public 도메인을 이용하여 이미지 파일을 보여주는 방식으로 개발을 해왔습니다. ex) https://버킷명.kr.. 2023. 6. 9.