2012-03-06 2 views
11

저는 현재 레스토랑의 포털 응용 프로그램을 만들고 있습니다. 사용 된 백엔드 데이터베이스는 Mysql이고 데이터 액세스 로직을 작성하기 위해 Spring JDBC 지원을 사용하고 있습니다.MySQL에서 임시 프로 시저를 만드는 방법은 무엇입니까?

내 DAO 중 일부는 여러 쿼리로 어수선하게 흩어져 있으며 최대 1,000 줄의 코드가 생성됩니다. 나는 내 논리의 일부를 SQL-PSM 프로 시저로 옮김으로써 크기와 복잡성을 줄일 수 있다고 생각한다. (자바에서 데이터 바인딩과 글루 코드는 지옥에서 가증하다.)

그러나 Db에 대한 DDL 권한이 없으므로이 절차를 만들 수 없습니다.

DML 문처럼 직접 실행할 수있는 삭제 가능한 임시 프로 시저를 만드는 방법이 있는지 궁금합니다.

즉, 내 작업을 수행하고 결과를 반환하며 사라지는 프로 시저를 생성하는 프로 시저를 원합니다.

인터넷 검색은 많이 시작되었지만 찾을 수 없습니다. : '(단지 여러분이 우아한 솔루션을 알고 있는지 궁금합니다.)

+1

팀이 ORM을 채택하게하는 것은 말할 것도없이, Db에서 PSM을 사용 가능하게하는 것입니다. :-(필자는 별도의 Spring 설정 파일 등으로 내 쿼리를 외부화하는 것과 같은 다른 방법으로 복잡성을 줄이기로 결정했습니다. 모든 답장을 보내 주셔서 감사합니다. :-) –

+0

텍스트 파일에서 SQL 문 실행 시도 [link] (http://dev.mysql.com/doc/refman/5.0/en/batch-commands.html) –

답변

11

난 당신이 불행하게도이

(가 Oracle 또는 Sybase와 같은 "큰"의 RDBMS에서 지원됩니다) MySQL은 지원되지 않습니다 익명 코드 블록/익명의 절차. 찾고있는 것 같아요

일부 ORM 프레임 워크를 사용하는 것을 고려할 것이지만 Java 개발자가 아니므로 그 중 하나를 추천 할 수는 없습니다.

+0

정확 하 게! 익명 코드 블록. 슬픈 mysql이 그들을 지원하지 않는다고 들었습니다. :-(내 스파게티 DAO에 대해 무엇을 해야할지 궁금합니다. –

+1

사전에 작업을 할 수 있다면 정기적 인 절차를 사용하여 작업 할 수 있습니다. – Salandur

2

제 생각에는 자바에서 "저장 프로 시저"를 만드는 것이 좋습니다. 입력을 받아 쿼리를 수행하고 계산 한 다음 데이터 집합을 반환합니다.

+0

그건 문제가되지 않습니다. Java에서 이미 작업중인 코드가 있습니다. 요점은 Java가 관계형 테이블의 데이터 조작과 관련하여 SQL-PSM과 경쟁 할 수 없다는 점입니다. 코드는 절반 크기로 줄일 수 있습니다. –

+0

@MonikaMichael 여전히 쿼리를 실행하여 DB 측에서 데이터 조작을 할 수 있습니까? MySQL SP 대신 Java 메소드로 쿼리를 래핑하면됩니다. 필자가 사용하는 JDBC에 대해서는 잘 모릅니다. 그러나 현대의 모든 DB 추상화에는 다중 쿼리 지원이 포함되어야합니다. –

관련 문제