목록알고리즘 (624)
스택큐힙리스트
어노테이션 @Resource (jsr250) 또는 @Autowired (Spring 전용) 중 DI에서 어떤 것을 사용해야 하나요? 과거에는 @Resource(name=blah)와 @Autowired @Qualifier(blah)를 모두 성공적으로 사용해 왔습니다. jsr 사람들에 의해 인가되었으므로 @Resource 태그를 사용하려는 본능이 있습니다. 이에 대해 강한 의견이 있는 사람이 있을까요?답변 1모든 @Autowired (또는 @Inject)와 @Resource는 동등하게 잘 작동합니다. 그러나 개념적 차이 또는 의미의 차이가 있습니다. @Resource는 이름으로 알려진 리소스를 가져와주세요. 이름은 주석이 달린 세터나 필드의 이름에서 추출되거나 name-매개변수에서 가져옵니다. @Inject..
나는 실제로 메소드에 @Transactional을 어노테이션한다면 무슨 일이 일어나는지 알고 싶습니다? 물론, Spring이 그 메소드를 트랜잭션 안에 랩핑한다는 것을 압니다. 하지만, 저는 다음과 같은 의문이 있습니다: Spring이 프록시 클래스를 생성한다는 것을 들어보았습니다. 더 자세히 설명해주실 수 있나요? 그 프록시 클래스에는 실제로 어떤 것이 있는 건가요? 실제 클래스는 어떻게 될까요? 그리고 Spring이 생성한 프록시 클래스를 어떻게 볼 수 있을까요? 또한 Spring 문서에서 다음과 같이 읽었습니다: 참고: 이 메커니즘은 프록시에 기반하기 때문에, 프록시를 통해 들어오는 '외부' 메소드 호출만 가로채게 됩니다. 이는 대상 객체 내에서 발생하는 '자체 호출', 즉 대상 객체의 다른 메소드..
@Transactional을 DAO 클래스와/또는 그들의 메서드에 배치해야 하는지, 또는 DAO 객체를 사용하는 서비스 클래스에 주석을 추가하는 것이 더 나은지에 대해서는 어떤 의미인가요? 아니면 레이어 모두에 주석을 달아야 하는 것이 의미가 있을까요?답변 1나는 트랜잭션이 서비스 레이어에 속한다고 생각합니다. 그것은 작업 단위와 사용 사례를 알고 있기 때문입니다. 여러 개의 DAO가 단일 트랜잭션에서 함께 작동해야 하는 서비스에 주입되는 경우에는 올바른 답입니다.답변 2@Transactional 어노테이션은 스프링 프레임워크에서 제공하는 중요한 어노테이션 중 하나입니다. 이 어노테이션은 데이터베이스 트랜잭션을 관리하는데 사용되며, 일반적으로 서비스 계층의 메서드에 적용됩니다. @Transactional..
다음 시나리오가 있다고 가정 해 봅시다: @Entity public class Person { @Id private Long id; //대리키(surrogate key) @Embedded private Name name; //자연 키(natural key) public int hashCode() { ... //자연 키 Name을 기반으로 함 } public boolean equals(Object obj) { ... //자연 키 Name을 기반으로 함 } } @Embeddable public class Name { private String firstName; private String middleName; private String lastName; //세 개의 필드에 대한 equals/hashCode를..