2013-03-10 3 views
0

최대 절전 모드와 스프링 mvc를 사용하고 주석을 사용하고 있습니다. 자식이 존재하면 상위 항목을 삭제하지 않아야합니다. 이제 코드로 명시 적으로 할 수 있지만 최대 절전 모드를 통해 직접 구성 할 수 있습니까?최대 절전 모드 기본 사항

두 번째로, 나는 봄에 나는 언제나 SessionFactory를 얻고 있습니다. (모든 DAO에서). 내가

sessionFactory.getCurrentSession()를 사용하여 세션을 얻으려면

내가 세션/sessionFactory에이 singeleton 클래스에서 얻을 수 있으며 모든 사용해야 ?? .

내가

sessionFactory.getCurrentSession() 사용하고 (배치)를 저장;

sessionFactory.getCurrentSession(). delete (batch);

자동으로 수행되므로 세션을 닫고 시작하는 데 신경 쓸 필요가 없습니다. 맞습니까?

+3

당신은 폭포를 사용할 수 있습니다 http://stackoverflow.com/questions/5157853/hibernate-how-use-cascade-in-annotation –

답변

2
  1. 이는 데이터베이스에 있어야하는 외래 키 제약 조건에 의해 보장됩니다. 자식이 부모에게 외래 키를 가지고 있고 부모를 삭제하려고하면 데이터베이스에서 삭제를 거부하고 예외가 발생합니다.

  2. 예, 스프링은 세션을 열고 현재 트랜잭션에 연결하고 트랜잭션이 끝나면 자동으로 닫습니다. 세션을 열고 닫을 때는 신경 쓰지 않아야합니다. DAO에 세션 팩토리를 주입하고 필요할 때마다이 팩토리에서 현재 세션을 가져옵니다.

+0

최대 절전 모드에서 이러한 제약 조건을 추가하는 방법에 대한, 내가 그 관리 할 수 ​​있습니다 알고 db 수준의 제약 조건,하지만 ORM 예외가 성능 문제로 인해 무거울 것이라고 생각합니까? 구성을 통해 일반적으로이를 관리하는 방법이 있습니다. 그렇지 않으면 각 엔티티를 삭제하기 전에 종속 항목에 대해 다른 확인을 추가해야합니다. –

+0

Hibernate는 제약 조건을 검사하지 않는다. 데이터베이스가 않습니다. 그것들을 확인할 수있는 유일한 곳입니다. 모델에 제약 조건 주석을 추가하여 Hibernate가 스키마 생성을 사용하는 경우 데이터베이스 스키마에서 제약 사항 주석을 생성하도록 할 수 있습니다. 먼저 정확성에 대해 걱정하고 성능에 대해 걱정해야합니다. –

+0

괜찮아요, 그래서 만약 내가이 모든 제약 조건을 추가, 둘 사이의 구현의 더 좋은 방법은 무엇입니까 : 1) 나는 cnstraints에 대해 걱정하지 않아야 그들은 거기에 DB에 직접 가서 전화를 삭제, 내가 잡을 수 실패합니다 그게 어떤 종속성이 있다는 메시지를 보여줍니다. 2) db level 제약이있을지라도 명시 적으로 코드를 통해 확인하고 이에 따라 오류를 표시합니다 ... 어떤 방법으로 선호합니까? 두 번째가 선호되는 방법이라면, 나는 그 같은 의존적 인 제약 (내 원래의 질문)을 검사하기 위해 지원되는 일반적인 방법이 없다고 믿어야한다. ... –

관련 문제