Backend3 [JPA] entity 상속 관계 매핑 (@Inheritance) 실무에서 테이블 설계를 하다 비슷하면서도 미묘하게 다른 데이터를 다뤄야할 경우가 있다.마케팅 컨텐츠 SaaS 프로젝트를 진행하면서 요구사항이 바뀌게 되면서 초기 테이블 설계를 변경하고 상속 구조로 엔티티를 설계한 경험을 정리해보았다.이해를 돕기 위해 서비스에 대해 대략적으로 설명하자면, 여러 컨텐츠를 제공하고 클라이언트가 어드민에서 사용할 컨텐츠를 선택한다. 유저에게 노출되는 영역을 설정하고, 자사 앱에 간편하게 임베딩하여 유저의 참여와 리텐션을 올리는 서비스이다.초기에는 단일 컨텐츠만 제공하다가 요구사항이 변경되면서 여러 타입의 컨텐츠 관리가 용이하도록 테이블 구조를 변경하게 되었다.(사내 프로젝트이니 실제 구현된 내용과 다른 예시를 들었다.) 예를 들어, 초기에는 블로그형 컨텐츠만 제공했다고 해보자... 2025. 10. 23. Spring Boot 3 버전 주요 변경 사항 Spring Boot 3.x.x 버전은 Java 17 버전 이상을 지원한다.Spring Security 버전은 6.x.x을 지원한다.Java EE를 jakarta EE로 대체한다.javax 패키지를 jakarta로 변경해야한다.javax.persistence.* → jakarta.persistence.*javax.validation.* → jakarta.validation.*등등 …참고: https://www.samsungsds.com/kr/insights/java_jakarta.htmlJava의 record 키워드java 14버전에 새로 생긴 키워드 record불변 데이터 객체를 쉽게 생성할 수 있는 클래스lombok 대신에 record 클래스로 만들어서 사용하면 lombok과 비슷한 기능을 사용할 수.. 2024. 7. 16. @Transactional 어노테이션과 AOP @Transactional 어노테이션을 달면, 트랜잭션을 커밋하거나 예외가 발생하면 롤백하는 코드는 어떻게 동작하는가. - 프록시 방식의 AOP가 적용된다. - 트랜잭션을 처리하는 객체와 비즈니스 로직을 분리할 수 있다. - @Transactional 어노테이션이 특정 클래스 안에 존재하면, 프록시 객체를 스프링 컨테이너에 등록한다. 실제 service layer 대신에 프록시를 스프링 빈으로 등록한다. 프록시 객체 내부에서 실제 service 객체를 참조한다. 프록시 객체는 service를 상속해서 만들어지기 때문에 다형성을 사용해서 프록시를 주입할 수 있다. 트랜잭션 어노테이션을 사용했는데 트랜잭션이 적용되지 않는 경우 public class HelloService { public void hell.. 2022. 6. 20. 이전 1 다음