회사에서 업무 중 미완성된 알림 서비스(스케쥴러) 소스 코드 중에 정말 잘 만든 소스 코드를 보게되었습니다.
관련 코드에 문제가 있어서 코드 수정하는겸 , 코드에 대해서 공부할겸 관련해서 코드 모사를 가볍게 해봤습니다.
Method getterMethod=property.getClass().getMethod("getWorkflowEntity");
Object targetEntity = getterMethod.invoke(property);
@CallerSensitive
public Method getMethod(String name, Class<?>... parameterTypes)
throws NoSuchMethodException, SecurityException {
checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), true);
Method method = getMethod0(name, parameterTypes, true);
if (method == null) {
throw new NoSuchMethodException(getName() + "." + name + argumentTypesToString(parameterTypes));
}
return method;
}
workflow id 를 통해서 => 부모 workflow의 데이터를 가지고 오려고 하는 의도인듯 했습니다.
entity 클래스
@Setter
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "table")
@EntityListeners(AuditingEntityListener.class)
public class PropertyEntity extends BaseEntity {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
long seq_id;
String workflowid;
String workid;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "workflow_seq", referencedColumnName = "seq")
WorkflowEntity workflowEntity;
public static PropertyEntity of(String workflowid) {
return PropertyEntity.builder()
.workflow_definition_key(workflowid)
.build();
}
public static PropertyEntity of(String workflowid, String workid) {
return PropertyEntity.builder()
.workflow_definition_key(workflowid)
.taskId(workid)
.build();
}
public static PropertyEntity ofProperty(String workid, String workflowid) throws JsonProcessingException {
return PropertyEntity.builder()
.taskId(workid)
.workflow_definition_key(workflowid)
.build();
}
}
관련 propertyEntity table이고 WorkFlowEntity db Join을 하여 seq를 통해서 one to one 관계를 가집니다.
이후 데이터를 invoke를 통해서 workflowEntity 테이블의 모든 데이터를 가져올수 있습니다.
개인적으로 봐도 정말 잘 만든 코드여서 비슷하게 다시 구현해서 만들어 봤습니다.
'웹 > Spring' 카테고리의 다른 글
Async 어노테이션 ,@Async 비동기 처리 (0) | 2025.02.19 |
---|---|
@Builder? 와 Bulder 패턴? (0) | 2025.02.12 |
Spring Data JPA - 구성 (0) | 2024.02.25 |
Spring Data JPA- repository 인터페이스의 정의 (0) | 2024.02.18 |
Spring Data JPA - 핵심 개념 (0) | 2024.02.03 |