2011-08-17 12 views
0

제 종류의 알림을받는 데 도움이되는 타사 wsdl을 사용하여 웹 서비스를 만들고 있습니다. 이제 DB에 알림을 저장하고 DataBase와 관련된 몇 가지 다른 작업을 수행해야합니다. 내 persistence.xml을에서 이 개 지속성 단위는 다음과 같은있다 :WEBSERVICES에서 JPA를 사용하는 가장 좋은 방법은 무엇입니까?

public class Service { 

private static Logger logger = Logger.getLogger(Service.class); 

private EntityManagerFactory PU1; 
private EntityManagerFactory PU2; 


public Service(){ 
    System.out.println("in service's constructer"); 
    PU1=Persistence.createEntityManagerFactory("PU1"); 
    PU2=Persistence.createEntityManagerFactory("PU2"); 
} 
public void logSubRequest(String msg){ 
    EntityManager em= PU1.createEntityManager(); 
    try{ 
     em.getTransaction().begin(); 
     Request req=new Request(); 
     req.setMessage(msg); 
     req.setStatus("Y"); 
     em.persist(req); 

     em.getTransaction().commit(); 
    }catch(Exception e){ 
     logger.error("In logSubRequest="+e.getMessage()); 
     e.printStackTrace(); 
    }finally{ 
     if(em.isOpen()){ 
      em.close(); 
     } 
    } 
} 
    // there are several other methods of such kind that either persist entities or executeUpdate 
    } 
을 : 나는 다음과 같은 DB에서 수행하는 데 필요한 모든 기능을 가지고 Service.java라는 클래스를 만들었 아직까지

<persistence-unit name="PU1" transaction-type="JTA"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <jta-data-source>jdbc/vsDS</jta-data-source> 
    <class>com.Response</class> 
    <class>com.Request</class> 
    <exclude-unlisted-classes>true</exclude-unlisted-classes> 
    <properties> 
     <property name="eclipselink.logging.level" value="INFO"/> 
    </properties> 
</persistence-unit> 


<persistence-unit name="PU2" transaction-type="JTA"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <jta-data-source>jdbc/vdDS</jta-data-source> 
    <class>com.LogRequest</class> 
    <exclude-unlisted-classes>true</exclude-unlisted-classes> 
    <properties> 
     <property name="eclipselink.logging.level" value="INFO"/> 
    </properties> 
</persistence-unit> 

내 질문 : JPA를 webservice로 구현하기위한 표준 접근 방식을 사용하고 있거나 일부 다른 기술/방법과 함께 사용해야합니까? 친절하게 제안하고 내가 표준에서 어떤 일을하고 있는지 안내합니다.

답변

0

웹 서비스와 JPA의 결합이 자주 사용됩니다. 다른 지속성 메커니즘을 선택할 이유가 없습니다. 요구 사항이 더 복잡해질 때까지 현재 디자인을 계속 사용하는 것이 좋습니다.

Request 객체에 해당하는 애플리케이션이 더 복잡하고 그 결과 비즈니스 로직이 더 어려워지는 더 큰 애플리케이션에서는 구조를 제어하고 재사용 할 수 있도록 더 많은 객체 계층을 추가하게됩니다.

나는 이런 식으로 생각하는 경향이있다 : 웹 서비스 인터페이스는 나의 비즈니스 로직에 "가능한 한"가능한 길이다. 따라서 RESTful 서비스 또는 JMS 인터페이스가있을 수도 있습니다. 따라서 비즈니스 로직을 EJB에 넣는 경향이 있습니다. 단순한 경우에는 "인터페이스 없음"EJB입니다. 나는 격리되어 테스트 할 수있는 재사용 가능한 비즈니스 로직으로 EJB를 중점적으로 다룹니다. 모든 JPA 작업을 수행합니다. 그런 다음 웹 서비스는 EJB를 사용하여 작업을 수행합니다. EJB는 트랜잭션을 처리하므로 사용자가 가지고있는 트랜잭션 제어 코드를 작성할 필요가 없습니다.

관련 문제